diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d5cdb23a..521c736d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: - node-version: [ 14, 16, 18 ] + node-version: [ 16, 18, 20 ] steps: - name: Checkout repository diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf8d17e..f94a2405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,104 @@ # Change log +## 5.0.0 (2024-02-08) + +> **Note** +> +> The `pug-plugin` since the version `5.0.0` has completely new code based on the [html-bundler-webpack-plugin](https://github.com/webdiscus/html-bundler-webpack-plugin) version `3.5.5`. +> +> The new version have many many new cool features, but contains some `BREAKING CHANGES`. + +## BREAKING CHANGES + +### Pug loader + +The Pug loader should not be defined in the `module.rules` anymore. +The plugin add the pug loader automatically. +Please remove the `PugPlugin.loader` from the config: + +```diff +module.exports = { + mode: 'production', + output: { + path: path.join(__dirname, 'dist/'), + }, + entry: { + index: './src/index.pug', + }, + plugins: [ + new PugPlugin(), + ], + module: { + rules: [ +- { +- test: /\.pug$/, +- loader: PugPlugin.loader, +- }, + ], + }, +}; +``` + +Only if you need to define the [Pug options](https://pugjs.org/api/reference.html#options) then use the new `preprocessorOptions` plugin option: +```diff +module.exports = { + plugins: [ + new PugPlugin({ ++ preprocessorOptions: { ++ basedir: path: path.join(__dirname, 'src/'), ++ } + }), + ], +}; +``` + +### The `modules` option + +The `modules` option is removed. Use the plugin [js](https://github.com/webdiscus/html-bundler-webpack-plugin#option-js) and [css](https://github.com/webdiscus/html-bundler-webpack-plugin#option-css) options. +Instead of the `modules.test` option you can use following: +- [test](https://github.com/webdiscus/html-bundler-webpack-plugin#option-test) option for template extensions +- [js.test](https://github.com/webdiscus/html-bundler-webpack-plugin#option-js) option for script extensions +- [css.test](https://github.com/webdiscus/html-bundler-webpack-plugin#option-css) option for style extensions + +See new [plugin options](https://github.com/webdiscus/html-bundler-webpack-plugin#plugin-options). + +### Inline JS + +JS code can be [inlined](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-js) using the `js.inline: true` option or using the `?ìnline` query: +```diff +//- OLD syntax +- script=require('./main.js?inline') + +//- NEW syntax ++ script(src='./main.js?inline') +``` + +### Inline CSS + +CSS code can be [inlined](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-css) using the `css.inline: true` option or using the `?ìnline` query: +```diff +//- OLD syntax +- style=require('./style.css?inline' rel='stylesheet') + +//- NEW syntax ++ link(href='./style.css?inline' rel='stylesheet') +``` + +### Using require() in srcset attribute + +The require() function in srcset attribute works anymore. +```diff +//- OLD syntax + Note: the required file is relative to the current pug partial file, recommends to use an webpack alias +- img(srcset=`${require('./image1.png')} 400w, ${require('@images/image2.png')} 800w` src=require('./image.png')) + +//- NEW syntax + Note: the file is relative to the main entrypoint pug file, recommends to use an webpack alias ++ img(srcset=`./image1.png 400w, @images/image2.png 800w` src='./image.png') +``` + + + ## 4.9.9 (2023-08-12) - fix: resolve filename containing a URI fragment, e.g.: ```pug diff --git a/README.md b/README.md index a43fbf42..dd38b5a0 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@
- Pug Plugin + Pug Plugin for Webpack -
Pug plugin for Webpack compiles Pug files to HTML, extracts CSS and JS from their sources specified in Pug
+
The plugin renders Pug templates with referenced source asset files into HTML
--- @@ -21,128 +21,63 @@ [![node](https://img.shields.io/npm/dm/pug-plugin)](https://www.npmjs.com/package/pug-plugin) -Pug Plugin enable to use Pug file as entry-point in Webpack. This plugin creates HTML files containing -hashed output JS and CSS filenames whose source files are specified in the Pug template. +## Pug template as entry point -💡 **Highlights**: +The **Pug Plugin** generates static HTML or [template function](https://github.com/webdiscus/html-bundler-webpack-plugin#template-in-js) from **Pug template** containing source files of scripts, styles, images, fonts and other resources, similar to how it works in [Vite](https://vitejs.dev/guide/#index-html-and-project-root). -- Pug file is the entry-point for all scripts and styles. -- Source scripts and styles should be specified directly in Pug. -- All JS and CSS files will be extracted from their sources specified in Pug. -- Pug loader has built-in filters: `:escape` `:code` `:highlight` `:markdown`. +## 💡 Highlights -Specify the Pug files in the Webpack entry: +- An [entry point](https://github.com/webdiscus/html-bundler-webpack-plugin#option-entry) is the Pug template. +- **Auto processing** multiple templates in the [entry path](https://github.com/webdiscus/html-bundler-webpack-plugin#option-entry-path). +- Allows to specify [`script`](#option-js) and [`style`](https://github.com/webdiscus/html-bundler-webpack-plugin#option-css) **source files** directly in **Pug**: + - `link(href="./style.scss" rel="stylesheet")` + - `script(src="./app.tsx" defer="defer")` +- **Resolves** [source files](https://github.com/webdiscus/html-bundler-webpack-plugin#loader-option-sources) in [default attributes](https://github.com/webdiscus/html-bundler-webpack-plugin#loader-option-sources-default) `href` `src` `srcset` etc. using **relative path** or **alias**: + - `link(href="../images/favicon.svg" type="image/svg" rel=icon)` + - `img(src="@images/pic.png" srcset="@images/pic400.png 1x, @images/pic800.png 2x")` +- **Inlines** [JS](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-js) and [CSS](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-css) into HTML. +- **Inlines** [images](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-image) into HTML and CSS. +- **Compile** the Pug template into [template function](https://github.com/webdiscus/html-bundler-webpack-plugin#template-in-js) for usage in JS on the client-side. +- Generates the [preload](https://github.com/webdiscus/html-bundler-webpack-plugin#option-preload) tags for fonts, images, video, scripts, styles, etc. +- Generates the [integrity](https://github.com/webdiscus/html-bundler-webpack-plugin#option-integrity) attribute in the `link` and `script` tags. +- Generates the [favicons](https://github.com/webdiscus/html-bundler-webpack-plugin#favicons-bundler-plugin) of different sizes for various platforms. +- Built-in filters: `:escape` `:code` `:highlight` `:markdown`. +- You can create **own plugin** using the [Plugin Hooks](https://github.com/webdiscus/html-bundler-webpack-plugin#plugin-hooks-and-callbacks). -```js -const PugPlugin = require('pug-plugin'); -module.exports = { - entry: { - // define your Pug files here - index: './src/views/home/index.pug', // output dist/index.html - 'route/to/page': './src/views/page/index.pug', // output dist/route/to/page.html - }, - plugins: [ - new PugPlugin(), // rendering of Pug files defined in Webpack entry - ], - module: { - rules: [ - { - test: /.pug$/, - loader: PugPlugin.loader, // Pug loader - }, - ], - }, -}; -``` - -Add source scripts and styles directly to Pug using `require()`: -```pug -link(href=require('./style.scss') rel='stylesheet') -script(src=require('./main.js') defer='defer') -``` +See the [full list of features](https://github.com/webdiscus/html-bundler-webpack-plugin#features). -The generated HTML contains hashed output CSS and JS filenames: -```html - - -``` -## Contents +> **Note** +> +> ‼️ All [features](https://github.com/webdiscus/html-bundler-webpack-plugin#features) and [options](https://github.com/webdiscus/html-bundler-webpack-plugin?#plugin-options) of the [html-bundler-webpack-plugin](https://github.com/webdiscus/html-bundler-webpack-plugin) available now in the `pug-plugin` too. ---- -1. [Install and Quick start](#install) -2. [Features](#features) -3. [Plugin options](#plugin-options) -4. [Loader options](#loader-options) - - [Method `render`](#method-render) - - [Method `compile`](#method-compile) -5. [Usage examples](#usage-examples) - - [Using JS, SCSS, images and fonts with Pug](#example-pug-js-scss-img-font) - - [Using Pug in JavaScript with `render` method](#example-pug-in-js-render) - - [Using Pug in JavaScript with `compile` method](#example-pug-in-js-compile) - - [Simple multiple pages](https://github.com/webdiscus/pug-plugin/tree/master/examples/simple-multipage) (source code) -6. [Recipes](#recipes) - - [How to inline CSS in HTML](#recipe-inline-css) - - [How to inline JS in HTML](#recipe-inline-js) - - [How to keep the source folder structure in output directory for individual Pug files](#recipe-keep-individual-pug-dirs) - - [How to keep the source folder structure in output directory for all Pug files](#recipe-keep-all-pug-dirs) - - [How to keep the source folder structure in output directory for all resources like fonts](#recipe-keep-all-resource-dirs) - - [How to load JS and CSS for browser from `node_modules` in Pug](#recipe-default-script-style-from-module) - - [How to import style from `node_module` in SCSS](#recipe-import-style-from-module) - - [How to use @import url() in CSS](#recipe-import-url-in-css) - - [How to config `splitChunks`](#recipe-split-chunks) - - [How to split multiple node modules and save under own names](#recipe-split-many-modules) - - [How to use HMR live reload](#recipe-hmr) -7. Demo sites - - [Hello World!](https://webdiscus.github.io/pug-plugin/hello-world/) ([source](https://github.com/webdiscus/pug-plugin/tree/master/examples/hello-world)) - - [Multi-language pages using i18next](https://webdiscus.github.io/pug-plugin/multi-language-i18next/) ([source](https://github.com/webdiscus/pug-plugin/tree/master/examples/multi-language-i18next)) - - [Responsive images](https://webdiscus.github.io/pug-plugin/responsive-image/) ([source](https://github.com/webdiscus/pug-plugin/tree/master/examples/responsive-image)) - - [Usage `:highlight` filter](https://webdiscus.github.io/pug-loader/pug-filters/highlight.html) ([source](https://github.com/webdiscus/pug-loader/tree/master/examples/pug-filters)) - - [Usage `:markdown` filter](https://webdiscus.github.io/pug-loader/pug-filters/markdown.html) ([source](https://github.com/webdiscus/pug-loader/tree/master/examples/pug-filters)) +> **Warning** +> +> Since the version `5.0.0`, the **Pug plugin** is essentially the [html-bundler-webpack-plugin](https://github.com/webdiscus/html-bundler-webpack-plugin) preconfigured for using [Pug templates](https://github.com/webdiscus/html-bundler-webpack-plugin?#using-template-pug). - -## Features +> **Warning** +> +> Compared to the version `4.x`, in the new version `5.x` the source asset file can be specified in a template without the `require()` function. +> For compatibility, the `require()` function is still supported. +> +> ```pug +> //- OLD syntax: the path is relative to the partial file or can be as the webpack alias +> link(href=require("./style.scss") rel="stylesheet") +> //- NEW syntax: the path is relative to the entry file or can be as the webpack alias +> link(href="./style.scss" rel="stylesheet") +> ``` +> +> See the full list of the [BREAKING CHANGES in v5](https://github.com/webdiscus/pug-plugin/blob/master/CHANGELOG.md#500-2024-02-08). -- Pug file is entry-point for all resources (styles, scripts) -- compiles HTML files from Pug files defined in Webpack entry -- extracts CSS from source style loaded in Pug via a `link` tag -- extracts JS from source script loaded in Pug via a `script` tag -- generated HTML contains hashed CSS and JS output filenames -- resolves source files of URLs in CSS and extract resolved resources to output path\ - not need more additional plugin such as [resolve-url-loader](https://github.com/bholloway/resolve-url-loader) -- support the `auto` publicPath -- support the module types `asset/resource` `asset/inline` `asset` -- `inline CSS` in HTML -- `inline JavaScript` in HTML -- `inline image` as `base64 encoded` data-URL for PNG, JPG, etc. in HTML and CSS -- `inline SVG` as SVG tag in HTML -- `inline SVG` as `utf-8` data-URL in CSS - ```scss - background: url('./icons/iphone.svg') // CSS: url("data:image/svg+xml,...") -- enable/disable extraction of comments to `*.LICENSE.txt` file -- support the `postprocess` for modules to handle the extracted content -- support the [responsive-loader](https://github.com/dazuaz/responsive-loader), see [docs](https://webdiscus.github.io/pug-plugin/responsive-image/) and [usage example](https://github.com/webdiscus/pug-plugin/tree/master/examples/responsive-image) +--- -Just one Pug plugin replaces the functionality of many plugins and loaders used with Pug: +### 📋 [Table of Contents](https://github.com/webdiscus/html-bundler-webpack-plugin#contents) -| Package | Features | -|-------------------------------------------------------------------------------------------|------------------------------------------------------------------| -| [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) | extract HTML and save in a file | -| [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) | extract CSS and save in a file | -| [webpack-remove-empty-scripts](https://github.com/webdiscus/webpack-remove-empty-scripts) | remove empty JS files generated by the `mini-css-extract-plugin` | -| [pug-loader](https://github.com/webdiscus/pug-loader) | the Pug loader is already included in the Pug plugin | -| [style-loader](https://github.com/webpack-contrib/style-loader) | inject CSS into the DOM | -| [resolve-url-loader](https://github.com/bholloway/resolve-url-loader) | resolve url in CSS | -| [svg-url-loader](https://github.com/bhovhannes/svg-url-loader) | encode SVG data-URL as utf8 | -| [posthtml-inline-svg](https://github.com/andrey-hohlov/posthtml-inline-svg) | inline SVG icons in HTML | +### 📜 [History of Pug Plugin](#history-pug-plugin) -> **Warning** -> -> Don't use the `pug-plugin` together with `html-webpack-plugin` and `mini-css-extract-plugin`.\ -> The `pug-plugin` is designed to replace these plugins to make Pug easier to use and faster to compile. +--- - ## Install and Quick start Install the `pug-plugin`: @@ -155,1320 +90,148 @@ Install additional packages for styles: npm install css-loader sass sass-loader --save-dev ``` -Change your `webpack.config.js` according to the following minimal configuration: +For example, there is the Pug template with source asset files _./src/views/index.pug_: +```pug +html + head + //- relative path to SCSS source file + link(href="../scss/style.scss" rel="stylesheet") + //- relative path to TypeScript source file + script(src="../app/main.js" defer="defer") + body + h1 Hello World! + //- relative path to image source file + img(src="../assets/images/picture1.png") + //- Webpack alias as path (src/assets/images/) to image source file + img(src="@images/picture2.png") +``` + +The minimal webpack config: ```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); +const PugPlugin = require('PugPlugin'); module.exports = { - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - // define Pug files here - index: './src/views/index.pug', // => dist/index.html - 'pages/about': './src/views/about/index.pug', // => dist/pages/about.html - // ... - }, - plugins: [ new PugPlugin({ - pretty: true, // formatting HTML, useful for development mode + entry: { + // define many page templates here + index: 'src/views/index.pug', // => dist/index.html + }, js: { - // output filename of extracted JS file from source script - filename: 'assets/js/[name].[contenthash:8].js', + // JS output filename + filename: 'js/[name].[contenthash:8].js', }, css: { - // output filename of extracted CSS file from source style - filename: 'assets/css/[name].[contenthash:8].css', + // CSS output filename + filename: 'css/[name].[contenthash:8].css', }, }), ], - module: { rules: [ { - test: /\.pug$/, - loader: PugPlugin.loader, // Pug loader + test: /\.(s?css|sass)$/, + use: ['css-loader', 'sass-loader'], }, { - test: /\.(css|sass|scss)$/, - use: ['css-loader', 'sass-loader'], + test: /\.(ico|png|jp?g|webp|svg)$/, + type: 'asset/resource', + generator: { + filename: 'img/[name].[hash:8][ext][query]', + }, }, ], }, }; ``` -> **Note** +> **Warning** > -> - The key of `entry` object is an output file w/o extension `.html`, relative by output path. -> - The default `output.path` is `path.join(__dirname, 'dist')`. -> - The default `output.publicPath` is `auto`, recommended to use the server-relative `'/'` path. -> - The default JS output filename is `[name].js`, where the `[name]` is the base filename of a source file. -> - The default CSS output filename is `[name].css`, where the `[name]` is the base filename of a source file. +> No additional pug or html loaders required. -Add source styles and scripts using `require()` directly in a Pug file, e.g. `src/views/index.pug`: -```pug -html - head - //- add styles in head - link(href=require('./style.scss') rel='stylesheet') - body - h1 Hello Pug! - - //- add scripts at last position in body - script(src=require('./main.js')) -``` -The generated HTML: +The generated HTML contains URLs of the output filenames: + ```html - + + -

Hello Pug!

- +

Hello World!

+ + ``` -> **Warning** -> -> - Don't define scripts and styles in the Webpack entry. Use `require()` to load source files in Pug. -> - Don't import styles in JavaScript. -> - Don't use `html-webpack-plugin` to render Pug files in HTML. The Pug plugin compiles the files defined in the Webpack entry. -> - Don't use `mini-css-extract-plugin` to extract CSS from styles. The Pug plugin extract CSS from styles required in Pug. - - -## Plugin options - -### `enabled` -Type: `boolean` Default: `true`
-Enable/disable the plugin. - -### `verbose` -Type: `boolean` Default: `false`
-Display the file information at processing. - -### `pretty` -Type: `boolean` Default: `false`
-Pretty formatting the resulting HTML. Use this option for debugging only. For production build should be disabled. -This option only works for Pug files defined in the Webpack entry. - -```js -const PugPlugin = require('pug-plugin'); -module.exports = { - plugins: [ - new PugPlugin({ - pretty: true, // enable formatting of HTML - }), - ], -}; -``` -> **Warning**️ -> -> The `pretty` option of the `pug-loader` is deprecated, therefore use the `pretty` option in `pug-plugin`. - -### `test` -Type: `RegExp` Default: `/\.pug$/`
-The `test` option allows то handel only those resources that match their source filename. -For example, save all extracted `svg` files from `fonts/` to the separate output directory: -```js -const PugPlugin = require('pug-plugin'); -module.exports = { - plugins: [ - new PugPlugin({ - modules: [ - { - test: /fonts\/.+\.svg$/, - outputPath: path.join(__dirname, 'dist/some/other/path/'), - }, - ], - }), - ], -}; -``` - -### `sourcePath` -Type: `string` Default: `webpack.options.context`
-The absolute path to sources. + - -### `outputPath` -Type: `string` Default: `webpack.options.output.path`
-The output directory for processed file. This directory can be relative by `webpack.options.output.path` or absolute. +## History of Pug Plugin - -### `filename` -Type: `string | Function` Default: `webpack.output.filename || '[name].html'`
-The name of output file. -- If type is `string` then following substitutions (see [output.filename](https://webpack.js.org/configuration/output/#template-strings) for chunk-level) are available in template string: - - `[id]` The ID of the chunk. - - `[name]` Only filename without extension or path. - - `[contenthash]` The hash of the content. - - `[contenthash:nn]` The `nn` is the length of hashes (defaults to 20). -- If type is `Function` then following arguments are available in the function: - - `@param {PathData} pathData` has the useful properties (see the [type PathData](https://webpack.js.org/configuration/output/#outputfilename)): - - `pathData.filename` the full path to source file - - `pathData.chunk.name` the name of entry key - - `@param {AssetInfo} assetInfo` Mostly this object is empty. - - `@return {string}` The name or template string of output file. +**Why the Pug Plugin since `v5.0` based on [html-bundler-webpack-plugin][html-bundler-webpack-plugin]?** -### `modules` -Type: `ModuleOptions[]` Default: `[]`
-The array of objects of type `ModuleOptions` to separately handles of different file types.\ -The description of `@property` see by Pug plugin options. -```js -/** - * @typedef {Object} ModuleOptions - * @property {boolean} enabled - * @property {boolean} verbose - * @property {RegExp} test - * @property {string} sourcePath - * @property {string} outputPath - * @property {string | function(PathData, AssetInfo): string} filename - * @property {function(string, ResourceInfo, Compilation): string | null} postprocess - */ -``` +**2021**\ +The history of the creation of the `pug-plugin` began back in October 2021. +Then, at the end of 2021, I created the [@webdiscus/pug-loader][pug-loader] that had all the features of the original [pug-loader](https://github.com/pugjs/pug-loader). -### `css` -Type: `ModuleOptions`\ -Default properties: -```js -{ - test: /\.(css|scss|sass|less|styl)$/, - enabled: true, - verbose: false, - filename: '[name].css', - outputPath: null, -} -``` -The `filename` property see by [filename option](#plugin-option-filename). -The `outputPath` property see by [outputPath option](#plugin-option-outputPath). +**2022**\ +Using, then without an alternative, `html-webpack-plugin` caused me pain and suffering to configure webpack for rendering Pug templates containing various assets. +At the beginning of 2022, I started creating the `pug-plugin` as a complete replacement for the `html-webpack-plugin` and many other _"crutches"_. +During of the year, the `pug-plugin` has gained a lot of useful features and was able to replace the `html-webpack-plugin`, `mini-css-extract-plugin` and many other [plugins and loaders](https://github.com/webdiscus/html-bundler-webpack-plugin?tab=readme-ov-file#list-of-plugins). -The option to extract CSS from a style source file loaded in the Pug tag `link` using `require()`: -```pug -link(href=require('./style.scss') rel='stylesheet') -``` +**2023**\ +Based on the `pug-plugin` code, I decided to create a universal [html-bundler-webpack-plugin][html-bundler-webpack-plugin] that would support all the most popular template engines, such as [Eta](https://eta.js.org), [EJS](https://ejs.co), [Handlebars](https://handlebarsjs.com), [Nunjucks](https://mozilla.github.io/nunjucks/), [Pug](https://pugjs.org/), [TwigJS](https://github.com/twigjs/twig.js), and would be [extendable](https://github.com/webdiscus/html-bundler-webpack-plugin#custom-templating-engine) for other template engines, e.g., [LiquidJS](https://github.com/webdiscus/html-bundler-webpack-plugin#using-the-liquidjs). +During 2023, this plugin has gained even more [useful features](https://github.com/webdiscus/html-bundler-webpack-plugin#features) and absorbed all the functionality of the `pug-plugin` and the `@webdiscus/pug-loader`. -> **Warning** -> -> Don't import source styles in JavaScript! Styles must be loaded directly in Pug. +**2024**\ +At the beginning of 2024, the `pug-plugin` completely switched to the universal code `html-bundler-webpack-plugin`. +Starting from version `5.0`, the `pug-plugin` is the `html-bundler-webpack-plugin` [pre-configured for Pug](https://github.com/webdiscus/html-bundler-webpack-plugin#using-template-pug) templates with the pre-installed `pug` package. -The default CSS output filename is `[name].css`. You can specify your own filename using [webpack filename substitutions](https://webpack.js.org/configuration/output/#outputfilename): +The config of `pug-plugin >= v5.0`: ```js const PugPlugin = require('pug-plugin'); -module.exports = { - plugins: [ - new PugPlugin({ - css: { - filename: 'assets/css/[name].[contenthash:8].css', - }, - }), - ], -}; -``` - -The `[name]` is the base filename of a loaded style. -For example, if source file is `style.scss`, then output filename will be `assets/css/style.1234abcd.css`.\ -If you want to have a different output filename, you can use the `filename` options as the [function](https://webpack.js.org/configuration/output/#outputfilename). - -> **Warning** -> -> Don't use `mini-css-extract-plugin`, `style-loader`, `resolve-url-loader`, they are not required more.\ -> The `pug-plugin` resolves all resource URLs in CSS and extracts CSS much faster than others. - -### `js` -Type: `Object`\ -Default properties: -```js -{ - verbose: false, - filename: '[name].js', - outputPath: null, -} -``` -The `filename` property see by [filename option](#plugin-option-filename). -The `outputPath` property see by [outputPath option](#plugin-option-outputPath). - -> **Note** -> -> - the extract `js` module is always enabled -> - the `test` property not exist because all required scripts are automatically detected - -The option to extract JS from a script source file loaded in the Pug tag `script` using `require()`: -```pug -script(src=require('./main.js')) -``` -The default JS output filename is `[name].js`. You can specify your own filename using [webpack filename substitutions](https://webpack.js.org/configuration/output/#outputfilename): - -```js -const PugPlugin = require('pug-plugin'); module.exports = { plugins: [ new PugPlugin({ - js: { - filename: 'assets/js/[name].[contenthash:8].js', + entry: { + index: 'src/views/home.pug', }, }), ], }; ``` -The `[name]` is the base filename of a loaded script. -For example, if source file is `main.js`, then output filename will be `assets/js/main.1234abcd.js`.\ -If you want to have a different output filename, you can use the `filename` options as the [function](https://webpack.js.org/configuration/output/#outputfilename). - - -### `extractComments` -Type: `boolean` Default: `false`
-Enable / disable extraction of comments to `*.LICENSE.txt` file. - -When using `splitChunks` optimization for node modules containing comments, -Webpack extracts those comments into a separate text file. -By default, the plugin don't create such unwanted text files. -But if you want to extract files like `*.LICENSE.txt`, set this option to `true`: - -```js -const PugPlugin = require('pug-plugin'); -module.exports = { - plugins: [ - new PugPlugin({ - extractComments: true, - }), - ], -}; -``` - -### `postprocess` -Type: `Function` Default: `null`
-The post process for extracted content from compiled entry. -The following parameters are available in the function: - - `@param {string} content` The content of compiled entry. - - `@param {ResourceInfo} info` The info of current asset. - - `@param {webpack Compilation} compilation` The Webpack [compilation object](https://webpack.js.org/api/compilation-object/). - - `@return {string | null}` Return string content to save to output directory.\ - If return `null` then the compiled content of the entry will be ignored, and will be saved original content compiled as JS module. - Returning `null` can be useful for debugging to see the source of the compilation of the Webpack loader. - -```js -/** - * @typedef {Object} ResourceInfo - * @property {boolean} [verbose = false] Whether information should be displayed. - * @property {boolean} isEntry True if is the asset from entry, false if asset is required from pug. - * @property {string | (function(PathData, AssetInfo): string)} filename The filename template or function. - * @property {string} sourceFile The absolute path to source file. - * @property {string} outputPath The absolute path to output directory of asset. - * @property {string} assetFile The output asset file relative by outputPath. - */ -``` - - -## Loader options - -The Pug plugin contain the [pug-loader](https://github.com/webdiscus/pug-loader). -Complete description see under [pug-loader options](https://github.com/webdiscus/pug-loader#options). - -### `method` - -Type: `string` Default: `render`
- -> **Note** -> -> The default method of `pug-loader` is `compile`, but using the `pug-plugin` the default loader method is `render`, -> because the plugin renders Pug to static HTML and this method is fastest. - - -### Method `render` - -The `render` method renders Pug into HTML at compile time and exports the HTML as a string. - -Add to Webpack config the module rule: -```js -const PugPlugin = require('pug-plugin'); -module.exports = { - // ... - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, // default method is 'render' - }, - ], - }, -}; -``` - -See the [example code](#example-pug-in-js-render). - - -### Method `compile` -The `compile` method compiles Pug into a template function and in JavaScript can be called with variables to render into HTML at runtime. +is the same as: -To use the `render` method for rendering Pug from the Webpack entry and the `compile` method in JavaScript, use the `oneOf` Webpack rule: ```js -const PugPlugin = require('pug-plugin'); -module.exports = { - // ... - module: { - rules: [ - { - test: /\.pug$/, - oneOf: [ - // import Pug in JavaScript/TypeScript as template function - { - issuer: /\.(js|ts)$/, // match scripts where Pug is used - loader: PugPlugin.loader, - options: { - method: 'compile', // compile Pug into template function - }, - }, - // render Pug from Webpack entry into static HTML - { - loader: PugPlugin.loader, // default method is 'render' - }, - ], - }, - ], - }, -}; -``` - -See the [example code](#example-pug-in-js-compile). - ---- - - - -## Usage examples - - -### Using JS, SCSS, images and fonts with Pug -The simple example of resolving the asset resources via require() in Pug and via url() in scss. +const HtmlBundlerPlugin = require('html-bundler-webpack-plugin'); -The Webpack config: -```js -const PugPlugin = require('pug-plugin'); module.exports = { - entry: { - // define all Pug files here - index: './src/pages/home/index.pug', - }, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - resolve: { - alias: { - // use alias to avoid relative paths like `./../../images/` - Images: path.join(__dirname, './src/images/'), - Fonts: path.join(__dirname, './src/fonts/') - } - }, - plugins: [ - new PugPlugin({ - js: { - // output filename of extracted JS file from source script - filename: 'assets/js/[name].[contenthash:8].js', - }, - css: { - // output filename of extracted CSS file from source style - filename: 'assets/css/[name].[contenthash:8].css', + new HtmlBundlerPlugin({ + entry: { + index: 'src/views/home.pug', }, + preprocessor: 'pug', // <= enable using Pug templating engine }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - { - test: /\.(css|sass|scss)$/, - use: ['css-loader', 'sass-loader'] - }, - { - test: /\.(png|jpg|jpeg|ico)/, - type: 'asset/resource', - generator: { - // output filename of images - filename: 'assets/img/[name].[hash:8][ext]', - }, - }, - { - test: /\.(woff|woff2|eot|ttf|otf|svg)$/i, - type: 'asset/resource', - generator: { - // output filename of fonts - filename: 'assets/fonts/[name][ext][query]', - }, - }, - ], - }, }; ``` -The Pug template `./src/pages/home/index.pug`: -```pug -html - head - link(rel="icon" type="image/png" href=require('Images/favicon.png')) - link(href=require('./style.scss') rel='stylesheet') - body - .header Here is the header with background image - h1 Hello Pug! - img(src=require('Images/pug-logo.jpg') alt="pug logo") - script(src=require('./main.js')) -``` - -The source script `./src/pages/home/main.js` -```js -console.log('Hello Pug!'); -``` - -The source styles `./src/pages/home/style.scss` -```scss -// Pug plugin can resolve styles in node_modules. -// The package 'material-icons' must be installed in packages.json. -@use 'material-icons'; - -// Resolve the font in the directory using the Webpack alias. -@font-face { - font-family: 'Montserrat'; - src: url('Fonts/Montserrat/Montserrat-Regular.woff2'); // pug-plugin can resolve url - ... -} - -body { - font-family: 'Montserrat', serif; -} - -.header { - background-image: url('Images/header.png'); // pug-plugin can resolve url - ... -} -``` - -> **Note** +> The `pug-plugin`'s heart 🧡 now lives in the `html-bundler-webpack-plugin`'s body 🏋️‍♂️. > -> The Pug plugin can resolve an url (as relative path, with alias, from node_modules) without requiring `source-maps`. Do not need additional loader such as `resolve-url-loader`. - -The generated CSS `dist/assets/css/style.f57966f4.css`: -```css -/* - * All styles of npm package 'material-icons' are included here. - * The imported fonts from `node_modules` will be coped in output directory. - */ -@font-face { - font-family: "Material Icons"; - src: - url(/assets/fonts/material-icons.woff2) format("woff2"), - url(/assets/fonts/material-icons.woff) format("woff"); - ... -} -.material-icons { - font-family: "Material Icons"; - ... -} - -/* - * Fonts from local directory. - */ -@font-face { - font-family: 'Montserrat'; - src: url(/assets/fonts/Montserrat-Regular.woff2); - ... -} - -body { - font-family: 'Montserrat', serif; -} - -.header { - background-image: url(/assets/img/header.4fe56ae8.png); - ... -} -``` - -> **Note** +> `@webdiscus/pug-loader` -> `pug-plugin` -> `html-bundler-webpack-plugin` -> `pug-plugin` > -> All resolved files will be coped to the output directory, so no additional plugin is required, such as `copy-webpack-plugin`. - -The generated HTML `dist/index.html` contains the hashed output filenames of the required assets: -```html - - - - - -
Here is the header with background image
-

Hello Pug!

- pug logo - - - -``` - -All this is done by one Pug plugin, without additional plugins and loaders. To save build time, to keep your Webpack config clear and clean, just use this plugin. - ---- - - - -### Using Pug in JavaScript with `render` method - -_./webpack.config.js_ -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); -module.exports = { - output: { - path: path.join(__dirname, 'dist/'), - }, - entry: { - index: './src/index.pug' // => dist/index.html - }, - plugins: [ - new PugPlugin({ - js: { - filename: '[name].[contenthash:8].js', - }, - }), - ], - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], - }, -}; -``` - -_./src/index.pug_ -```pug -html - head - body - h1 Hello Pug! - #js-component-container - script(src=require('./component.js')) -``` - -_./src/component.pug_ -```pug -.component - h1 Title - p The teaser. -``` - -_./src/component.js_ -```js -import componentHtml from './component.pug'; -const containerElm = document.getElementById('js-component-container'); -containerElm.innerHTML = componentHtml; -``` - -The `componentHtml` contain rendered HTML string: -```html -
-

Title

-

The teaser.

-
-``` - -The generated `./dist/index.html`: -```html - - - -

Hello Pug!

-
- -
-

Title

-

The teaser.

-
-
- - - -``` - ---- - - - -### Using Pug in JavaScript with `compile` method - -_./webpack.config.js_ -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); -module.exports = { - output: { - path: path.join(__dirname, 'dist/'), - }, - entry: { - index: './src/index.pug' // => dist/index.html - }, - plugins: [ - new PugPlugin({ - js: { - filename: '[name].[contenthash:8].js', - }, - }), - ], - module: { - rules: [ - { - test: /\.pug$/, - oneOf: [ - // import Pug in JavaScript/TypeScript as template function - { - issuer: /\.(js|ts)$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - // render Pug from Webpack entry into static HTML - { - loader: PugPlugin.loader, - }, - ], - }, - ], - }, -}; -``` - -_./src/index.pug_ -```pug -html - head - body - h1 Hello Pug! - #js-component-container - script(src=require('./component.js')) -``` - -_./src/component.pug_ with variables -```pug -.component - h1 #{title} - p #{teaser} -``` - -_./src/component.js_ -```js -import componentTmpl from './component.pug'; -const componentHtml = componentTmpl({ - title: 'My component', - teaser: 'My teaser.' -}); -const containerElm = document.getElementById('js-component-container'); -containerElm.innerHTML = componentHtml; -``` - -The `componentTmpl` contain the template function. -The `componentHtml` contain rendered HTML string with passed data at runtime: -```html -
-

My component

-

My teaser.

-
-``` - -The generated `./dist/index.html`: -```html - - - -

Hello Pug!

-
- -
-

My component

-

My teaser.

-
-
- - - -``` - ---- - - - -## Recipes - - - -### Keep the source folder structure in output directory for individual Pug files - -There are two ways to keep/change the output filename for Pug files: - -- use the Webpack entry key as unique path to output file -- use the Webpack entry as object with `filename` property as a Function like `keepPugFolderStructure()` in the example below - -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); - -const sourcePath = path.join(__dirname, 'src'); // => /path/to/src - -const keepPugFolderStructure = (pathData) => { - const sourceFile = pathData.filename; // => /path/to/src/pages/about.pug - const relativeFile = path.relative(sourcePath, sourceFile); // => pages/about.pug - const { dir, name } = path.parse(relativeFile); // dir: 'pages', name: 'about' - return `${dir}/${name}.html`; // => dist/pages/about.html -}; - -module.exports = { - entry: { - index: './src/index.pug', // dist/index.html - 'pages/contact': './src/pages/contact/index.pug', // dist/pages/contact.html - // any unique key, not used to generate the output filename - page001: { - import: './src/pages/about.pug', - filename: keepPugFolderStructure, // => dist/pages/about.html - }, - }, - - plugins: [new PugPlugin()], - - module: { - rules: [ - { - test: /\.(pug)$/, - loader: PugPlugin.loader, - }, - ], - }, -}; -``` - - -### Keep the source folder structure in output directory for all Pug files - -To keep/change the output filename for all Pug files, use the `filename` option of the Pug plugin as a Function like `keepPugFolderStructure()` in the example: - -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); - -const sourcePath = path.join(__dirname, 'src'); // => /path/to/src - -const keepPugFolderStructure = (pathData) => { - const sourceFile = pathData.filename; // => /path/to/src/pages/about.pug - const relativeFile = path.relative(sourcePath, sourceFile); // => pages/about.pug - const { dir, name } = path.parse(relativeFile); // dir: 'pages', name: 'about' - return `${dir}/${name}.html`; // => dist/pages/about.html -}; - -module.exports = { - entry: { - // Note: each key must be unique, not used to generate the output filename. - // The output filename will be generated by source filename via the keepPugFolderStructure(). - page001: './src/index.pug', // => dist/index.html - page002: './src/pages/about.pug', // => dist/pages/about.html - page003: './src/pages/contact/index.pug', // => dist/pages/contact/index.html - }, - - plugins: [ - new PugPlugin({ - // use the function to dynamic generate output filenames for all Pug files defined in the entry - filename: keepPugFolderStructure, - }), - ], - - module: { - rules: [ - { - test: /\.(pug)$/, - loader: PugPlugin.loader, - }, - ], - }, -}; -``` - - -### Keep the source folder structure in output directory for all fonts - -To keep/change the output filename for all asset resources, like fonts, use the `generator.filename` as a Function, for example: - -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); - -const sourceDirname = 'src/'; - -module.exports = { - module: { - rules: [ - { - test: /\.(woff|woff2|svg|eot|ttf|otf)$/, - include: /[\\/]fonts[\\/]/, // match SVG font only from '/fonts/' directory - type: 'asset/resource', - generator: { - filename: (pathData) => { - const { dir } = path.parse(pathData.filename); // the filename is relative path by project - const outputPath = dir.replace(sourceDirname, ''); - return outputPath + '/[name][ext]'; - }, - }, - }, - ], - }, -}; -``` - -The source font files: -``` -src/assets/fonts/OpenSans/open-sans-italic.svg -src/assets/fonts/OpenSans/open-sans-regular.svg -``` - -The font files in output `dist/` directory will have original folder structure: -``` -dist/assets/fonts/OpenSans/open-sans-italic.svg -dist/assets/fonts/OpenSans/open-sans-regular.svg -``` - - -### Using JS and CSS for browser from module in Pug - -Many node modules specify compiled bundles for the browser in fields of its own `package.json`. - -For example, the [material-icons](https://github.com/marella/material-icons/blob/main/package.json) use the field `browser` for compiled CSS file. -The [bootstrap](https://github.com/twbs/bootstrap/blob/main/package.json) use the `main` field for compiled JS and the `style` field for CSS. - -You can specify only module name, Pug plugin automatically resolves files for script and style: - -```pug -link(href=require('bootstrap') rel='stylesheet') // bootstrap/dist/css/bootstrap.css -script(src=require('bootstrap')) // bootstrap/dist/js/bootstrap.js -``` - -If you need to load a specific version of a file, use the path to that file, for example: -```pug -link(href=require('bootstrap/dist/css/bootstrap.rtl.css') rel='stylesheet') -script(src=require('bootstrap/dist/js/bootstrap.bundle.js')) -``` - -> **Warning** -> -> Don't use a relative path to `node_modules`, like `../../../node_modules/bootstrap`. -> The Pug plugin resolves node modules by their name. - - -### Import style from module in SCSS - -Pug plugin can resolve styles in `node_modules`. - -> **Note** -> -> Pug plugin resolves styles much fasted than the [resolve-url-loader](https://github.com/bholloway/resolve-url-loader) -> and don't require to use the source map in `sass-loader`. - - -```scss -@use 'MODULE_NAME/path/to/style'; -``` - -> **Important:** the file extension, e.g. .scss, .css, must be omitted. - -Example how to import source styles of [material-icons](https://github.com/marella/material-icons): - -```scss -// import styles from installed module `material-icons` -@use 'material-icons'; - -// define short class name -.mat-icon { - @extend .material-icons-outlined; -} -``` - -Usage of the icon `home` in Pug: - -```pug -.mat-icon home -``` - -Example how to import the style theme `tomorrow` of the [prismjs](https://github.com/PrismJS/prism) module: - -```scss -// import default prismjs styles from installed module `prismjs` -@use 'prismjs/themes/prism-tomorrow.min'; -``` - -> **Note** -> -> Use the `@use` instead of `@import`, because it is [deprecated](https://github.com/sass/sass/blob/main/accepted/module-system.md#timeline). - - - -### Inline CSS in HTML - -_Webpack config rule for styles_ -```js -{ - test: /\.(css|sass|scss)$/, - use: ['css-loader', 'sass-loader'], -}, -``` - -For example, the _style.scss_ -```scss -$color: crimson; -h1 { - color: $color; -} -``` - -Add the `?inline` query to the source filename which you want to inline: - -```pug -html - head - //- load style as file - link(href=require('./main.scss') rel='stylesheet') - //- inline style - style=require('./style.scss?inline') - body - h1 Hello World! -``` - -The generated HTML contains inline CSS already processed via Webpack: -```html - - - - - - -

Hello Pug!

- - -``` - -> **Note** -> -> To enable source map in inline CSS set the Webpack option `devtool: 'source-map'`. - - - -## How to inline JS in HTML - -For example, the _main.js_: -```js -console.log('Hello JS!'); -``` - -Add the `?inline` query to the source filename which you want to inline: - -```pug -html - head - //- load script as file - script(src=require('./main.js')) - //- inline script - script=require('./main.js?inline') - body - h1 Hello World! -``` - -The generated HTML contains inline JS already compiled via Webpack: - -```html - - - - - - -

Hello World!

- - -``` - - -### How to use @import url() in CSS - -> **Warning** -> -> Don't use `@import in CSS`. It's very `bad practice`. -> - -Bad example:\ -_main.css_ -```css -@import 'path/to/style.css'; -``` - -Pug plugin not support handling of `@import url` in CSS. Imported url will be passed 1:1 into resulting CSS. -**The problem:** defaults, `css-loader` handles @import at-rule, which causes an issue in the Pug plugin. -To avoid this problem add the `import: false` option to `css-loader` to disable handling of @import at-rule in CSS: - -```js -{ - test: /.(css)$/i, - use: [ - { - loader: 'css-loader', - options: { - import: false, // pass @import url as is - }, - }, - ], -}, -``` - -> **Note** -> -> Because imported in CSS files are not handled, these files need to be manually copied to a `dist` folder using the `copy-webpack-plugin`. - - - -### How to config `splitChunks` - -Webpack tries to split every entry file, include template files, which completely breaks the compilation process in the plugin. - -To avoid this issue, you must specify which scripts should be split, using `optimization.splitChunks.cacheGroups`: - -```js -module.exports = { - optimization: { - splitChunks: { - cacheGroups: { - scripts: { - test: /\.(js|ts)$/, - chunks: 'all', - }, - }, - }, - }, -}; -``` - -> **Note** -> -> In the `test` option must be specified all extensions of scripts which should be split. - -See details by [splitChunks.cacheGroups](https://webpack.js.org/plugins/split-chunks-plugin/#splitchunkscachegroups). - -For example, in a template are used the scripts and styles from `node_modules`: -```pug -html - head - link(href=require('bootstrap/dist/css/bootstrap.min.css') rel='stylesheet') - script(src=require('bootstrap/dist/js/bootstrap.min.js') defer) - body - h1 Hello Pug! - script(src=require('./main.js')) -``` - -In this use case the `optimization.cacheGroups.{cacheGroup}.test` option must match exactly only JS files from `node_modules`: -```js -module.exports = { - optimization: { - runtimeChunk: 'single', - splitChunks: { - cacheGroups: { - vendor: { - test: /[\\/]node_modules[\\/].+\.(js|ts)$/, // use exactly this Regexp - name: 'vendor', - chunks: 'all', - }, - }, - }, - }, -}; -``` - -> **Warning** -> -> Splitting CSS to many chunk is principal impossible. Splitting works only for JS files. -> If you use vendor styles in your style file, e.g.: -> -> _style.scss_ -> ```scss -> @use "bootstrap/scss/bootstrap"; -> body { -> color: bootstrap.$primary; -> } -> ``` -> -> Then vendor styles will not be saved to a separate file, because `sass-loader` generates one CSS bundle code. -> Therefore vendor styles should be loaded in a template separately. - -> **Warning** -> -> If you will to use the `test` as `/[\\/]node_modules[\\/]`, without extension specification, -> then Webpack concatenates JS code together with CSS in one file, -> because Webpack can't differentiate CSS module from JS module, therefore you MUST match only JS files. -> -> If you want save module styles separate from your styles, then load them in a template separately: -> ```Pug -> html -> head -> //- require module styles separately: -> link(href=require('bootstrap/dist/css/bootstrap.min.css') rel='stylesheet') -> //- require your styles separately: -> link(href=require('./style.scss') rel='stylesheet') -> body -> h1 Hello Pug! -> script(src=require('./main.js')) -> ``` - - -### How to split multiple node modules and save under own names - -If you use many node modules and want save each module to separate file then use `optimization.cacheGroups.{cacheGroup}.name` as function. - -For example, many node modules are imported in the `script.js`: -```js -import { Button } from 'bootstrap'; -import _, { map } from 'underscore'; -// ... -``` - -Then, use the `optimization.splitChunks.cacheGroups.{cacheGroup}.name` as following function: -```js -const path = require('path'); -const PugPlugin = require('pug-plugin'); - -module.exports = { - output: { - path: path.join(__dirname, 'dist/'), - }, - plugins: [ - new PugPlugin({ - js: { - filename: 'js/[name].[contenthash:8].js', - }, - }), - ], - optimization: { - runtimeChunk: 'single', - splitChunks: { - chunks: 'all', - minSize: 10000, // extract modules bigger than 10KB, defaults is 30KB - cacheGroups: { - vendor: { - test: /[\\/]node_modules[\\/].+\.(js|ts)$/, // split JS only, ignore CSS modules - // save chunk under a name - name(module, chunks, groupName) { - const moduleName = module.resourceResolveData.descriptionFileData.name.replace('@', ''); - return `${groupName}.${moduleName}`; - }, - }, - }, - }, - }, -}; -``` - -The split files will be saved like this: -``` -dist/js/npm.popperjs/core.f96a1152.js <- the `popperjs/core` used in bootstrap will be extracted too -dist/js/npm.bootstrap.f69a4e44.js -dist/js/npm.underscore.4e44f69a.js -dist/js/runtime.9cd0e0f9.js <- common runtime code -dist/js/script.3010da09.js -``` - - - -### HMR live reload - -To enable live reload by changes any file add in the Webpack config the `devServer` option: -```js -module.exports = { - // enable HMR with live reload - devServer: { - static: { - directory: path.join(__dirname, 'dist'), - }, - watchFiles: { - paths: ['src/**/*.*'], - options: { - usePolling: true, - }, - }, - }, -}; -``` - -> **Note** -> -> Live reload works only if in Pug used a JS file. -> If your Pug template has not a JS, then create one empty JS file, e.g. `hmr.js` and add it in Pug for `development` mode only: -> ```js -> if isDev -> script(src=require('./hmr.js')) -> ``` -> -> Where `isDev` is the passed variable from Webpack config. -> -To pass global variables into all Pug files, add a variable in the `data` option of `PugPlugin.loader`: -```js -const isDev = process.env.NODE_ENV === 'development'; - -module.exports = { - mode: isDev ? 'development' : 'production', - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - data: { - isDev, // pass global variable into all Pug files - } - }, - }, - ], - }, -}; -``` - ---- - -## Testing - -`npm run test` will run the unit and integration tests.\ -`npm run test:coverage` will run the tests with coverage. ## Also See -- more examples of usages see in [test cases](https://github.com/webdiscus/pug-plugin/tree/master/test/cases) - [ansis][ansis] - The Node.js library for ANSI color styling of text in terminal -- [pug-loader][pug-loader] see here configuration options for `PugPlugin.loader` -- [pug-loader `:highlight` filter][pug-filter-highlight] highlights code syntax -- [pug-loader `:markdown` filter][pug-filter-markdown] transform markdown to HTML and highlights code syntax +- [pug-loader][pug-loader] - The Pug loader for webpack - [html-bundler-webpack-plugin][html-bundler-webpack-plugin] - The plugin handles HTML template as entry point, extracts CSS, JS, images from their sources loaded directly in HTML ## License diff --git a/examples/hello-world/package.json b/examples/hello-world/package.json index db10f1e0..7a47c901 100644 --- a/examples/hello-world/package.json +++ b/examples/hello-world/package.json @@ -9,14 +9,14 @@ "preview": "npm run build && http-server dist -og" }, "devDependencies": { - "css-loader": "^6.8.1", + "css-loader": "^6.10.0", "http-server": "^14.1.1", "prismjs": "^1.29.0", "pug-plugin": "^4.9.9", - "sass": "^1.66.1", - "sass-loader": "^13.3.2", - "webpack": "^5.88.2", + "sass": "^1.71.1", + "sass-loader": "^14.1.1", + "webpack": "^5.90.3", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" + "webpack-dev-server": "^5.0.2" } } diff --git a/examples/multi-language-i18next/package.json b/examples/multi-language-i18next/package.json index 8f10f949..329a725f 100644 --- a/examples/multi-language-i18next/package.json +++ b/examples/multi-language-i18next/package.json @@ -9,15 +9,15 @@ "preview": "npm run build && http-server dist -og" }, "devDependencies": { - "css-loader": "^6.7.1", + "css-loader": "^6.10.0", "http-server": "^14.1.1", "i18next": "^21.10.0", "prismjs": "^1.29.0", "pug-plugin": "^4.9.9", - "sass": "^1.55.0", - "sass-loader": "^13.1.0", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.11.1" + "sass": "^1.71.1", + "sass-loader": "^14.1.1", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.2" } } diff --git a/examples/responsive-image/package.json b/examples/responsive-image/package.json index f5a016c7..3060a948 100644 --- a/examples/responsive-image/package.json +++ b/examples/responsive-image/package.json @@ -10,16 +10,16 @@ "docs": "webpack --mode=production --env type=docs --progress" }, "devDependencies": { - "css-loader": "^6.7.1", + "css-loader": "^6.10.0", "http-server": "^14.1.1", - "prismjs": "^1.28.0", + "prismjs": "^1.29.0", "pug-plugin": "^4.9.9", - "responsive-loader": "^3.0.4", - "sass": "^1.54.1", - "sass-loader": "^13.0.2", - "sharp": "^0.30.7", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.9.3" + "responsive-loader": "^3.1.2", + "sass": "^1.71.1", + "sass-loader": "^14.1.1", + "sharp": "^0.33.2", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.2" } } diff --git a/examples/simple-multipage/package.json b/examples/simple-multipage/package.json index 670a9915..e538a6c8 100644 --- a/examples/simple-multipage/package.json +++ b/examples/simple-multipage/package.json @@ -8,14 +8,14 @@ "preview": "npm run build && http-server dist -og" }, "devDependencies": { - "css-loader": "^6.7.3", + "css-loader": "^6.10.0", "http-server": "^14.1.1", "prismjs": "^1.29.0", "pug-plugin": "^4.9.9", - "sass": "^1.58.3", - "sass-loader": "^13.2.0", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1", - "webpack-dev-server": "^4.11.1" + "sass": "^1.71.1", + "sass-loader": "^14.1.1", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.2" } } diff --git a/package-lock.json b/package-lock.json index 677e61f2..83d738b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,54 +1,172 @@ { "name": "pug-plugin", - "version": "4.9.9", + "version": "5.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pug-plugin", - "version": "4.9.9", + "version": "5.0.0", "license": "ISC", "dependencies": { - "@webdiscus/pug-loader": "2.10.5", - "ansis": "1.5.5", + "ansis": "2.0.3", + "html-bundler-webpack-plugin": "^3.6.1", "js-beautify": "^1.14.11", - "json5": "^2.2.3" + "pug": "3.0.2" }, "devDependencies": { - "@babel/core": "7.23.6", - "@babel/preset-env": "7.23.6", + "@babel/core": "7.24.0", + "@babel/preset-env": "7.24.0", "@test-fixtures/js": "0.0.2", "@test-fixtures/lorem": "0.0.2", "@test-fixtures/scss": "0.0.7", - "@types/jest": "^29.5.4", - "css-loader": "^6.8.1", - "cssnano": "^6.0.2", - "html-loader": "^4.2.0", + "@test/pug-plugin": "file:./", + "@types/jest": "^29.5.12", + "css-loader": "^6.10.0", + "cssnano": "^6.1.0", "jest": "^29.7.0", - "mini-css-extract-plugin": "^2.7.6", + "mini-css-extract-plugin": "^2.8.1", "normalize.css": "^8.0.1", - "postcss-loader": "^7.3.3", - "prettier": "^3.1.1", + "postcss-loader": "^8.1.1", + "prettier": "^3.2.5", "responsive-loader": "^3.1.2", - "sass": "1.66.1", - "sass-loader": "^13.3.2", + "sass": "1.71.1", + "sass-loader": "^14.1.1", "sharp": "0.32.6", "svgo-loader": "^4.0.0", "tsconfig-paths-webpack-plugin": "^4.1.0", - "webpack": "^5.89.0", + "webpack": "5.90.3", "webpack-cli": "5.1.4", - "webpack-dev-server": "^4.15.1", + "webpack-dev-server": "^5.0.2", "webpack-merge": "^5.10.0" }, "engines": { - "node": ">=14.18.0" + "node": ">=16.20.0" + }, + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" + }, + "peerDependencies": { + "webpack": ">=5.32.0" + } + }, + "../html-bundler-webpack-plugin": { + "version": "3.5.3", + "extraneous": true, + "license": "ISC", + "dependencies": { + "@types/html-minifier-terser": "^7.0.2", + "ansis": "2.0.3", + "enhanced-resolve": ">=5.7.0", + "eta": "^3.1.1", + "html-minifier-terser": "^7.2.0" + }, + "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.15.2", + "@test-fixtures/dius": "file:./test/fixtures/node_modules/dius/", + "@test-fixtures/js": "0.0.2", + "@test-fixtures/lorem": "file:./test/fixtures/node_modules/lorem/", + "@test-fixtures/scss": "0.0.7", + "@test/html-bundler-webpack-plugin": "file:./", + "@test/import-css": "file:./test/fixtures/node_modules/import-css/", + "@types/jest": "^29.5.11", + "copy-webpack-plugin": "9.1.0", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.0.5", + "ejs": "^3.1.9", + "favicons": "7.1.4", + "handlebars": "^4.7.8", + "handlebars-layouts": "^3.1.4", + "jest": "^29.7.0", + "liquidjs": "^10.10.0", + "markdown-it": "^14.0.0", + "mustache": "^4.2.0", + "normalize.css": "^8.0.1", + "nunjucks": "^3.2.4", + "parse5": "^7.1.2", + "postcss-loader": "^8.1.0", + "prettier": "^3.2.5", + "prismjs": "^1.29.0", + "pug": "^3.0.2", + "react": "18.2.0", + "react-dom": "18.2.0", + "responsive-loader": "^3.1.2", + "rtlcss": "^4.1.1", + "sass": "1.67.0", + "sass-loader": "13.3.3", + "sharp": "^0.32.6", + "svgo-loader": "^4.0.0", + "ts-loader": "9.5.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "twig": "^1.17.1", + "typescript": "5.3.3", + "vue": "3.3.13", + "vue-loader": "^17.4.0", + "webpack": "^5.89.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "^5.0.2" + }, + "engines": { + "node": ">=14.21.0" }, "funding": { "type": "patreon", "url": "https://patreon.com/biodiscus" }, "peerDependencies": { + "ejs": ">=3.1.9", + "favicons": ">=7.1.4", + "handlebars": ">=4.7.7", + "liquidjs": ">=10.7.0", + "markdown-it": ">=13.0.1", + "mustache": ">=4.2.0", + "nunjucks": ">=3.2.3", + "parse5": ">=7.1.2", + "prismjs": ">=1.29.0", + "pug": ">=3.0.2", + "twig": ">=1.17.1", "webpack": ">=5.32.0" + }, + "peerDependenciesMeta": { + "ejs": { + "optional": true + }, + "favicons": { + "optional": true + }, + "handlebars": { + "optional": true + }, + "liquidjs": { + "optional": true + }, + "markdown-it": { + "optional": true + }, + "mustache": { + "optional": true + }, + "nunjucks": { + "optional": true + }, + "parse5": { + "optional": true + }, + "prismjs": { + "optional": true + }, + "pug": { + "optional": true + }, + "twig": { + "optional": true + } } }, "node_modules/@ampproject/remapping": { @@ -87,9 +205,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -97,11 +215,11 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -212,9 +330,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", - "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.0.tgz", + "integrity": "sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -317,9 +435,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -435,14 +553,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -463,9 +581,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -506,9 +624,9 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -826,9 +944,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -924,16 +1042,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -1185,9 +1302,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", @@ -1282,14 +1399,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.23.3" }, @@ -1584,18 +1701,18 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", - "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1616,13 +1733,13 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-classes": "^7.23.8", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", @@ -1638,13 +1755,13 @@ "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", "@babel/plugin-transform-object-super": "^7.23.3", "@babel/plugin-transform-optional-catch-binding": "^7.23.4", "@babel/plugin-transform-optional-chaining": "^7.23.4", @@ -1664,9 +1781,9 @@ "@babel/plugin-transform-unicode-regex": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1710,23 +1827,23 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -1735,8 +1852,8 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1745,9 +1862,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -2558,9 +2675,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2631,6 +2748,10 @@ "integrity": "sha512-r+isV0rD0vwbsbMaJGTQ5w8T/4fx63zzO58AoVeOiNAsP0LXmuXTbjAO+32+40VONwSD1HhM4SI0l9Yg2rL0fA==", "dev": true }, + "node_modules/@test/pug-plugin": { + "resolved": "", + "link": true + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -2692,9 +2813,9 @@ } }, "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -2710,9 +2831,9 @@ } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", - "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -2738,14 +2859,14 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -2775,6 +2896,11 @@ "@types/node": "*" } }, + "node_modules/@types/html-minifier-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-7.0.2.tgz", + "integrity": "sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==" + }, "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -2815,9 +2941,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", - "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2840,6 +2966,15 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/qs": { "version": "6.9.8", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", @@ -2853,9 +2988,9 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "node_modules/@types/send": { @@ -2869,18 +3004,18 @@ } }, "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -2889,9 +3024,9 @@ } }, "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "dependencies": { "@types/node": "*" @@ -2904,9 +3039,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, "dependencies": { "@types/node": "*" @@ -3058,39 +3193,6 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@webdiscus/pug-loader": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@webdiscus/pug-loader/-/pug-loader-2.10.5.tgz", - "integrity": "sha512-LTwHHlL7mwAypSGX0o1Z75FLSV5pOzhJIdBlBC9l484qngFFnfx17W7C8CzZoNCN6lJuP3hbdFYAYRw8y0cJsw==", - "dependencies": { - "ansis": "1.5.5", - "parse5": "^7.1.2", - "pug": "^3.0.2", - "webpack-merge": "^5.9.0" - }, - "engines": { - "node": ">=14.15" - }, - "funding": { - "type": "patreon", - "url": "https://patreon.com/biodiscus" - }, - "peerDependencies": { - "enhanced-resolve": ">=5.7.0", - "markdown-it": "^13.0.1", - "prismjs": "^1.29.0", - "pug": ">=3.0.2", - "webpack": ">=5.32.0" - }, - "peerDependenciesMeta": { - "markdown-it": { - "optional": true - }, - "prismjs": { - "optional": true - } - } - }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", @@ -3270,9 +3372,9 @@ } }, "node_modules/ansis": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-1.5.5.tgz", - "integrity": "sha512-DNctovTacxs/NfZpGo6bIGWgLd2oZsDO7RJbiYX6Ttj40LPZM1XKv9WtesH13ieOEm1GajjD+Vik2n9YnSTPdA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-2.0.3.tgz", + "integrity": "sha512-tcSGX0mhuDFHsgRrT56xnZ9v2X+TOeKhJ75YopI5OBgyT7tGaG5m6BmeC+6KHjiucfBvUHehQMecHbULIAkFPA==", "engines": { "node": ">=12.13" }, @@ -3303,12 +3405,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -3320,9 +3416,9 @@ "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "node_modules/babel-jest": { @@ -3464,13 +3560,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", - "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.9.tgz", + "integrity": "sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.4", + "@babel/helper-define-polyfill-provider": "^0.6.0", "semver": "^6.3.1" }, "peerDependencies": { @@ -3478,25 +3574,57 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", - "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", - "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4" + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3557,6 +3685,43 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/bare-events": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", + "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.1.tgz", + "integrity": "sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", + "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3652,13 +3817,11 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -3692,9 +3855,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -3710,8 +3873,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -3760,6 +3923,21 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -3794,7 +3972,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -3822,9 +3999,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", + "version": "1.0.30001596", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", + "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==", "funding": [ { "type": "opencollective", @@ -3872,16 +4049,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3894,6 +4065,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -3937,7 +4111,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, "dependencies": { "source-map": "~0.6.0" }, @@ -3963,6 +4136,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -4197,12 +4371,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", - "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "dependencies": { - "browserslist": "^4.22.2" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -4216,15 +4390,15 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", - "integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "engines": { "node": ">=14" @@ -4376,19 +4550,19 @@ } }, "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -4398,7 +4572,16 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-loader/node_modules/lru-cache": { @@ -4488,13 +4671,13 @@ } }, "node_modules/cssnano": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.2.tgz", - "integrity": "sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.0.tgz", + "integrity": "sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==", "dev": true, "dependencies": { - "cssnano-preset-default": "^6.0.2", - "lilconfig": "^3.0.0" + "cssnano-preset-default": "^6.1.0", + "lilconfig": "^3.1.1" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -4508,40 +4691,41 @@ } }, "node_modules/cssnano-preset-default": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.2.tgz", - "integrity": "sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.0.tgz", + "integrity": "sha512-4DUXZoDj+PI3fRl3MqMjl9DwLGjcsFP4qt+92nLUcN1RGfw2TY+GwNoG2B38Usu1BrcTs8j9pxNfSusmvtSjfg==", "dev": true, "dependencies": { - "css-declaration-sorter": "^7.0.0", - "cssnano-utils": "^4.0.1", + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.1.1", + "cssnano-utils": "^4.0.2", "postcss-calc": "^9.0.1", - "postcss-colormin": "^6.0.1", - "postcss-convert-values": "^6.0.1", - "postcss-discard-comments": "^6.0.1", - "postcss-discard-duplicates": "^6.0.1", - "postcss-discard-empty": "^6.0.1", - "postcss-discard-overridden": "^6.0.1", - "postcss-merge-longhand": "^6.0.1", - "postcss-merge-rules": "^6.0.2", - "postcss-minify-font-values": "^6.0.1", - "postcss-minify-gradients": "^6.0.1", - "postcss-minify-params": "^6.0.1", - "postcss-minify-selectors": "^6.0.1", - "postcss-normalize-charset": "^6.0.1", - "postcss-normalize-display-values": "^6.0.1", - "postcss-normalize-positions": "^6.0.1", - "postcss-normalize-repeat-style": "^6.0.1", - "postcss-normalize-string": "^6.0.1", - "postcss-normalize-timing-functions": "^6.0.1", - "postcss-normalize-unicode": "^6.0.1", - "postcss-normalize-url": "^6.0.1", - "postcss-normalize-whitespace": "^6.0.1", - "postcss-ordered-values": "^6.0.1", - "postcss-reduce-initial": "^6.0.1", - "postcss-reduce-transforms": "^6.0.1", - "postcss-svgo": "^6.0.1", - "postcss-unique-selectors": "^6.0.1" + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.4", + "postcss-merge-rules": "^6.1.0", + "postcss-minify-font-values": "^6.0.3", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.3", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.3" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -4551,9 +4735,9 @@ } }, "node_modules/cssnano-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.1.tgz", - "integrity": "sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -4659,6 +4843,34 @@ "node": ">=0.10.0" } }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -4672,12 +4884,15 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/depd": { @@ -4732,12 +4947,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -4814,7 +5023,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -4901,9 +5109,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.615", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", - "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==" + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==" }, "node_modules/emittery": { "version": "0.13.1", @@ -4963,6 +5171,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/envinfo": { "version": "7.10.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", @@ -5073,11 +5290,22 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, + "node_modules/eta": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-3.2.0.tgz", + "integrity": "sha512-Qzc3it7nLn49dbOb9+oHV9rwtt9qN8oShRztqkZ3gXPqQflF0VLin5qhWk0g/2ioibBwT4DU6OIMVft7tg/rVg==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -5356,6 +5584,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, "bin": { "flat": "cli.js" } @@ -5430,12 +5659,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5675,6 +5898,74 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/html-bundler-webpack-plugin": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/html-bundler-webpack-plugin/-/html-bundler-webpack-plugin-3.6.1.tgz", + "integrity": "sha512-oWFdqAqd8zXa3IPBOZ22/0kqrsnFPvVreea4izH8BIdmQpOoolRYLNvnvCmVUTdkb0XgX8K9Fu+uT0HYkllBZg==", + "dependencies": { + "@types/html-minifier-terser": "^7.0.2", + "ansis": "2.0.3", + "enhanced-resolve": ">=5.7.0", + "eta": "^3.1.1", + "html-minifier-terser": "^7.2.0" + }, + "engines": { + "node": ">=14.21.0" + }, + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" + }, + "peerDependencies": { + "ejs": ">=3.1.9", + "favicons": ">=7.1.4", + "handlebars": ">=4.7.7", + "liquidjs": ">=10.7.0", + "markdown-it": ">=13.0.1", + "mustache": ">=4.2.0", + "nunjucks": ">=3.2.3", + "parse5": ">=7.1.2", + "prismjs": ">=1.29.0", + "pug": ">=3.0.2", + "twig": ">=1.17.1", + "webpack": ">=5.32.0" + }, + "peerDependenciesMeta": { + "ejs": { + "optional": true + }, + "favicons": { + "optional": true + }, + "handlebars": { + "optional": true + }, + "liquidjs": { + "optional": true + }, + "markdown-it": { + "optional": true + }, + "mustache": { + "optional": true + }, + "nunjucks": { + "optional": true + }, + "parse5": { + "optional": true + }, + "prismjs": { + "optional": true + }, + "pug": { + "optional": true + }, + "twig": { + "optional": true + } + } + }, "node_modules/html-entities": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", @@ -5697,31 +5988,10 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/html-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-4.2.0.tgz", - "integrity": "sha512-OxCHD3yt+qwqng2vvcaPApCEvbx+nXWu+v69TYHx1FO8bffHn/JjHtE3TTQZmHjwvnJe4xxzuecetDVBrQR1Zg==", - "dev": true, - "dependencies": { - "html-minifier-terser": "^7.0.0", - "parse5": "^7.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", - "dev": true, "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -5985,15 +6255,15 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6046,6 +6316,36 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", + "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6071,6 +6371,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "dependencies": { "isobject": "^3.0.1" }, @@ -6111,15 +6412,18 @@ } }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isarray": { @@ -6137,6 +6441,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7856,9 +8161,9 @@ } }, "node_modules/jiti": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz", - "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -7977,6 +8282,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -7997,6 +8303,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8011,13 +8318,13 @@ } }, "node_modules/launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, "dependencies": { "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "shell-quote": "^1.8.1" } }, "node_modules/leven": { @@ -8030,12 +8337,15 @@ } }, "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", "dev": true, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { @@ -8095,7 +8405,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -8182,15 +8491,19 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", + "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.4" + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/merge-descriptors": { @@ -8279,12 +8592,13 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" @@ -8405,16 +8719,15 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", + "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -8436,9 +8749,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8604,17 +8917,18 @@ } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-10.0.4.tgz", + "integrity": "sha512-oujJ/FFr7ra6/7gJuQ4ZJJ8Gf2VHM0J3J/W7IvH++zaqEzacWVxzK++NiVY5NLHTTj7u/jNH5H3Ei9biL31Lng==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8663,16 +8977,20 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -8688,7 +9006,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -8728,6 +9045,8 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "peer": true, "dependencies": { "entities": "^4.4.0" }, @@ -8748,7 +9067,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -8814,15 +9132,6 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -8862,9 +9171,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -8906,14 +9215,14 @@ } }, "node_modules/postcss-colormin": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.1.tgz", - "integrity": "sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "colord": "^2.9.1", + "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -8924,12 +9233,12 @@ } }, "node_modules/postcss-convert-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.1.tgz", - "integrity": "sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -8940,9 +9249,9 @@ } }, "node_modules/postcss-discard-comments": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.1.tgz", - "integrity": "sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -8952,9 +9261,9 @@ } }, "node_modules/postcss-discard-duplicates": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.1.tgz", - "integrity": "sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -8964,9 +9273,9 @@ } }, "node_modules/postcss-discard-empty": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.1.tgz", - "integrity": "sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -8976,9 +9285,9 @@ } }, "node_modules/postcss-discard-overridden": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.1.tgz", - "integrity": "sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -8988,25 +9297,34 @@ } }, "node_modules/postcss-loader": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, "dependencies": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/postcss-loader/node_modules/lru-cache": { @@ -9043,13 +9361,13 @@ "dev": true }, "node_modules/postcss-merge-longhand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.1.tgz", - "integrity": "sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.4.tgz", + "integrity": "sha512-vAfWGcxUUGlFiPM3nDMZA+/Yo9sbpc3JNkcYZez8FfJDv41Dh7tAgA3QGVTocaHCZZL6aXPXPOaBMJsjujodsA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^6.0.1" + "stylehacks": "^6.1.0" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -9059,15 +9377,15 @@ } }, "node_modules/postcss-merge-rules": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.2.tgz", - "integrity": "sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.0.tgz", + "integrity": "sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "cssnano-utils": "^4.0.1", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.15" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -9077,9 +9395,9 @@ } }, "node_modules/postcss-minify-font-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz", - "integrity": "sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.3.tgz", + "integrity": "sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9092,13 +9410,13 @@ } }, "node_modules/postcss-minify-gradients": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz", - "integrity": "sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dev": true, "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^4.0.1", + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -9109,13 +9427,13 @@ } }, "node_modules/postcss-minify-params": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.1.tgz", - "integrity": "sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^4.0.1", + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -9126,12 +9444,12 @@ } }, "node_modules/postcss-minify-selectors": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.1.tgz", - "integrity": "sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.3.tgz", + "integrity": "sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -9153,9 +9471,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -9170,9 +9488,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -9200,9 +9518,9 @@ } }, "node_modules/postcss-normalize-charset": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.1.tgz", - "integrity": "sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "dev": true, "engines": { "node": "^14 || ^16 || >=18.0" @@ -9212,9 +9530,9 @@ } }, "node_modules/postcss-normalize-display-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.1.tgz", - "integrity": "sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9227,9 +9545,9 @@ } }, "node_modules/postcss-normalize-positions": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.1.tgz", - "integrity": "sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9242,9 +9560,9 @@ } }, "node_modules/postcss-normalize-repeat-style": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.1.tgz", - "integrity": "sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9257,9 +9575,9 @@ } }, "node_modules/postcss-normalize-string": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.1.tgz", - "integrity": "sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9272,9 +9590,9 @@ } }, "node_modules/postcss-normalize-timing-functions": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.1.tgz", - "integrity": "sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9287,12 +9605,12 @@ } }, "node_modules/postcss-normalize-unicode": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.1.tgz", - "integrity": "sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -9303,9 +9621,9 @@ } }, "node_modules/postcss-normalize-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.1.tgz", - "integrity": "sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9318,9 +9636,9 @@ } }, "node_modules/postcss-normalize-whitespace": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.1.tgz", - "integrity": "sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9333,12 +9651,12 @@ } }, "node_modules/postcss-ordered-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.1.tgz", - "integrity": "sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dev": true, "dependencies": { - "cssnano-utils": "^4.0.1", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -9349,12 +9667,12 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.1.tgz", - "integrity": "sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" }, "engines": { @@ -9365,9 +9683,9 @@ } }, "node_modules/postcss-reduce-transforms": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.1.tgz", - "integrity": "sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9380,9 +9698,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -9393,13 +9711,13 @@ } }, "node_modules/postcss-svgo": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.1.tgz", - "integrity": "sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", - "svgo": "^3.0.5" + "svgo": "^3.2.0" }, "engines": { "node": "^14 || ^16 || >= 18" @@ -9409,12 +9727,12 @@ } }, "node_modules/postcss-unique-selectors": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.1.tgz", - "integrity": "sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.3.tgz", + "integrity": "sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -9430,9 +9748,9 @@ "dev": true }, "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dev": true, "dependencies": { "detect-libc": "^2.0.0", @@ -9484,9 +9802,9 @@ } }, "node_modules/prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -9929,7 +10247,6 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, "engines": { "node": ">= 0.10" } @@ -10063,20 +10380,81 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "rimraf": "bin.js" + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10103,9 +10481,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -10120,29 +10498,29 @@ } }, "node_modules/sass-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", "dev": true, "dependencies": { "neo-async": "^2.6.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", + "@rspack/core": "0.x || 1.x", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -10153,6 +10531,9 @@ }, "sass-embedded": { "optional": true + }, + "webpack": { + "optional": true } } }, @@ -10182,11 +10563,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "dependencies": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { @@ -10248,9 +10630,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } @@ -10358,6 +10740,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, "dependencies": { "kind-of": "^6.0.2" }, @@ -10649,13 +11032,16 @@ } }, "node_modules/streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -10761,13 +11147,13 @@ } }, "node_modules/stylehacks": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.1.tgz", - "integrity": "sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.0.tgz", + "integrity": "sha512-ETErsPFgwlfYZ/CSjMO2Ddf+TsnkCVPBPaoB99Ro8WMAxf7cglzmFsRBhRmKObFjibtcvlNxFFPHuyr3sNlNUQ==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.15" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -10800,17 +11186,17 @@ } }, "node_modules/svgo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.1.0.tgz", - "integrity": "sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", "dev": true, "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", "css-what": "^6.1.0", - "csso": "5.0.5", + "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -10851,20 +11237,23 @@ } }, "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dev": true, "dependencies": { - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "dependencies": { "b4a": "^1.6.4", @@ -10873,9 +11262,9 @@ } }, "node_modules/terser": { - "version": "5.19.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", - "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -10890,15 +11279,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -11197,8 +11586,7 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -11418,18 +11806,18 @@ } }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", @@ -11443,7 +11831,7 @@ "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -11509,77 +11897,82 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.0.0.tgz", + "integrity": "sha512-tZ5hqsWwww/8DislmrzXE3x+4f+v10H1z57mA2dWFrILb4i3xX+dPhTkcdR0DLyQztrhF2AUmO5nN085UYjd/Q==", "dev": true, "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^4.6.0", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-server": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", - "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.2.tgz", + "integrity": "sha512-IVj3qsQhiLJR82zVg3QdPtngMD05CYP/Am+9NG5QSl+XwUR/UPtFwllRBKrMwM9ttzFsC6Zj3DMgniPyn/Z0hQ==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.0.0", + "ws": "^8.16.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -11594,6 +11987,7 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -11715,7 +12109,8 @@ "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true }, "node_modules/with": { "version": "7.0.2", @@ -11848,9 +12243,9 @@ } }, "node_modules/ws": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz", - "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -11951,9 +12346,9 @@ "dev": true }, "@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", @@ -11961,11 +12356,11 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -12045,9 +12440,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", - "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.0.tgz", + "integrity": "sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -12123,9 +12518,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -12205,14 +12600,14 @@ } }, "@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "requires": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/highlight": { @@ -12227,9 +12622,9 @@ } }, "@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==" + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.23.3", @@ -12252,9 +12647,9 @@ } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", @@ -12468,9 +12863,9 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", @@ -12530,16 +12925,15 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -12695,9 +13089,9 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", @@ -12756,14 +13150,14 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", "dev": true, "requires": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.23.3" } @@ -12944,18 +13338,18 @@ } }, "@babel/preset-env": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", - "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", "dev": true, "requires": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -12976,13 +13370,13 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-classes": "^7.23.8", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", @@ -12998,13 +13392,13 @@ "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", "@babel/plugin-transform-object-super": "^7.23.3", "@babel/plugin-transform-optional-catch-binding": "^7.23.4", "@babel/plugin-transform-optional-chaining": "^7.23.4", @@ -13024,9 +13418,9 @@ "@babel/plugin-transform-unicode-regex": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" } @@ -13058,20 +13452,20 @@ } }, "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "requires": { "@babel/code-frame": "^7.23.5", @@ -13080,16 +13474,16 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "requires": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -13695,9 +14089,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -13765,211 +14159,9104 @@ "integrity": "sha512-r+isV0rD0vwbsbMaJGTQ5w8T/4fx63zzO58AoVeOiNAsP0LXmuXTbjAO+32+40VONwSD1HhM4SI0l9Yg2rL0fA==", "dev": true }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", - "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.44.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", - "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.36", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", - "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", - "dev": true - }, - "@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", - "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", - "dev": true, + "@test/pug-plugin": { + "version": "file:", "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + "@babel/core": "7.24.0", + "@babel/preset-env": "7.24.0", + "@test-fixtures/js": "0.0.2", + "@test-fixtures/lorem": "0.0.2", + "@test-fixtures/scss": "0.0.7", + "@test/pug-plugin": "file:", + "@types/jest": "^29.5.12", + "ansis": "2.0.3", + "css-loader": "^6.10.0", + "cssnano": "^6.1.0", + "html-bundler-webpack-plugin": "^3.6.1", + "jest": "^29.7.0", + "js-beautify": "^1.14.11", + "mini-css-extract-plugin": "^2.8.1", + "normalize.css": "^8.0.1", + "postcss-loader": "^8.1.1", + "prettier": "^3.2.5", + "pug": "3.0.2", + "responsive-loader": "^3.1.2", + "sass": "1.71.1", + "sass-loader": "^14.1.1", + "sharp": "0.32.6", + "svgo-loader": "^4.0.0", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "webpack": "5.90.3", + "webpack-cli": "5.1.4", + "webpack-dev-server": "^5.0.2", + "webpack-merge": "^5.10.0" + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true + }, + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.0.tgz", + "integrity": "sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "dev": true, + "requires": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" + } + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + } + }, + "@babel/traverse": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@test-fixtures/js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@test-fixtures/js/-/js-0.0.2.tgz", + "integrity": "sha512-a4eqyeHJUXhvM1PWFNqMMPz9sQLsm6yxNUi74/jgWx6u9uHcNMJgnuMfvAEdgq2tth4G8/3ahiratTKJngYHKA==", + "dev": true, + "requires": { + "@test-fixtures/lorem": "0.0.2" + } + }, + "@test-fixtures/lorem": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@test-fixtures/lorem/-/lorem-0.0.2.tgz", + "integrity": "sha512-41wiXnaqGfbN5Xpp1zOKO8oekuruhl1iJfZ9t7w45zQxpKo2/vroWHGrGsw3clpS4UZ4KyoPYWiq9XsLA94/sQ==", + "dev": true + }, + "@test-fixtures/scss": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@test-fixtures/scss/-/scss-0.0.7.tgz", + "integrity": "sha512-r+isV0rD0vwbsbMaJGTQ5w8T/4fx63zzO58AoVeOiNAsP0LXmuXTbjAO+32+40VONwSD1HhM4SI0l9Yg2rL0fA==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-7.0.2.tgz", + "integrity": "sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==" + }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansis": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-2.0.3.tgz", + "integrity": "sha512-tcSGX0mhuDFHsgRrT56xnZ9v2X+TOeKhJ75YopI5OBgyT7tGaG5m6BmeC+6KHjiucfBvUHehQMecHbULIAkFPA==" + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.9.tgz", + "integrity": "sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.0", + "semver": "^6.3.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "requires": { + "@babel/types": "^7.9.6" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "bare-events": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", + "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "dev": true, + "optional": true + }, + "bare-fs": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.1.tgz", + "integrity": "sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==", + "dev": true, + "optional": true, + "requires": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "bare-os": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", + "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", + "dev": true, + "optional": true + }, + "bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "dev": true, + "optional": true, + "requires": { + "bare-os": "^2.1.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "requires": { + "run-applescript": "^7.0.0" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001596", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", + "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "requires": { + "is-regex": "^1.0.3" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "requires": { + "source-map": "~0.6.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dev": true, + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "dev": true, + "requires": { + "browserslist": "^4.22.3" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-declaration-sorter": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz", + "integrity": "sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.0.tgz", + "integrity": "sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==", + "dev": true, + "requires": { + "cssnano-preset-default": "^6.1.0", + "lilconfig": "^3.1.1" + } + }, + "cssnano-preset-default": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.0.tgz", + "integrity": "sha512-4DUXZoDj+PI3fRl3MqMjl9DwLGjcsFP4qt+92nLUcN1RGfw2TY+GwNoG2B38Usu1BrcTs8j9pxNfSusmvtSjfg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.1.1", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.4", + "postcss-merge-rules": "^6.1.0", + "postcss-minify-font-values": "^6.0.3", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.3", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.3" + } + }, + "cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "requires": { + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + } + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "requires": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + } + }, + "default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "requires": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==" + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eta": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-3.2.0.tgz", + "integrity": "sha512-Qzc3it7nLn49dbOb9+oHV9rwtt9qN8oShRztqkZ3gXPqQflF0VLin5qhWk0g/2ioibBwT4DU6OIMVft7tg/rVg==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-bundler-webpack-plugin": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/html-bundler-webpack-plugin/-/html-bundler-webpack-plugin-3.6.1.tgz", + "integrity": "sha512-oWFdqAqd8zXa3IPBOZ22/0kqrsnFPvVreea4izH8BIdmQpOoolRYLNvnvCmVUTdkb0XgX8K9Fu+uT0HYkllBZg==", + "requires": { + "@types/html-minifier-terser": "^7.0.2", + "ansis": "2.0.3", + "enhanced-resolve": ">=5.7.0", + "eta": "^3.1.1", + "html-minifier-terser": "^7.2.0" + } + }, + "html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "requires": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + } + }, + "is-network-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", + "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "requires": { + "is-inside-container": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + } + }, + "jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + } + }, + "jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true + }, + "js-beautify": { + "version": "1.14.11", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.11.tgz", + "integrity": "sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==", + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^10.3.3", + "nopt": "^7.2.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", + "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-abi": { + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", + "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", + "dev": true, + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-10.0.4.tgz", + "integrity": "sha512-oujJ/FFr7ra6/7gJuQ4ZJJ8Gf2VHM0J3J/W7IvH++zaqEzacWVxzK++NiVY5NLHTTj7u/jNH5H3Ei9biL31Lng==", + "dev": true, + "requires": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "requires": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "peer": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, + "requires": {} + }, + "postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "requires": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "postcss-merge-longhand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.4.tgz", + "integrity": "sha512-vAfWGcxUUGlFiPM3nDMZA+/Yo9sbpc3JNkcYZez8FfJDv41Dh7tAgA3QGVTocaHCZZL6aXPXPOaBMJsjujodsA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.0" + } + }, + "postcss-merge-rules": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.0.tgz", + "integrity": "sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.15" + } + }, + "postcss-minify-font-values": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.3.tgz", + "integrity": "sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, + "requires": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.3.tgz", + "integrity": "sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.15" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + } + }, + "postcss-unique-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.3.tgz", + "integrity": "sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.15" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + } + } + }, + "prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + }, + "pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, + "responsive-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/responsive-loader/-/responsive-loader-3.1.2.tgz", + "integrity": "sha512-6UOrSdEkifzxnQPnUFwa3HqXlnHmYEWBIg3zRveuk7VbLhnuNCiKbx0jGs7071Gm10rhSb6seEC+bApSjkX3wA==", + "dev": true, + "requires": { + "@types/node": "^18.11.9", + "find-cache-dir": "^3.3.2", + "json5": "^2.2.1", + "loader-utils": "^3.2.1", + "make-dir": "^3.1.0", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.17.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.14.tgz", + "integrity": "sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "requires": { + "glob": "^10.3.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "dev": true, + "requires": { + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "sharp": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "dev": true, + "requires": { + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dev": true, + "requires": { + "bare-events": "^2.2.0", + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stylehacks": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.0.tgz", + "integrity": "sha512-ETErsPFgwlfYZ/CSjMO2Ddf+TsnkCVPBPaoB99Ro8WMAxf7cglzmFsRBhRmKObFjibtcvlNxFFPHuyr3sNlNUQ==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.15" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svgo": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "svgo-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-4.0.0.tgz", + "integrity": "sha512-bdk2H73AHP8Vo9zgMuA8piEzi5pjFzllK4EwfebDF3hDjmHQpmmqXMoDd6abDtVFrlKTJuveepmnc2kuTdt/WA==", + "dev": true, + "requires": { + "svgo": "^3.0.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "tar-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "dev": true, + "requires": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "requires": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-dev-middleware": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.0.0.tgz", + "integrity": "sha512-tZ5hqsWwww/8DislmrzXE3x+4f+v10H1z57mA2dWFrILb4i3xX+dPhTkcdR0DLyQztrhF2AUmO5nN085UYjd/Q==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.2.tgz", + "integrity": "sha512-IVj3qsQhiLJR82zVg3QdPtngMD05CYP/Am+9NG5QSl+XwUR/UPtFwllRBKrMwM9ttzFsC6Zj3DMgniPyn/Z0hQ==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.0.0", + "ws": "^8.16.0" + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-7.0.2.tgz", + "integrity": "sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==" + }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } }, "@types/qs": { "version": "6.9.8", @@ -13984,9 +23271,9 @@ "dev": true }, "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "@types/send": { @@ -14000,18 +23287,18 @@ } }, "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "requires": { "@types/express": "*" } }, "@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, "requires": { "@types/http-errors": "*", @@ -14020,9 +23307,9 @@ } }, "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "requires": { "@types/node": "*" @@ -14035,9 +23322,9 @@ "dev": true }, "@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, "requires": { "@types/node": "*" @@ -14189,17 +23476,6 @@ "@xtuc/long": "4.2.2" } }, - "@webdiscus/pug-loader": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@webdiscus/pug-loader/-/pug-loader-2.10.5.tgz", - "integrity": "sha512-LTwHHlL7mwAypSGX0o1Z75FLSV5pOzhJIdBlBC9l484qngFFnfx17W7C8CzZoNCN6lJuP3hbdFYAYRw8y0cJsw==", - "requires": { - "ansis": "1.5.5", - "parse5": "^7.1.2", - "pug": "^3.0.2", - "webpack-merge": "^5.9.0" - } - }, "@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", @@ -14311,9 +23587,9 @@ } }, "ansis": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-1.5.5.tgz", - "integrity": "sha512-DNctovTacxs/NfZpGo6bIGWgLd2oZsDO7RJbiYX6Ttj40LPZM1XKv9WtesH13ieOEm1GajjD+Vik2n9YnSTPdA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-2.0.3.tgz", + "integrity": "sha512-tcSGX0mhuDFHsgRrT56xnZ9v2X+TOeKhJ75YopI5OBgyT7tGaG5m6BmeC+6KHjiucfBvUHehQMecHbULIAkFPA==" }, "anymatch": { "version": "3.1.3", @@ -14334,12 +23610,6 @@ "sprintf-js": "~1.0.2" } }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -14351,9 +23621,9 @@ "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, "b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "babel-jest": { @@ -14463,33 +23733,63 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", - "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.9.tgz", + "integrity": "sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.4", + "@babel/helper-define-polyfill-provider": "^0.6.0", "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", - "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", - "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.4" + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } } }, "babel-preset-current-node-syntax": { @@ -14535,6 +23835,43 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "bare-events": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", + "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "dev": true, + "optional": true + }, + "bare-fs": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.1.tgz", + "integrity": "sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==", + "dev": true, + "optional": true, + "requires": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "bare-os": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", + "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", + "dev": true, + "optional": true + }, + "bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "dev": true, + "optional": true, + "requires": { + "bare-os": "^2.1.0" + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -14608,13 +23945,11 @@ } }, "bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -14645,12 +23980,12 @@ } }, "browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "requires": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" } @@ -14679,6 +24014,15 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "requires": { + "run-applescript": "^7.0.0" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -14704,7 +24048,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "requires": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -14729,9 +24072,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==" + "version": "1.0.30001596", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", + "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==" }, "chalk": { "version": "2.4.2", @@ -14759,9 +24102,9 @@ } }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -14801,7 +24144,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, "requires": { "source-map": "~0.6.0" } @@ -14821,6 +24163,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "requires": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -15025,12 +24368,12 @@ "dev": true }, "core-js-compat": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", - "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "requires": { - "browserslist": "^4.22.2" + "browserslist": "^4.22.3" } }, "core-util-is": { @@ -15040,15 +24383,15 @@ "dev": true }, "cosmiconfig": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", - "integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "requires": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "dependencies": { "argparse": { @@ -15152,19 +24495,19 @@ "requires": {} }, "css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "dependencies": { "lru-cache": { @@ -15229,56 +24572,57 @@ "dev": true }, "cssnano": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.2.tgz", - "integrity": "sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.0.tgz", + "integrity": "sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==", "dev": true, "requires": { - "cssnano-preset-default": "^6.0.2", - "lilconfig": "^3.0.0" + "cssnano-preset-default": "^6.1.0", + "lilconfig": "^3.1.1" } }, "cssnano-preset-default": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.2.tgz", - "integrity": "sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.0.tgz", + "integrity": "sha512-4DUXZoDj+PI3fRl3MqMjl9DwLGjcsFP4qt+92nLUcN1RGfw2TY+GwNoG2B38Usu1BrcTs8j9pxNfSusmvtSjfg==", "dev": true, "requires": { - "css-declaration-sorter": "^7.0.0", - "cssnano-utils": "^4.0.1", + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.1.1", + "cssnano-utils": "^4.0.2", "postcss-calc": "^9.0.1", - "postcss-colormin": "^6.0.1", - "postcss-convert-values": "^6.0.1", - "postcss-discard-comments": "^6.0.1", - "postcss-discard-duplicates": "^6.0.1", - "postcss-discard-empty": "^6.0.1", - "postcss-discard-overridden": "^6.0.1", - "postcss-merge-longhand": "^6.0.1", - "postcss-merge-rules": "^6.0.2", - "postcss-minify-font-values": "^6.0.1", - "postcss-minify-gradients": "^6.0.1", - "postcss-minify-params": "^6.0.1", - "postcss-minify-selectors": "^6.0.1", - "postcss-normalize-charset": "^6.0.1", - "postcss-normalize-display-values": "^6.0.1", - "postcss-normalize-positions": "^6.0.1", - "postcss-normalize-repeat-style": "^6.0.1", - "postcss-normalize-string": "^6.0.1", - "postcss-normalize-timing-functions": "^6.0.1", - "postcss-normalize-unicode": "^6.0.1", - "postcss-normalize-url": "^6.0.1", - "postcss-normalize-whitespace": "^6.0.1", - "postcss-ordered-values": "^6.0.1", - "postcss-reduce-initial": "^6.0.1", - "postcss-reduce-transforms": "^6.0.1", - "postcss-svgo": "^6.0.1", - "postcss-unique-selectors": "^6.0.1" + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.4", + "postcss-merge-rules": "^6.1.0", + "postcss-minify-font-values": "^6.0.3", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.3", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.3" } }, "cssnano-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.1.tgz", - "integrity": "sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "dev": true, "requires": {} }, @@ -15346,6 +24690,22 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "requires": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + } + }, + "default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true + }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -15356,9 +24716,9 @@ } }, "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true }, "depd": { @@ -15397,12 +24757,6 @@ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -15458,7 +24812,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -15526,9 +24879,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.615", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", - "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==" + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==" }, "emittery": { "version": "0.13.1", @@ -15570,6 +24923,12 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, "envinfo": { "version": "7.10.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", @@ -15648,6 +25007,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eta": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-3.2.0.tgz", + "integrity": "sha512-Qzc3it7nLn49dbOb9+oHV9rwtt9qN8oShRztqkZ3gXPqQflF0VLin5qhWk0g/2ioibBwT4DU6OIMVft7tg/rVg==" + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -15885,7 +25249,8 @@ "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "follow-redirects": { "version": "1.15.2", @@ -15927,12 +25292,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -16113,6 +25472,18 @@ } } }, + "html-bundler-webpack-plugin": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/html-bundler-webpack-plugin/-/html-bundler-webpack-plugin-3.6.1.tgz", + "integrity": "sha512-oWFdqAqd8zXa3IPBOZ22/0kqrsnFPvVreea4izH8BIdmQpOoolRYLNvnvCmVUTdkb0XgX8K9Fu+uT0HYkllBZg==", + "requires": { + "@types/html-minifier-terser": "^7.0.2", + "ansis": "2.0.3", + "enhanced-resolve": ">=5.7.0", + "eta": "^3.1.1", + "html-minifier-terser": "^7.2.0" + } + }, "html-entities": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", @@ -16125,21 +25496,10 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "html-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-4.2.0.tgz", - "integrity": "sha512-OxCHD3yt+qwqng2vvcaPApCEvbx+nXWu+v69TYHx1FO8bffHn/JjHtE3TTQZmHjwvnJe4xxzuecetDVBrQR1Zg==", - "dev": true, - "requires": { - "html-minifier-terser": "^7.0.0", - "parse5": "^7.0.0" - } - }, "html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", - "dev": true, "requires": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -16324,9 +25684,9 @@ } }, "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true }, "is-expression": { @@ -16364,6 +25724,21 @@ "is-extglob": "^2.1.1" } }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + } + }, + "is-network-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", + "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -16380,6 +25755,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "requires": { "isobject": "^3.0.1" } @@ -16405,12 +25781,12 @@ "dev": true }, "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "requires": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" } }, "isarray": { @@ -16427,7 +25803,8 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true }, "istanbul-lib-coverage": { "version": "3.2.2", @@ -17701,9 +27078,9 @@ } }, "jiti": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz", - "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true }, "js-beautify": { @@ -17788,7 +27165,8 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "jstransformer": { "version": "1.0.0", @@ -17802,7 +27180,8 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "kleur": { "version": "3.0.3", @@ -17811,13 +27190,13 @@ "dev": true }, "launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, "requires": { "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "shell-quote": "^1.8.1" } }, "leven": { @@ -17827,9 +27206,9 @@ "dev": true }, "lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", "dev": true }, "lines-and-columns": { @@ -17880,7 +27259,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "requires": { "tslib": "^2.0.3" } @@ -17951,12 +27329,12 @@ "dev": true }, "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", + "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", "dev": true, "requires": { - "fs-monkey": "^1.0.4" + "tslib": "^2.0.0" } }, "merge-descriptors": { @@ -18018,12 +27396,13 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", "dev": true, "requires": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" } }, "minimalistic-assert": { @@ -18107,16 +27486,15 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", + "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", "dev": true, "requires": { "semver": "^7.3.5" @@ -18132,9 +27510,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18260,14 +27638,15 @@ } }, "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-10.0.4.tgz", + "integrity": "sha512-oujJ/FFr7ra6/7gJuQ4ZJJ8Gf2VHM0J3J/W7IvH++zaqEzacWVxzK++NiVY5NLHTTj7u/jNH5H3Ei9biL31Lng==", "dev": true, "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" } }, "p-limit": { @@ -18300,12 +27679,13 @@ } }, "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "requires": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" } }, @@ -18319,7 +27699,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -18350,6 +27729,8 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "peer": true, "requires": { "entities": "^4.4.0" } @@ -18364,7 +27745,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -18414,12 +27794,6 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -18447,9 +27821,9 @@ } }, "postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "requires": { "nanoid": "^3.3.7", @@ -18468,64 +27842,64 @@ } }, "postcss-colormin": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.1.tgz", - "integrity": "sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "dev": true, "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "colord": "^2.9.1", + "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" } }, "postcss-convert-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.1.tgz", - "integrity": "sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "dev": true, "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" } }, "postcss-discard-comments": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.1.tgz", - "integrity": "sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "dev": true, "requires": {} }, "postcss-discard-duplicates": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.1.tgz", - "integrity": "sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "dev": true, "requires": {} }, "postcss-discard-empty": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.1.tgz", - "integrity": "sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "dev": true, "requires": {} }, "postcss-discard-overridden": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.1.tgz", - "integrity": "sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "dev": true, "requires": {} }, "postcss-loader": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, "requires": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "dependencies": { "lru-cache": { @@ -18555,65 +27929,65 @@ } }, "postcss-merge-longhand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.1.tgz", - "integrity": "sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.4.tgz", + "integrity": "sha512-vAfWGcxUUGlFiPM3nDMZA+/Yo9sbpc3JNkcYZez8FfJDv41Dh7tAgA3QGVTocaHCZZL6aXPXPOaBMJsjujodsA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^6.0.1" + "stylehacks": "^6.1.0" } }, "postcss-merge-rules": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.2.tgz", - "integrity": "sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.0.tgz", + "integrity": "sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==", "dev": true, "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "cssnano-utils": "^4.0.1", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.15" } }, "postcss-minify-font-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz", - "integrity": "sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.3.tgz", + "integrity": "sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-minify-gradients": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz", - "integrity": "sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dev": true, "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^4.0.1", + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" } }, "postcss-minify-params": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.1.tgz", - "integrity": "sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dev": true, "requires": { - "browserslist": "^4.21.4", - "cssnano-utils": "^4.0.1", + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" } }, "postcss-minify-selectors": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.1.tgz", - "integrity": "sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.3.tgz", + "integrity": "sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" } }, "postcss-modules-extract-imports": { @@ -18624,9 +27998,9 @@ "requires": {} }, "postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -18635,9 +28009,9 @@ } }, "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -18653,118 +28027,118 @@ } }, "postcss-normalize-charset": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.1.tgz", - "integrity": "sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "dev": true, "requires": {} }, "postcss-normalize-display-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.1.tgz", - "integrity": "sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-positions": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.1.tgz", - "integrity": "sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-repeat-style": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.1.tgz", - "integrity": "sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-string": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.1.tgz", - "integrity": "sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-timing-functions": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.1.tgz", - "integrity": "sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-unicode": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.1.tgz", - "integrity": "sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dev": true, "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.1.tgz", - "integrity": "sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-whitespace": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.1.tgz", - "integrity": "sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-ordered-values": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.1.tgz", - "integrity": "sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dev": true, "requires": { - "cssnano-utils": "^4.0.1", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" } }, "postcss-reduce-initial": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.1.tgz", - "integrity": "sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dev": true, "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.1.tgz", - "integrity": "sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -18772,22 +28146,22 @@ } }, "postcss-svgo": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.1.tgz", - "integrity": "sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", - "svgo": "^3.0.5" + "svgo": "^3.2.0" } }, "postcss-unique-selectors": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.1.tgz", - "integrity": "sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.3.tgz", + "integrity": "sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" } }, "postcss-value-parser": { @@ -18797,9 +28171,9 @@ "dev": true }, "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dev": true, "requires": { "detect-libc": "^2.0.0", @@ -18844,9 +28218,9 @@ } }, "prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true }, "pretty-format": { @@ -19216,8 +28590,7 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" }, "require-directory": { "version": "2.1.1", @@ -19306,14 +28679,53 @@ "dev": true }, "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "^10.3.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, + "run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -19326,9 +28738,9 @@ "dev": true }, "sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -19337,9 +28749,9 @@ } }, "sass-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", "dev": true, "requires": { "neo-async": "^2.6.2" @@ -19364,11 +28776,12 @@ "dev": true }, "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "requires": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, @@ -19425,9 +28838,9 @@ } }, "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "requires": { "randombytes": "^2.1.0" } @@ -19522,6 +28935,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, "requires": { "kind-of": "^6.0.2" } @@ -19739,11 +29153,12 @@ "dev": true }, "streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "requires": { + "bare-events": "^2.2.0", "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" } @@ -19822,13 +29237,13 @@ "dev": true }, "stylehacks": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.1.tgz", - "integrity": "sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.0.tgz", + "integrity": "sha512-ETErsPFgwlfYZ/CSjMO2Ddf+TsnkCVPBPaoB99Ro8WMAxf7cglzmFsRBhRmKObFjibtcvlNxFFPHuyr3sNlNUQ==", "dev": true, "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.15" } }, "supports-color": { @@ -19846,17 +29261,17 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "svgo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.1.0.tgz", - "integrity": "sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", "dev": true, "requires": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", "css-what": "^6.1.0", - "csso": "5.0.5", + "csso": "^5.0.5", "picocolors": "^1.0.0" }, "dependencies": { @@ -19883,20 +29298,21 @@ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dev": true, "requires": { - "mkdirp-classic": "^0.5.2", + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0", "pump": "^3.0.0", "tar-stream": "^3.1.5" } }, "tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "requires": { "b4a": "^1.6.4", @@ -19905,9 +29321,9 @@ } }, "terser": { - "version": "5.19.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", - "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", "requires": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -19937,15 +29353,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "requires": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "dependencies": { "ajv": { @@ -20137,8 +29553,7 @@ "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tunnel-agent": { "version": "0.6.0", @@ -20290,18 +29705,18 @@ } }, "webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", @@ -20315,7 +29730,7 @@ "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -20387,60 +29802,61 @@ } }, "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.0.0.tgz", + "integrity": "sha512-tZ5hqsWwww/8DislmrzXE3x+4f+v10H1z57mA2dWFrILb4i3xX+dPhTkcdR0DLyQztrhF2AUmO5nN085UYjd/Q==", "dev": true, "requires": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^4.6.0", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" } }, "webpack-dev-server": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", - "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.2.tgz", + "integrity": "sha512-IVj3qsQhiLJR82zVg3QdPtngMD05CYP/Am+9NG5QSl+XwUR/UPtFwllRBKrMwM9ttzFsC6Zj3DMgniPyn/Z0hQ==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.0.0", + "ws": "^8.16.0" } }, "webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, "requires": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -20480,7 +29896,8 @@ "wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true }, "with": { "version": "7.0.2", @@ -20580,9 +29997,9 @@ } }, "ws": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz", - "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 01f157f8..830ce1c3 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,22 @@ { "name": "pug-plugin", - "version": "4.9.9", - "description": "Pug plugin for webpack compiles Pug files to HTML, extracts CSS and JS from their sources specified in Pug.", + "version": "5.0.0", + "description": "Pug plugin for webpack handles a template as an entry point, extracts CSS and JS from their sources referenced in Pug.", "keywords": [ + "html", "pug", - "loader", + "bundler", + "bundle", "plugin", + "loader", "webpack", - "html", - "css", + "entry", + "entrypoint", + "template", + "integrity", "js", + "javascript", + "css", "scss", "style", "script", @@ -53,41 +60,41 @@ "LICENSE" ], "engines": { - "node": ">=14.18.0" + "node": ">=16.20.0" }, "peerDependencies": { "webpack": ">=5.32.0" }, "dependencies": { - "@webdiscus/pug-loader": "2.10.5", - "ansis": "1.5.5", - "json5": "^2.2.3", - "js-beautify": "^1.14.11" + "ansis": "2.0.3", + "html-bundler-webpack-plugin": "^3.6.1", + "js-beautify": "^1.14.11", + "pug": "3.0.2" }, "devDependencies": { - "@babel/core": "7.23.6", - "@babel/preset-env": "7.23.6", - "@test-fixtures/lorem": "0.0.2", + "@babel/core": "7.24.0", + "@babel/preset-env": "7.24.0", "@test-fixtures/js": "0.0.2", + "@test-fixtures/lorem": "0.0.2", "@test-fixtures/scss": "0.0.7", - "@types/jest": "^29.5.4", - "css-loader": "^6.8.1", - "html-loader": "^4.2.0", + "@types/jest": "^29.5.12", + "css-loader": "^6.10.0", + "cssnano": "^6.1.0", "jest": "^29.7.0", - "mini-css-extract-plugin": "^2.7.6", - "cssnano": "^6.0.2", + "mini-css-extract-plugin": "^2.8.1", "normalize.css": "^8.0.1", - "postcss-loader": "^7.3.3", - "prettier": "^3.1.1", + "postcss-loader": "^8.1.1", + "prettier": "^3.2.5", + "@test/pug-plugin": "file:./", "responsive-loader": "^3.1.2", - "sass": "1.66.1", - "sass-loader": "^13.3.2", + "sass": "1.71.1", + "sass-loader": "^14.1.1", "sharp": "0.32.6", "svgo-loader": "^4.0.0", "tsconfig-paths-webpack-plugin": "^4.1.0", - "webpack": "5.89.0", - "webpack-merge": "^5.10.0", + "webpack": "5.90.3", "webpack-cli": "5.1.4", - "webpack-dev-server": "^4.15.1" + "webpack-dev-server": "^5.0.2", + "webpack-merge": "^5.10.0" } } diff --git a/src/Asset.js b/src/Asset.js deleted file mode 100644 index 7261a069..00000000 --- a/src/Asset.js +++ /dev/null @@ -1,212 +0,0 @@ -const path = require('path'); -const { isWin, pathToPosix } = require('./Utils'); - -class Asset { - /** - * The cache of resolved output asset filenames. - * The key is the resolved source file. - * The value is the output asset filename. - * - * @type {Map} - */ - static files = new Map(); - - /** - * Unique last index for each file with same name. - * @type {Object} - */ - static fileIndex = {}; - - /** - * - * @param {string} outputPath - * @param {string | undefined} publicPath - */ - static init({ outputPath, publicPath }) { - if (typeof publicPath === 'function') { - publicPath = publicPath.call(null, {}); - } - - this.outputPath = outputPath; - this.publicPath = publicPath === undefined ? 'auto' : publicPath; - - // reset initial states - this.isAutoPublicPath = false; - this.isUrlPublicPath = false; - this.isRelativePublicPath = false; - - if (this.publicPath === 'auto') { - this.isAutoPublicPath = true; - } else if (/^(\/\/|https?:\/\/)/i.test(this.publicPath)) { - this.isUrlPublicPath = true; - } else if (!this.publicPath.startsWith('/')) { - this.isRelativePublicPath = true; - } - } - - /** - * Reset settings. - * This method is called before each compilation after changes by `webpack serv/watch`. - */ - static reset() { - this.fileIndex = {}; - this.files.clear(); - } - - /** - * Get the publicPath. - * - * @param {string | null} assetFile The output asset filename relative by output path. - * @return {string} - */ - static getPublicPath(assetFile = null) { - let isAutoRelative = assetFile && this.isRelativePublicPath && !assetFile.endsWith('.html'); - - if (this.isAutoPublicPath || isAutoRelative) { - if (!assetFile) return ''; - - const fullFilename = path.resolve(this.outputPath, assetFile); - const context = path.dirname(fullFilename); - const publicPath = path.relative(context, this.outputPath) + '/'; - - return isWin ? pathToPosix(publicPath) : publicPath; - } - - return this.publicPath; - } - - /** - * Get the output asset file regards the publicPath. - * - * @param {string} assetFile The output asset filename relative by output path. - * @param {string} issuer The output issuer filename relative by output path. - * @return {string} - */ - static getOutputFile(assetFile, issuer) { - let isAutoRelative = issuer && this.isRelativePublicPath && !issuer.endsWith('.html'); - - // if the public path is relative, then a resource using not in the template file must be auto resolved - if (this.isAutoPublicPath || isAutoRelative) { - if (!issuer) return assetFile; - - const issuerFullFilename = path.resolve(this.outputPath, issuer); - const context = path.dirname(issuerFullFilename); - const file = path.posix.join(this.outputPath, assetFile); - const outputFilename = path.relative(context, file); - - return isWin ? pathToPosix(outputFilename) : outputFilename; - } - - if (this.isUrlPublicPath) { - const url = new URL(assetFile, this.publicPath); - return url.href; - } - - return path.posix.join(this.publicPath, assetFile); - } - - /** - * Add resolved module asset. - * This asset can be as issuer for other resource assets. - * - * @param {string} sourceFile - * @param {string} assetFile - */ - static add(sourceFile, assetFile) { - this.files.set(sourceFile, assetFile); - } - - /** - * Find asset file by its source file. - * - * @param {string} sourceFile The source file. - * @return {string|null} The asset file. - */ - static findAssetFile(sourceFile) { - return this.files.get(sourceFile); - } - - /** - * Find source file by its asset file. - * - * @param {string} assetFile The asset file. - * @return {string|null} The source file. - */ - static findSourceFile(assetFile) { - const entries = this.files.entries(); - for (let [sourceFile, value] of entries) { - if (value === assetFile) return sourceFile; - } - - return null; - } - - /** - * @param {string} sourceFile - * @param {string} assetFile - * @return {{isCached: boolean, filename: string}} - */ - static getUniqueFilename(sourceFile, assetFile) { - if (this.files.has(sourceFile)) { - return { - isCached: true, - filename: this.files.get(sourceFile), - }; - } - - let uniqueFilename = assetFile; - - if (!this.fileIndex[assetFile]) { - this.fileIndex[assetFile] = 1; - } else { - const uniqId = this.fileIndex[assetFile]++; - let pos = assetFile.lastIndexOf('.'); - - // paranoid check of the filename extension, because it is very sensible, should normally never occur - if (pos < 0) pos = assetFile.length; - uniqueFilename = assetFile.slice(0, pos) + '.' + uniqId + assetFile.slice(pos); - } - - this.add(sourceFile, uniqueFilename); - - return { - isCached: false, - filename: uniqueFilename, - }; - } - - /** - * @param {{__isStyle?:boolean|undefined, __isDependencyTypeUrl?:boolean|undefined, resource:string, loaders:Array<{loader:string}>}} module The Webpack chunk module. - * Properties:
- * __isStyle {boolean} The cached state whether the Webpack module was resolved as style.
- * resource {string} The source file of Webpack module.
- * loaders {Array} The loaders for this module. - * - * @return {boolean} - */ - static isStyle(module) { - if (module.__isStyle == null) { - module.__isStyle = module.loaders.find((item) => item.loader.indexOf('css-loader') > 0) != null; - } - - return module.__isStyle; - } - - /** - * Whether request contains the `inline` URL query param. - * - * TODO: compare perf with url parse. - * - * @param {string} request - * @return {boolean} - */ - static isInline(request) { - if (!request) return false; - - const [, query] = request.split('?', 2); - - return query != null && /(?:^|&)inline(?:$|&)/.test(query); - } -} - -module.exports = Asset; diff --git a/src/AssetCompiler.js b/src/AssetCompiler.js deleted file mode 100644 index 4ab4c0bb..00000000 --- a/src/AssetCompiler.js +++ /dev/null @@ -1,969 +0,0 @@ -const vm = require('vm'); -const path = require('path'); - -const JavascriptParser = require('webpack/lib/javascript/JavascriptParser'); -const JavascriptGenerator = require('webpack/lib/javascript/JavascriptGenerator'); - -const { pluginName } = require('./config'); -const { isWin, pathToPosix, isFunction, toCommonJS } = require('./Utils'); - -const { plugin, ScriptCollection } = require('./Modules'); -const extractCss = require('./Modules/extractCss'); - -const Resolver = require('./Resolver'); -const UrlDependency = require('./UrlDependency'); - -const Asset = require('./Asset'); -const AssetEntry = require('./AssetEntry'); -const AssetResource = require('./AssetResource'); -const AssetInline = require('./AssetInline'); -const AssetScript = require('./AssetScript'); -const AssetSource = require('./AssetSource'); -const AssetTrash = require('./AssetTrash'); - -const { - verboseEntry, - verboseExtractModule, - verboseExtractScript, - verboseExtractResource, - verboseExtractInlineResource, -} = require('./Messages/Info'); - -const { - optionModulesException, - executeTemplateFunctionException, - postprocessException, -} = require('./Messages/Exception'); - -/** @typedef {import('webpack').Compiler} Compiler */ -/** @typedef {import('webpack').Compilation} Compilation */ -/** @typedef {import('webpack').ChunkGraph} ChunkGraph */ -/** @typedef {import('webpack').Chunk} Chunk */ -/** @typedef {import('webpack').Module} Module */ -/** @typedef {import('webpack').sources.Source} Source */ -/** @typedef {import('webpack-sources').RawSource} RawSource */ -/** @typedef {import('webpack').Configuration} Configuration */ -/** @typedef {import('webpack').PathData} PathData */ -/** @typedef {import('webpack').AssetInfo} AssetInfo */ - -/** - * @typedef {Object} ModuleOptions - * @property {RegExp} test The search for a match of entry files. - * @property {boolean} [enabled = true] Enable/disable the plugin. - * @property {boolean} [verbose = false] Show the information at processing entry files. - * @property {string} [sourcePath = options.context] The absolute path to sources. - * @property {string} [outputPath = options.output.path] The output directory for an asset. - * @property {string|function(PathData, AssetInfo): string} filename The file name of output file. - * @property {function(string, ResourceInfo, Compilation): string|null =} postprocess The post process for extracted content from entry. - * @property {function(sourceMaps: string, assetFile: string, compilation: Compilation): string|null =} extract - */ - -/** - * @typedef {Object} ExtractJsOptions - * @property {boolean} [verbose = false] Show the information at processing entry files. - * @property {string|function(PathData, AssetInfo): string} [filename = '[name].js'] The file name of output file. - */ - -/** - * @typedef {ModuleOptions} ModuleProps - * @property {boolean} [`inline` = false] Whether inline CSS should contain inline source map. - */ - -/** - * @typedef {Object} AssetEntryOptions - * @property {string} name The key of webpack entry. - * @property {string} file The output asset file with absolute path. - * @property {string} assetFile The output asset file with relative path by webpack output path. - * Note: the method compilation.emitAsset() use this file as key of assets object - * and save the file relative by output path, defined in webpack.options.output.path. - * @property {string|function(PathData, AssetInfo): string} filenameTemplate The filename template or function. - * @property {string} filename The asset filename. - * The template strings support only these substitutions: [name], [base], [path], [ext], [id], [contenthash], [contenthash:nn] - * See https://webpack.js.org/configuration/output/#outputfilename - * @property {string} request The full path of import file with query. - * @property {string} importFile The import file only w/o query. - * @property {string} outputPath - * @property {string} sourcePath - * @property {{name: string, type: string}} library Define the output a js file. - * See https://webpack.js.org/configuration/output/#outputlibrary - * @property {function(string, AssetInfo, Compilation): string} [postprocess = null] The post process for extracted content from entry. - * @property {function(): string|null =} extract - * @property {Array} resources - * @property {boolean} [verbose = false] Show an information by handles of the entry in a postprocess. - */ - -/** - * @typedef {Object} ResourceInfo - * @property {boolean} isEntry True if is the asset from entry, false if asset is required from template. - * @property {boolean} verbose Whether information should be displayed. - * @property {string|(function(PathData, AssetInfo): string)} filename The filename template or function. - * @property {string} sourceFile The absolute path to source file. - * @property {string} outputPath The absolute path to output directory of asset. - * @property {string} assetFile The output asset file relative by outputPath. - */ - -const verboseList = new Set(); - -/** @type RawSource This objects will be assigned by plugin initialisation. */ -let RawSource, HotUpdateChunk; - -const issuerCache = { - request: new Map(), - - add(request) { - const [file] = request.split('?', 1); - - if (!this.request.has(file)) { - this.request.set(file, new Set()); - } - - this.request.get(file).add(request); - }, - - get(file) { - return this.request.get(file); - }, - - clear() { - this.request.clear(); - }, -}; - -class AssetCompiler { - /** @type {PluginOptions} */ - options = {}; - - entryLibrary = { - name: 'return', - type: 'jsonp', // compiles JS from source into HTML string via Function() - }; - - // webpack's options and modules - webpackContext = ''; - webpackOutputPath = ''; - - /** - * @param {PluginOptions|{}} options - */ - constructor(options = {}) { - this.options = options; - this.enabled = this.options.enabled !== false; - this.verbose = this.options.verbose === true; - this.watchMode = false; - - if (options.modules && !Array.isArray(options.modules)) { - optionModulesException(options.modules); - } - - let extractCssOptions = extractCss(options.css); - const moduleExtractCssOptions = this.options.modules.find( - (item) => item.test.source === extractCssOptions.test.source - ); - - if (moduleExtractCssOptions) { - extractCssOptions = moduleExtractCssOptions; - } else { - this.options.modules.unshift(extractCssOptions); - } - - this.options.extractCss = extractCssOptions; - this.options.extractJs = options.js || {}; - - // let know the loader that the plugin is being used - plugin.init(this.options); - - // bind the instance context for using these methods as references in Webpack hooks - this.afterProcessEntry = this.afterProcessEntry.bind(this); - this.beforeResolve = this.beforeResolve.bind(this); - this.afterCreateModule = this.afterCreateModule.bind(this); - this.beforeBuildModule = this.beforeBuildModule.bind(this); - this.renderManifest = this.renderManifest.bind(this); - this.afterProcessAssets = this.afterProcessAssets.bind(this); - this.filterAlternativeRequests = this.filterAlternativeRequests.bind(this); - this.done = this.done.bind(this); - } - - /** - * Get plugin module depend on type of source file. - * - * @param {string} sourceFile The source file of asset. - * @returns {ModuleOptions|undefined} - */ - getModule(sourceFile) { - return this.options.modules.find((module) => module.enabled !== false && module.test.test(sourceFile)); - } - - /** - * Whether the source file is an entry file. - * - * @param {string} sourceFile - * @return {boolean} - */ - isEntry(sourceFile) { - const [file] = sourceFile.split('?', 1); - return this.options.test.test(file); - } - - /** - * Apply plugin. - * @param {{}} compiler - */ - apply(compiler) { - if (!this.enabled) return; - - const { webpack, options } = compiler; - const webpackOutput = options.output; - const { extractJs } = this.options; - - RawSource = webpack.sources.RawSource; - HotUpdateChunk = webpack.HotUpdateChunk; - - // save using webpack options - this.webpackContext = options.context; - this.webpackOutputPath = webpackOutput.path || path.join(__dirname, 'dist'); - - // define js output filename - if (!webpackOutput.filename) { - webpackOutput.filename = '[name].js'; - } - if (extractJs.filename) { - webpackOutput.filename = extractJs.filename; - } else { - extractJs.filename = webpackOutput.filename; - } - - // resolve js filename by outputPath - if (extractJs.outputPath) { - const filename = extractJs.filename; - - extractJs.filename = isFunction(filename) - ? (pathData, assetInfo) => this.resolveOutputFilename(filename(pathData, assetInfo), extractJs.outputPath) - : this.resolveOutputFilename(extractJs.filename, extractJs.outputPath); - - webpackOutput.filename = extractJs.filename; - } - - Asset.init({ - outputPath: this.webpackOutputPath, - publicPath: webpackOutput.publicPath, - }); - AssetResource.init(compiler); - AssetEntry.setWebpackOutputPath(this.webpackOutputPath); - - // clear caches by tests for webpack serve/watch - AssetScript.clear(); - Resolver.clear(); - AssetEntry.clear(); - - // enable library type - const libraryType = this.entryLibrary.type; - if (webpackOutput.enabledLibraryTypes.indexOf(libraryType) < 0) { - webpackOutput.enabledLibraryTypes.push(libraryType); - } - - if (!this.options.sourcePath) this.options.sourcePath = this.webpackContext; - if (!this.options.outputPath) this.options.outputPath = this.webpackOutputPath; - - // entry options - compiler.hooks.entryOption.tap(pluginName, this.afterProcessEntry); - - // after rebuild add missing dependencies from cache - compiler.hooks.make.tapAsync(pluginName, (compilation, callback) => { - if (this.watchMode) { - AssetScript.optimizeDependencies(); - } - callback(); - }); - - // executes by watch/serve only, before the compilation - compiler.hooks.watchRun.tap(pluginName, (compiler) => { - this.watchMode = true; - - const { publicPath } = compiler.options.output; - if (publicPath == null || publicPath === 'auto') { - // By using watch/serve browsers not support an automatic publicPath in HMR script injected into inlined JS, - // the output.publicPath must be an empty string. - compiler.options.output.publicPath = ''; - } - }); - - // this compilation - compiler.hooks.thisCompilation.tap(pluginName, (compilation, { normalModuleFactory, contextModuleFactory }) => { - this.compilation = compilation; - - Resolver.init({ - fs: normalModuleFactory.fs.fileSystem, - rootContext: this.webpackContext, - }); - - UrlDependency.init({ - fs: normalModuleFactory.fs.fileSystem, - moduleGraph: compilation.moduleGraph, - }); - - AssetEntry.setCompilation(compilation); - - // resolve modules - normalModuleFactory.hooks.beforeResolve.tap(pluginName, this.beforeResolve); - contextModuleFactory.hooks.alternativeRequests.tap(pluginName, this.filterAlternativeRequests); - - // build modules - normalModuleFactory.hooks.module.tap(pluginName, this.afterCreateModule); - compilation.hooks.buildModule.tap(pluginName, this.beforeBuildModule); - compilation.hooks.succeedModule.tap(pluginName, this.afterBuildModule); - - // render source code of modules - compilation.hooks.renderManifest.tap(pluginName, this.renderManifest); - - // after render sources - compilation.hooks.processAssets.tap( - { name: pluginName, stage: compilation.PROCESS_ASSETS_STAGE_ADDITIONAL }, - (assets) => { - AssetTrash.clearCompilation(compilation); - } - ); - - // postprocess for assets content - compilation.hooks.afterProcessAssets.tap(pluginName, this.afterProcessAssets); - }); - - compiler.hooks.done.tap(pluginName, this.done); - } - - /** - * Called after the entry configuration from webpack options has been processed. - * - * @param {string} context The base directory, an absolute path, for resolving entry points and loaders from the configuration. - * @param {Object} entries The webpack entries. - */ - afterProcessEntry(context, entries) { - const extensionRegexp = this.options.test; - - for (let name in entries) { - const entry = entries[name]; - let { filename: filenameTemplate, sourcePath, outputPath, postprocess, extract, verbose } = this.options; - const importFile = entry.import[0]; - let request = importFile; - let [sourceFile] = importFile.split('?', 1); - const module = this.getModule(sourceFile); - - if (!extensionRegexp.test(sourceFile) && !module) continue; - if (!entry.library) entry.library = this.entryLibrary; - - if (module) { - if (module.hasOwnProperty('verbose')) verbose = module.verbose; - if (module.filename) filenameTemplate = module.filename; - if (module.sourcePath) sourcePath = module.sourcePath; - if (module.outputPath) outputPath = module.outputPath; - if (module.postprocess) postprocess = module.postprocess; - if (module.extract) extract = module.extract; - } - if (entry.filename) filenameTemplate = entry.filename; - - if (!path.isAbsolute(sourceFile)) { - request = path.join(sourcePath, request); - sourceFile = path.join(sourcePath, sourceFile); - entry.import[0] = path.join(sourcePath, importFile); - } - - /** @type {AssetEntryOptions} */ - const assetEntryOptions = { - name, - filenameTemplate, - filename: undefined, - file: undefined, - request, - importFile: sourceFile, - sourcePath, - outputPath, - library: entry.library, - postprocess: isFunction(postprocess) ? postprocess : null, - extract: isFunction(extract) ? extract : null, - verbose, - }; - - AssetEntry.add(entry, assetEntryOptions); - } - } - - /** - * Called when a new dependency request is encountered. - * - * @param {Object} resolveData - * @return {boolean|undefined} Return undefined to processing, false to ignore dependency. - */ - beforeResolve(resolveData) { - const { context, request, contextInfo } = resolveData; - const { issuer } = contextInfo; - - // save requests to issuer cache - if (!issuer) issuerCache.add(request); - - // ignore data-URL - if (request.startsWith('data:')) return; - - if (issuer && issuer.length > 0) { - const [requestFile] = request.split('?', 1); - const extractCss = this.options.extractCss; - if (extractCss.enabled && extractCss.test.test(issuer) && requestFile.endsWith('.js')) { - // ignore runtime scripts of a loader, because a style can't have a javascript dependency - return false; - } - - const scriptFile = AssetScript.resolveFile(request); - - if (scriptFile) { - return AssetScript.addDependency({ - scriptFile, - context, - issuer, - filenameTemplate: this.options.extractJs.filename, - }); - } - } - - if (resolveData.dependencyType === 'url') { - UrlDependency.resolve(resolveData); - } - } - - /** - * Filter alternative requests. - * - * Entry files should not have alternative requests. - * If the template file contains require and is compiled with `compile` method, - * then ContextModuleFactory generate additional needless request as relative path without query. - * Such 'alternative request' must be removed from compilation. - * - * @param {Array<{}>} requests - * @param {{}} options - * @return {Array} Returns only alternative requests not related to entry files. - */ - filterAlternativeRequests(requests, options) { - return requests.filter((item) => !this.isEntry(item.request)); - } - - /** - * Called after a NormalModule instance is created. - * - * @param {Object} module - * @param {Object} createData - * @param {Object} resolveData - */ - afterCreateModule(module, createData, resolveData) { - const { type, loaders } = module; - const { rawRequest, resource } = createData; - const issuer = resolveData.contextInfo.issuer; - - if (!issuer || AssetInline.isDataUrl(rawRequest)) return; - - if (type === 'asset/inline' || type === 'asset') { - AssetInline.add(resource, issuer, this.isEntry(issuer)); - } - - if (resolveData.dependencyType === 'url') { - if (AssetScript.isScript(module)) return; - - module.__isDependencyTypeUrl = true; - Resolver.addAsset(resource, undefined, issuer); - } - - // add resolved sources in use cases: - // - if used url() in SCSS for source assets - // - if used import url() in CSS, like `@import url('./styles.css');` - // - if used webpack context - if (module.__isDependencyTypeUrl === true || loaders.length > 0 || type === 'asset/resource') { - Resolver.addSourceFile(resource, rawRequest, issuer); - } - } - - /** - * Called before a module build has started. - * - * @param {Object} module - */ - beforeBuildModule(module) { - if ( - module.type === 'asset/resource' && - (AssetScript.isScript(module) || (module.__isDependencyTypeUrl === true && Asset.isStyle(module))) - ) { - // set correct module type for scripts and styles when used the `html` method of a loader - module.type = 'javascript/auto'; - module.binary = false; - module.parser = new JavascriptParser('auto'); - module.generator = new JavascriptGenerator(); - } - } - - /** - * Called after a module has been built successfully. - * - * @param {Object} module The Webpack module. - */ - afterBuildModule(module) { - // decide asset type by webpack option parser.dataUrlCondition.maxSize - if (module.type === 'asset') { - module.type = module.buildInfo.dataUrl === true ? 'asset/inline' : 'asset/resource'; - } - } - - /** - * @param {Array} result - * @param {Object} chunk - * @param {Object} chunkGraph - * @param {Object} outputOptions - * @param {Object} codeGenerationResults - */ - renderManifest(result, { chunk, chunkGraph, outputOptions, codeGenerationResults }) { - const { compilation, verbose } = this; - - if (chunk instanceof HotUpdateChunk) return; - - const entry = AssetEntry.get(chunk.name); - - // process only entries supported by this plugin - if (!entry) return; - - const assetModules = new Set(); - const contentHashType = 'javascript'; - const chunkModules = chunkGraph.getChunkModulesIterable(chunk); - - entry.filename = compilation.getPath(chunk.filenameTemplate, { contentHashType, chunk }); - AssetScript.setIssuerFilename(entry.request, entry.filename); - - for (const module of chunkModules) { - const { buildInfo, resource: sourceRequest, resourceResolveData } = module; - - if (!sourceRequest || AssetInline.isDataUrl(sourceRequest)) continue; - - const inline = Asset.isInline(sourceRequest) || module.type === 'asset/source'; - const { issuer } = resourceResolveData.context; - const [sourceFile] = sourceRequest.split('?', 1); - let issuerFile = !issuer || this.isEntry(issuer) ? entry.importFile : issuer; - - if (module.type === 'javascript/auto') { - // do nothing for scripts because webpack itself compiles and extracts JS files from scripts - if (AssetScript.isScript(module)) { - if (this.options.extractJs.verbose && issuerFile !== sourceFile) { - verboseList.add({ - type: 'script', - header: 'Extract JS', - issuerFile, - sourceFile, - outputPath: this.options.extractJs.outputPath || this.webpackOutputPath, - }); - } - continue; - } - - // entry point - if (sourceFile === entry.importFile) { - const source = module.originalSource(); - // break process by module builder error - if (source == null) return; - - const { filename: assetFile } = entry; - - // Note: save full path with param queries because - // the template request in entry can be resolved with different output paths: - // - 'index': './index.ext' => dist/index.html - // - 'index/de': './index.ext?lang=de' => dist/de/index.html - Asset.add(sourceRequest, assetFile); - - if (verbose) { - verboseList.add({ - type: 'entry', - name: chunk.name, - }); - } - - assetModules.add({ - inline, - entryAsset: null, - // resourceInfo - isEntry: true, - verbose: entry.verbose, - outputPath: entry.outputPath, - filenameTemplate: entry.filenameTemplate, - // renderContent arguments - source, - sourceFile, - sourceRequest, - assetFile, - pluginModule: entry, - fileManifest: { - filename: assetFile, - identifier: `${pluginName}.${chunk.id}`, - hash: chunk.contentHash[contentHashType], - }, - }); - - continue; - } - - // asset supported via the plugin module - const pluginModule = this.getModule(sourceFile); - if (pluginModule == null) continue; - - const source = module.originalSource(); - // break process by module builder error - if (source == null) return; - - // note: the `id` is - // - in production mode as a number - // - in development mode as a relative path - const id = chunkGraph.getModuleId(module); - const { name } = path.parse(sourceFile); - const hash = buildInfo.assetInfo ? buildInfo.assetInfo.contenthash : buildInfo.hash; - const filenameTemplate = pluginModule.filename ? pluginModule.filename : entry.filenameTemplate; - - /** @type {PathData} The data to generate an asset path by filenameTemplate. */ - const pathData = { - contentHash: hash, - chunk: { - chunkId: chunk.id, - id, - name, - hash, - }, - filename: sourceFile, - }; - - const assetPath = compilation.getAssetPath(filenameTemplate, pathData); - const { isCached, filename } = Asset.getUniqueFilename(sourceFile, assetPath); - let assetFile = filename; - - // apply outputPath option for plugin module, e.g. for 'css' - if (pluginModule.test.test(sourceFile)) { - assetFile = this.resolveOutputFilename(assetFile, pluginModule.outputPath); - } - - Resolver.addAsset(sourceRequest, assetFile, issuerFile); - - if (inline) { - AssetSource.add(sourceRequest); - } - - // skip already processed file assets, but all inline assets must be processed - if (isCached && !inline) { - continue; - } - - const moduleVerbose = pluginModule.verbose || entry.verbose; - const moduleOutputPath = pluginModule.outputPath || entry.outputPath; - - if (moduleVerbose) { - verboseList.add({ - type: 'module', - header: pluginModule.verboseHeader, - sourceFile, - outputPath: moduleOutputPath, - }); - } - - assetModules.add({ - inline, - entryAsset: entry.filename, - // resourceInfo - isEntry: false, - verbose: moduleVerbose, - outputPath: moduleOutputPath, - filenameTemplate, - // renderContent arguments - source, - sourceFile, - sourceRequest, - assetFile, - pluginModule, - fileManifest: { - filename: assetFile, - identifier: `${pluginName}.${chunk.id}.${id}`, - hash, - }, - }); - } else if (module.type === 'asset/resource') { - // resource required in the template or in the CSS via url() - AssetResource.render(module, issuerFile); - - if (verbose) { - verboseList.add({ - type: module.type, - sourceFile: sourceRequest, - }); - } - } else if (module.type === 'asset/inline') { - AssetInline.render({ module, chunk, codeGenerationResults, issuerAssetFile: entry.filename }); - - if (verbose) { - verboseList.add({ - type: module.type, - sourceFile: sourceRequest, - }); - } - } else if (module.type === 'asset/source') { - // TODO: remove in v5.0 the usage of 'asset/source' to inline CSS, - // because this type not support url() in inline CSS - // and inline CSS already works via '?inline' query - const pluginModule = this.getModule(sourceFile); - if (pluginModule == null) continue; - - AssetSource.add(sourceRequest); - - if (verbose) { - verboseList.add({ - type: module.type, - sourceFile: sourceRequest, - }); - } - - assetModules.add({ - inline, - entryAsset: entry.filename, - // postprocessInfo - isEntry: false, - verbose: pluginModule.verbose || entry.verbose, - outputPath: null, - filenameTemplate: null, - // renderContent arguments - source: module.originalSource(), - sourceFile, - sourceRequest, - assetFile: null, - pluginModule, - fileManifest: {}, - }); - } - } - - // render modules after collection of dependencies in all chunks - for (let module of assetModules) { - const { fileManifest } = module; - const content = this.renderModule(module); - - if (content != null) { - fileManifest.render = () => new RawSource(content); - result.push(fileManifest); - } - } - } - - /** - * Called after the processAssets hook had finished without error. - * @note: Only at this stage the js file has the final hashed name. - */ - afterProcessAssets() { - const compilation = this.compilation; - const RawSource = compilation.compiler.webpack.sources.RawSource; - - if (this.options.extractComments !== true) { - AssetTrash.removeComments(compilation); - } - - AssetScript.substituteOutputFilenames(compilation); - AssetInline.insertInlineSvg(compilation); - AssetSource.inlineSource(compilation); - - for (const assetFile in compilation.assets) { - const sourceFile = Asset.findSourceFile(assetFile) || AssetScript.findSourceFile(assetFile); - const source = compilation.assets[assetFile].source(); - const result = this.afterProcess(compilation, { sourceFile, assetFile, source }); - - if (result != null) { - compilation.updateAsset(assetFile, new RawSource(result)); - } - } - - // remove all unused assets from compilation - AssetTrash.clearCompilation(compilation); - } - - /** - * Abstract method should be overridden in child class. - * - * @param {Compilation} compilation The instance of the webpack compilation. - * @param {string} sourceFile The source filename of asset. - * @param {string} assetFile The output filename of asset. - * @param {string} source The source of compiled asset. - * @return {string|undefined} - * @abstract - */ - afterProcess(compilation, { sourceFile, assetFile, source }) {} - - /** - * Render the module source code generated by a loader. - * - * @param {string} code The source code. - * @param {string} sourceFile The full path of source file w/o URL query. - * @param {string} sourceRequest The full path of source file with URL query. - * @param {string} assetFile - * @param {ModuleProps} pluginModule - * @return {string|null} When return null then not emit file. - */ - renderModule({ - inline, - entryAsset, - source, - sourceFile, - sourceRequest, - assetFile, - isEntry, - verbose, - outputPath, - filenameTemplate, - pluginModule, - }) { - let code = source.source(); - - if (!code) { - // TODO: reproduce this case and write test - // the source is empty when webpack config contains an error - return null; - } - - if (Buffer.isBuffer(code)) { - code = code.toString(); - } - - if (code.indexOf('export default') > -1) { - code = toCommonJS(code); - } - - Resolver.setIssuer(sourceRequest, entryAsset); - - const contextOptions = { - require: Resolver.require, - // the `module.id` is required for `css-loader`, in module extractCss expected as source path - module: { id: sourceFile }, - }; - const contextObject = vm.createContext(contextOptions); - const script = new vm.Script(code, { filename: sourceFile }); - const compiledCode = script.runInContext(contextObject) || ''; - let content; - - try { - content = isFunction(compiledCode) ? compiledCode() : compiledCode; - } catch (error) { - executeTemplateFunctionException(error, sourceFile, code); - } - - if (pluginModule) { - if (pluginModule.extract) { - pluginModule.inline = inline; - content = pluginModule.extract(content, assetFile, this.compilation); - } - if (pluginModule.postprocess) { - const resourceInfo = { - isEntry, - verbose, - outputPath, - sourceFile, - assetFile, - filename: filenameTemplate, - }; - try { - content = pluginModule.postprocess(content, resourceInfo, this.compilation); - } catch (error) { - postprocessException(error, resourceInfo); - } - } - } - - if (inline) { - AssetSource.setSource(sourceRequest, entryAsset, content); - return null; - } - - return content; - } - - /** - * Execute after compilation. - * Reset initial settings and caches by webpack serve/watch, display verbose. - * - * @param {Object} stats - */ - done(stats) { - // display verbose after rendering of all modules - if (verboseList.size > 0) { - for (let item of verboseList) { - const { type, issuerFile, sourceFile, outputPath } = item; - - switch (type) { - case 'entry': { - const entry = AssetEntry.get(item.name); - verboseEntry(entry); - break; - } - case 'module': { - const { originalAssetFile, issuers } = Resolver.data.get(sourceFile); - verboseExtractModule({ - sourceFile, - assetFile: originalAssetFile, - issuers: issuers, - outputPath, - header: item.header, - }); - break; - } - case 'script': { - const posixSourceFile = isWin ? pathToPosix(sourceFile) : sourceFile; - const entity = ScriptCollection.getEntity(posixSourceFile); - verboseExtractScript({ - entity, - outputPath, - }); - break; - } - case 'asset/resource': { - const { originalAssetFile, issuers } = Resolver.data.get(sourceFile); - verboseExtractResource({ - sourceFile, - assetFile: originalAssetFile, - issuers, - outputPath: this.webpackOutputPath, - }); - break; - } - case 'asset/inline': - verboseExtractInlineResource({ - sourceFile, - data: AssetInline.data.get(sourceFile), - }); - break; - // no default - } - } - } - - verboseList.clear(); - issuerCache.clear(); - - Asset.reset(); - AssetEntry.reset(); - AssetScript.reset(); - AssetTrash.reset(); - Resolver.reset(); - } - - /** - * @param {string} filename The output filename. - * @param {string | null} outputPath The output path. - * @return {string} - */ - resolveOutputFilename(filename, outputPath) { - if (!outputPath) return filename; - - let relativeOutputPath = path.isAbsolute(outputPath) - ? path.relative(this.webpackOutputPath, outputPath) - : outputPath; - - if (relativeOutputPath) { - if (isWin) relativeOutputPath = pathToPosix(relativeOutputPath); - filename = path.posix.join(relativeOutputPath, filename); - } - - return filename; - } -} - -module.exports = AssetCompiler; diff --git a/src/AssetEntry.js b/src/AssetEntry.js deleted file mode 100644 index d08a089a..00000000 --- a/src/AssetEntry.js +++ /dev/null @@ -1,163 +0,0 @@ -const path = require('path'); -const { isFunction } = require('./Utils'); - -class AssetEntry { - /** @type {Map} */ - static entryMap = new Map(); - static compilationEntryNames = new Set(); - - static compilation = null; - static EntryPlugin = null; - - /** - * @param {string} outputPath The Webpack output path. - */ - static setWebpackOutputPath(outputPath) { - this.webpackOutputPath = outputPath; - } - - /** - * @param {Compilation} compilation The instance of the webpack compilation. - */ - static setCompilation(compilation) { - this.compilation = compilation; - this.EntryPlugin = compilation.compiler.webpack.EntryPlugin; - } - - /** - * @param {string} name The entry name. - * @returns {AssetEntryOptions} - */ - static get(name) { - return this.entryMap.get(name); - } - - /** - * @param {{}} entry The webpack entry object. - * @param {AssetEntryOptions} assetEntryOptions - */ - static add(entry, assetEntryOptions) { - const { name, outputPath, filenameTemplate } = assetEntryOptions; - const relativeOutputPath = path.isAbsolute(outputPath) - ? path.relative(this.webpackOutputPath, outputPath) - : outputPath; - - entry.filename = (pathData, assetInfo) => { - if (assetEntryOptions.filename != null) return assetEntryOptions.filename; - - // the `filename` property of the `PathData` type should be a source file, but in entry this property not exists - if (pathData.filename == null) { - pathData.filename = assetEntryOptions.importFile; - } - - let filename = isFunction(filenameTemplate) ? filenameTemplate(pathData, assetInfo) : filenameTemplate; - if (relativeOutputPath) { - filename = path.posix.join(relativeOutputPath, filename); - } - assetEntryOptions.filename = filename; - - return filename; - }; - - this.entryMap.set(name, assetEntryOptions); - } - - /** - * Add a script to webpack compilation. - * - * @param {string} name - * @param {string} importFile - * @param {string} filenameTemplate - * @param {string} context - * @param {string} issuer - * @return {boolean} Return true if new file was added, if a file exists then return false. - */ - static addToCompilation({ name, importFile, filenameTemplate, context, issuer }) { - // skip duplicate entries - if (this.inEntry(name, importFile)) return false; - - const entry = { - name, - runtime: undefined, - layer: undefined, - dependOn: undefined, - baseUri: undefined, - publicPath: undefined, - chunkLoading: undefined, - asyncChunks: undefined, - wasmLoading: undefined, - library: undefined, - }; - - /** @type {AssetEntryOptions} */ - const assetEntryOptions = { - name, - filenameTemplate, - filename: undefined, - file: undefined, - importFile, - sourcePath: context, - outputPath: this.webpackOutputPath, - postprocess: undefined, - extract: undefined, - verbose: false, - }; - - this.add(entry, assetEntryOptions); - this.compilationEntryNames.add(name); - - // adds the entry of the script from the template to the compilation - // see reference: node_modules/webpack/lib/EntryPlugin.js - const entryDependency = this.EntryPlugin.createDependency(importFile, { name }); - this.compilation.addEntry(context, entryDependency, entry, (err) => { - if (err) throw new Error(err); - }); - - return true; - } - - /** - * Whether the entry is unique. - * - * @param {string} name The name of the entry. - * @param {string} file The source file. - * @return {boolean} - */ - static isUnique(name, file) { - const entry = this.entryMap.get(name); - return !entry || entry.importFile === file; - } - - /** - * Whether the file in the entry already exists. - * - * @param {string} name The name of the entry. - * @param {string} file The source file. - * @return {boolean} - */ - static inEntry(name, file) { - const entry = this.entryMap.get(name); - return entry && entry.importFile === file; - } - - /** - * Clear caches. - * This method is called only once, when the plugin is applied. - */ - static clear() { - this.entryMap.clear(); - } - - /** - * Remove entries added not via webpack entry. - * This method is called before each compilation after changes by `webpack serv/watch`. - */ - static reset() { - for (const entryName of this.compilationEntryNames) { - this.entryMap.delete(entryName); - } - this.compilationEntryNames.clear(); - } -} - -module.exports = AssetEntry; diff --git a/src/AssetInline.js b/src/AssetInline.js deleted file mode 100644 index 8ae5b0aa..00000000 --- a/src/AssetInline.js +++ /dev/null @@ -1,292 +0,0 @@ -const path = require('path'); -const { isWin } = require('./Utils'); - -/** - * @param {{key: string, value: string}} attrs - * @param {Array} exclude The list of excluded attributes from result. - * @return {string} - */ -const attrsToString = (attrs, exclude = []) => { - let res = ''; - for (const key in attrs) { - if (exclude.indexOf(key) < 0) { - res += ` ${key}="${attrs[key]}"`; - } - } - - return res; -}; - -/** - * Parse tag attributes in a tag string. - * - * @param {string} string - * @returns {Object} The parsed attributes as object key:value. - */ -const parseAttributes = (string) => { - let attrs = {}; - const matches = string.matchAll(/([^\s]+)="(.+?)"/gm); - for (const [, key, val] of matches) { - attrs[key] = val; - } - - return attrs; -}; - -/** - * Parse values in HTML. - * - * @param {string} content The HTML content. - * @param {string} value The value to parse. - * @return {Array<{value: string, attrs: {}, tagStartPos: number, tagEndPos: number, valueStartPos: number, valueEndPos: number}>} - */ -const parseValues = (content, value) => { - const valueLen = value.length; - let valueStartPos = 0; - let valueEndPos = 0; - let result = []; - - while ((valueStartPos = content.indexOf(value, valueStartPos)) >= 0) { - valueEndPos = valueStartPos + valueLen; - - let tagStartPos = valueStartPos; - let tagEndPos = content.indexOf('>', valueEndPos) + 1; - while (tagStartPos >= 0 && content.charAt(--tagStartPos) !== '<') {} - - result.push({ - value, - attrs: parseAttributes(content.slice(tagStartPos, tagEndPos)), - tagStartPos, - tagEndPos, - valueStartPos, - valueEndPos, - }); - - valueStartPos = valueEndPos; - } - - return result; -}; - -const comparePos = (a, b) => a.valueStartPos - b.valueStartPos; - -class AssetInline { - static data = new Map(); - static inlineSvgIssueAssets = new Set(); - - /** - * Whether the request is data-URL. - * - * @param {string} request The request of asset. - * @returns {boolean} - */ - static isDataUrl(request) { - return request.startsWith('data:'); - } - - /** - * @param {string} sourceFile - * @param {string} issuer - * @returns {boolean} - */ - static isInlineSvg(sourceFile, issuer) { - const item = this.data.get(sourceFile); - return item != null && item.cache != null && item.inlineSvg && item.inlineSvg.issuers.has(issuer); - } - - /** - * @param {string} request - * @return {boolean} - */ - static isSvgFile(request) { - const [file] = request.split('?', 1); - return file.endsWith('.svg'); - } - - /** - * @param {string} sourceFile - * @param {string} issuer - * @returns {string|null} - */ - static getDataUrl(sourceFile, issuer) { - if (isWin) sourceFile = path.win32.normalize(sourceFile); - const item = this.data.get(sourceFile); - - return item != null && item.cache != null && item.dataUrl.issuers.has(issuer) ? item.cache.dataUrl : null; - } - - /** - * @param {string} sourceFile The source filename of asset. - * @param {string} issuer The output filename of the issuer. - * @param {boolean} isEntry Whether the issuer is an entry file. - */ - static add(sourceFile, issuer, isEntry) { - if (!this.data.has(sourceFile)) { - this.data.set(sourceFile, { - cache: null, - }); - } - const item = this.data.get(sourceFile); - - if (isEntry && this.isSvgFile(sourceFile)) { - // SVG can only be inlined in HTML, in CSS it's a data URL - if (!item.inlineSvg) { - item.inlineSvg = { - issuers: new Set(), - assets: new Set(), - }; - } - item.inlineSvg.issuers.add(issuer); - } else { - if (!item.dataUrl) { - item.dataUrl = { - issuers: new Set(), - }; - } - item.dataUrl.issuers.add(issuer); - } - } - - /** - * @param {Chunk} chunk The Webpack chunk. - * @param {Module} module The Webpack module. - * @param {CodeGenerationResults|Object} codeGenerationResults Code generation results of resource modules. - * @param {string} issuerAssetFile The output filename of issuer. - */ - static render({ module, chunk, codeGenerationResults, issuerAssetFile }) { - const sourceFile = module.resource; - const item = this.data.get(sourceFile); - - if (!item) return; - - if (this.isSvgFile(sourceFile)) { - // extract SVG content from processed source via a loader like svgo-loader - const svg = module.originalSource().source().toString(); - - // svg is inline in html only, in css is as data URL - if (item.inlineSvg) { - item.inlineSvg.assets.add(issuerAssetFile); - this.inlineSvgIssueAssets.add(issuerAssetFile); - } - - if (item.cache == null) { - item.cache = this.parseSvg(svg); - } - } else if (item.cache == null) { - // data URL for binary resource - const dataUrl = codeGenerationResults.getData(module, chunk.runtime, 'url').toString(); - item.cache = { dataUrl }; - } - } - - /** - * @param {string} svg The SVG content. - * @return {{dataUrl: string, svgAttrs: Object, innerSVG: string}} - */ - static parseSvg(svg) { - const svgOpenTag = ' 0) { - // extract SVG content only, ignore xml tag and comments before SVG tag - svg = svg.slice(svgOpenTagStartPos, svgCloseTagPos + svgCloseTag.length); - } - - // parse SVG attributes and extract inner content of SVG - const svgAttrsStartPos = svgOpenTag.length; - const svgAttrsEndPos = svg.indexOf('>', svgAttrsStartPos); - const svgAttrsString = svg.slice(svgAttrsStartPos, svgAttrsEndPos); - const svgAttrs = parseAttributes(svgAttrsString, ['id', 'version', 'xml', 'xmlns']); - const innerSVG = svg.slice(svgAttrsEndPos + 1, svgCloseTagPos - svgOpenTagStartPos); - - // encode reserved chars in data URL for IE 9-11 (enable if needed) - // const reservedChars = /["#%{}<>]/g; - // const charReplacements = { - // '"': "'", - // '#': '%23', - // '%': '%25', - // '{': '%7B', - // '}': '%7D', - // '<': '%3C', - // '>': '%3E', - // }; - - // encode reserved chars in data URL for modern browsers - const reservedChars = /["#]/g; - const charReplacements = { - '"': "'", - '#': '%23', - }; - const replacer = (char) => charReplacements[char]; - // note: don't have to encode as base64, pure svg is smaller - const dataUrl = 'data:image/svg+xml,' + svg.replace(/\s+/g, ' ').replace(reservedChars, replacer); - - return { - svgAttrs, - innerSVG, - dataUrl, - }; - } - - /** - * Insert inline SVG in HTML. - * Replacing a tag containing the svg source file with the svg element. - * - * @param {Compilation} compilation The instance of the webpack compilation. - */ - static insertInlineSvg(compilation) { - if (this.inlineSvgIssueAssets.size === 0) return; - - const RawSource = compilation.compiler.webpack.sources.RawSource; - - for (const assetFile of this.inlineSvgIssueAssets) { - const asset = compilation.assets[assetFile]; - if (!asset) continue; - - const html = asset.source(); - const headStartPos = html.indexOf('', headStartPos); - const hasHead = headStartPos >= 0 && headEndPos > headStartPos; - let results = []; - - // parse all inline SVG images in HTML - for (let [sourceFile, item] of this.data) { - if (!item.inlineSvg || !item.inlineSvg.assets.has(assetFile)) continue; - results = [...results, ...parseValues(html, sourceFile)]; - } - results.sort(comparePos); - - // compile parsed data to HTML with inlined SVG - const excludeAttrs = ['src', 'href', 'xmlns', 'alt']; - let output = ''; - let pos = 0; - - for (let { value, attrs, tagStartPos, tagEndPos, valueStartPos, valueEndPos } of results) { - const { cache } = this.data.get(value); - - if (hasHead && tagStartPos < headEndPos) { - // in head inline as data URL - output += html.slice(pos, valueStartPos) + cache.dataUrl; - pos = valueEndPos; - } else { - // in body inline as SVG tag - attrs = { ...cache.svgAttrs, ...attrs }; - const attrsString = attrsToString(attrs, [...excludeAttrs, 'title']); - const titleStr = 'title' in attrs ? attrs['title'] : 'alt' in attrs ? attrs['alt'] : null; - const title = titleStr ? `${titleStr}` : ''; - const inlineSvg = `${title}${cache.innerSVG}`; - - output += html.slice(pos, tagStartPos) + inlineSvg; - pos = tagEndPos; - } - } - - output += html.slice(pos); - compilation.assets[assetFile] = new RawSource(output); - } - } -} - -module.exports = AssetInline; diff --git a/src/AssetResource.js b/src/AssetResource.js deleted file mode 100644 index aa618f99..00000000 --- a/src/AssetResource.js +++ /dev/null @@ -1,56 +0,0 @@ -const AssetTrash = require('./AssetTrash'); -const Resolver = require('./Resolver'); - -// supports for responsive-loader -const ResponsiveLoader = require('./Extras/ResponsiveLoader'); - -class AssetResource { - /** - * @param {Object} compiler The webpack compiler object. - */ - static init(compiler) { - // initialize responsible-loader module - ResponsiveLoader.init(compiler); - } - - /** - * @param {Object} module The Webpack module. - * @param {string} issuer The issuer of module resource. - */ - static render(module, issuer) { - const { buildInfo, resource } = module; - let assetFile = buildInfo.filename; - - // resolve SVG filename with fragment, like './icons.svg#home' - if (resource.indexOf('.svg#') > 0) { - if (assetFile.indexOf('.svg#') > 0) { - // fix save file name when filename in Webpack config is like '[name][ext][fragment]' - const [file] = assetFile.split('#'); - buildInfo.filename = file; - } else { - // fix output asset filename used in HTML - const [, fragment] = resource.split('#'); - assetFile += `#${fragment}`; - } - } - - // try to get asset file processed via responsive-loader - const asset = ResponsiveLoader.getAsset(module, issuer); - - if (asset != null) { - Resolver.addResolvedAsset(resource, asset, issuer); - - // save a module and handler for asset that may be used in many styles - Resolver.setModuleHandler(resource, (originalAssetFile, issuer) => ResponsiveLoader.getAsset(module, issuer)); - - // remove an original asset filename generated by Webpack, because responsive-loader generates own filename - AssetTrash.add(assetFile); - return; - } - - // save an asset file that may be used in many files - Resolver.addAsset(resource, assetFile, issuer); - } -} - -module.exports = AssetResource; diff --git a/src/AssetScript.js b/src/AssetScript.js deleted file mode 100644 index 641ce5e9..00000000 --- a/src/AssetScript.js +++ /dev/null @@ -1,299 +0,0 @@ -const path = require('path'); -const AssetEntry = require('./AssetEntry'); -const AssetTrash = require('./AssetTrash'); -const Asset = require('./Asset'); -const { ScriptCollection } = require('./Modules'); -const { isWin, pathToPosix } = require('./Utils'); - -class AssetScript { - static index = {}; - static dependenciesCache = new Map(); - - /** - * Clear cache. - * Called only once, when the plugin is applied. - */ - static clear() { - this.index = {}; - this.dependenciesCache.clear(); - ScriptCollection.clear(); - } - - /** - * Reset settings. - * Called before each compilation after changes by `webpack serv/watch`. - */ - static reset() { - this.index = {}; - ScriptCollection.reset(); - } - - /** - * Add dependency to cache. - * After rebuild the scripts loaded from node modules will be added to compilation from the cache. - * Called after AssetScript.optimizeDependencies. - * - * @param {string} scriptFile - * @param {string} context - * @param {string} issuer - * @param {string} filenameTemplate - * @return {boolean|undefined} - */ - static addDependency({ scriptFile, context, issuer, filenameTemplate }) { - if (this.dependenciesCache.has(scriptFile)) { - // skip already added dependencies by optimizeDependencies - return; - } - - const name = this.getUniqueName(scriptFile); - const entry = { - name, - importFile: scriptFile, - filenameTemplate, - context, - issuer, - }; - - ScriptCollection.setName(scriptFile, name); - - if (AssetEntry.addToCompilation(entry)) { - this.dependenciesCache.set(scriptFile, entry); - return; - } - - return false; - } - - /** - * Add missing node modules to compilation after rebuild. - * Called before AssetScript.addDependency. - */ - static optimizeDependencies() { - for (const entry of this.dependenciesCache.values()) { - AssetEntry.addToCompilation(entry); - } - } - - /** - * @param {{__isScript?:boolean|undefined, resource:string}} module The Webpack chunk module. - * Properties:
- * __isScript is cached state whether the Webpack module was resolved as JavaScript;
- * resource is source file of Webpack module. - * - * @return {boolean} - */ - static isScript(module) { - if (module.__isScript == null) { - let [scriptFile] = module.resource.split('?', 1); - if (isWin) scriptFile = pathToPosix(scriptFile); - module.__isScript = ScriptCollection.has(scriptFile); - } - - return module.__isScript; - } - - /** - * Find source file by its asset file. - * - * @param {string} assetFile The asset file. - * @return {string|null} The source file. - */ - static findSourceFile(assetFile) { - const files = ScriptCollection.getAll().values(); - - for (const { file, chunkFiles } of files) { - if (chunkFiles.has(assetFile)) return file; - } - - return null; - } - - /** - * @param {string} file The source file of script. - * @return {string } Return unique assetFile - */ - static getUniqueName(file) { - const { name } = path.parse(file); - let uniqueName = name; - - // the entrypoint name must be unique, if already exists then add an index: `main` => `main.1`, etc. - if (!AssetEntry.isUnique(name, file)) { - if (!this.index[name]) { - this.index[name] = 1; - } - uniqueName = name + '.' + this.index[name]++; - } - - return uniqueName; - } - - /** - * @param {string} issuer The source file of issuer of the required file. - * @param {string} filename The asset filename of issuer. - */ - static setIssuerFilename(issuer, filename) { - if (!issuer) return; - ScriptCollection.setIssuerFilename(issuer, filename); - } - - /** - * Resolve script file from request. - * - * @param {string} request The asset request. - * @return {string|null} Return null if the request is not a script required in the template. - */ - static resolveFile(request) { - const [resource] = request.split('?', 1); - return ScriptCollection.has(resource) ? resource : null; - } - - /** - * Replace all resolved source filenames with generating output filenames. - * Note: this method must be called in the afterProcessAssets compilation hook. - * - * @param {Compilation} compilation The instance of the webpack compilation. - */ - static substituteOutputFilenames(compilation) { - const { - assets, - assetsInfo, - chunks, - namedChunkGroups, - compiler: { - webpack: { - sources: { RawSource }, - }, - }, - } = compilation; - const usedScripts = new Map(); - const splitFiles = new Set(); - const scripts = ScriptCollection.getAll().entries(); - const LF = ''; - - // in the content, replace the source script file with the output filename - for (let [sourceFile, asset] of scripts) { - const { name } = asset; - const chunkGroup = namedChunkGroups.get(name); - - if (!chunkGroup) { - // prevent error when in HMR mode after removing a script in the template - continue; - } - - const chunkFiles = chunkGroup.getFiles().filter((file) => assetsInfo.get(file).hotModuleReplacement !== true); - - for (const issuer of asset.issuers) { - for (const issuerAssetFilename of issuer.assets.keys()) { - if (!assets.hasOwnProperty(issuerAssetFilename)) { - // let's show an original error - continue; - } - - const issuerAssets = issuer.assets.get(issuerAssetFilename); - const content = assets[issuerAssetFilename].source(); - let newContent = content; - - // replace source filename with asset filename - if (chunkFiles.length === 1) { - const chunkFile = chunkFiles.values().next().value; - const assetFile = Asset.getOutputFile(chunkFile, issuerAssetFilename); - - if (asset.inline === true) { - const source = assets[chunkFile].source(); - const pos = content.indexOf(sourceFile); - if (pos > -1) { - // note: the str.replace(searchValue, replaceValue) is buggy when the replaceValue contains chars chain '$$' - newContent = content.slice(0, pos) + source + content.slice(pos + sourceFile.length); - // note: the keys in compilation.assets are exact the chunkFile - AssetTrash.add(chunkFile); - } - } else { - newContent = content.replace(sourceFile, assetFile); - // set relation between source file and generated output filenames - asset.chunkFiles.add(chunkFile); - // set relation between output issuer file and generated asset chunks used in issuer - issuerAssets.push(assetFile); - splitFiles.add(chunkFile); - } - } else { - // init script cache by current issuer - if (!usedScripts.has(issuerAssetFilename)) { - usedScripts.set(issuerAssetFilename, new Set()); - } - - const chunkScripts = usedScripts.get(issuerAssetFilename); - // extract original script tag with all attributes for usage it as template for chunks - let srcStartPos = content.indexOf(sourceFile); - let srcEndPos = srcStartPos + sourceFile.length; - let tagStartPos = srcStartPos; - let tagEndPos = srcEndPos; - let scriptTags = ''; - - while (tagStartPos >= 0 && content.charAt(--tagStartPos) !== '<') {} - tagEndPos = content.indexOf('', tagEndPos) + 9; - - if (asset.inline === true) { - const tmplScriptStart = ''; - - // generate additional scripts of chunks - for (let chunkFile of chunkFiles) { - // ignore already injected common used script - if (chunkScripts.has(chunkFile)) continue; - - const source = assets[chunkFile].source(); - if (scriptTags) scriptTags += LF; - scriptTags += tmplScriptStart + source + tmplScriptEnd; - chunkScripts.add(chunkFile); - AssetTrash.add(chunkFile); - } - } else { - const tmplScriptStart = content.slice(tagStartPos, srcStartPos); - const tmplScriptEnd = content.slice(srcEndPos, tagEndPos); - - // generate additional scripts of chunks - for (let chunkFile of chunkFiles) { - // ignore already injected common used script - if (chunkScripts.has(chunkFile)) continue; - - const assetFile = Asset.getOutputFile(chunkFile, issuerAssetFilename); - if (scriptTags) scriptTags += LF; - scriptTags += tmplScriptStart + assetFile + tmplScriptEnd; - chunkScripts.add(chunkFile); - splitFiles.add(chunkFile); - // set relation between output issuer file and generated asset chunks used in issuer - issuerAssets.push(assetFile); - } - - // set relation between source file and generated output filenames - chunkFiles.forEach(asset.chunkFiles.add, asset.chunkFiles); - } - - // inject - - - -

Home

- - +Test +

Home

\ No newline at end of file diff --git a/test/cases/inline-script-query/expected/assets/js/main.a6e9795a.js b/test/cases/inline-script-query/expected/js/main.c6fe1e02.js similarity index 61% rename from test/cases/inline-script-query/expected/assets/js/main.a6e9795a.js rename to test/cases/inline-script-query/expected/js/main.c6fe1e02.js index 4b3beb3d..e0b8215e 100644 --- a/test/cases/inline-script-query/expected/assets/js/main.a6e9795a.js +++ b/test/cases/inline-script-query/expected/js/main.c6fe1e02.js @@ -1 +1 @@ -(()=>{"use strict";var e,r={199:(e,r,o)=>{o.d(r,{k:()=>t});const t=(e,r)=>e+r}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var s=o[e]={exports:{}};return r[e](s,s.exports,t),s.exports}t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e=t(199),console.log(">> file main.js",(0,e.k)(1,2))})(); \ No newline at end of file +(()=>{"use strict";var e,r={116:(e,r,o)=>{o.d(r,{Q:()=>t});const t=(e,r)=>e+r}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var s=o[e]={exports:{}};return r[e](s,s.exports,t),s.exports}t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e=t(116),console.log(">> file main.js",(0,e.Q)(1,2))})(); \ No newline at end of file diff --git a/test/cases/inline-script-query/src/views/index.pug b/test/cases/inline-script-query/src/views/index.pug index 8472ab08..708bc399 100644 --- a/test/cases/inline-script-query/src/views/index.pug +++ b/test/cases/inline-script-query/src/views/index.pug @@ -4,6 +4,6 @@ html //- load script as file script(src=require('Scripts/main.js') defer='defer') //- inline script - script=require('Scripts/inline-main.js?inline') + script(src=require('Scripts/inline-main.js?inline')) body - h1 Home \ No newline at end of file + h1 Home diff --git a/test/cases/inline-script-query/webpack.config.js b/test/cases/inline-script-query/webpack.config.js index ff968fd3..31488728 100644 --- a/test/cases/inline-script-query/webpack.config.js +++ b/test/cases/inline-script-query/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -22,17 +22,8 @@ module.exports = { new PugPlugin({ pretty: true, // test inline script with pretty js: { - filename: 'assets/js/[name].[contenthash:8].js', + filename: 'js/[name].[contenthash:8].js', }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], - }, }; diff --git a/test/cases/inline-style-asset-source-as-inline-and-file/expected/index.html b/test/cases/inline-style-asset-source-as-inline-and-file/expected/index.html index 7b2ca6d2..3c3c21d2 100644 --- a/test/cases/inline-style-asset-source-as-inline-and-file/expected/index.html +++ b/test/cases/inline-style-asset-source-as-inline-and-file/expected/index.html @@ -1 +1,2 @@ -

Hello World!

\ No newline at end of file + +

Hello World!

\ No newline at end of file diff --git a/test/cases/inline-style-asset-source-as-inline-and-file/src/views/index.pug b/test/cases/inline-style-asset-source-as-inline-and-file/src/views/index.pug index 1c3eefb3..4c3854d3 100644 --- a/test/cases/inline-style-asset-source-as-inline-and-file/src/views/index.pug +++ b/test/cases/inline-style-asset-source-as-inline-and-file/src/views/index.pug @@ -2,7 +2,12 @@ html head //- load CSS as file link(href=require('Styles/style.css') rel='stylesheet') + //- inline CSS - style=require('Styles/inline-style.css?raw') + //- BREAKING CHANGE: since version 5.x the old syntax of version 4.x is not supported: + //- style=require('Styles/inline-style.css?raw') + + //- Since version 5.x to inline CSS use the NEW syntax: + link(rel='stylesheet' href=require('Styles/inline-style.css?inline')) body - h1 Hello World! \ No newline at end of file + h1 Hello World! diff --git a/test/cases/inline-style-asset-source-as-inline-and-file/webpack.config.js b/test/cases/inline-style-asset-source-as-inline-and-file/webpack.config.js index 89596952..96879a23 100644 --- a/test/cases/inline-style-asset-source-as-inline-and-file/webpack.config.js +++ b/test/cases/inline-style-asset-source-as-inline-and-file/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,33 +19,14 @@ module.exports = { index: './src/views/index.pug', }, - plugins: [ - // zero config - new PugPlugin(), - ], + plugins: [new PugPlugin()], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - { test: /\.(css|sass|scss)$/, - oneOf: [ - // inline styles in HTML - { - resourceQuery: /^\?raw/u, // match exact first URL query `?raw` - type: 'asset/source', - use: ['css-loader', 'sass-loader'], - }, - // load styles as file - { - use: ['css-loader', 'sass-loader'], - }, - ], + use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/inline-style-asset-source-with-source-map/expected/index.html b/test/cases/inline-style-asset-source-with-source-map/expected/index.html index f3f685a6..366187da 100644 --- a/test/cases/inline-style-asset-source-with-source-map/expected/index.html +++ b/test/cases/inline-style-asset-source-with-source-map/expected/index.html @@ -1,3 +1,3 @@

Hello World!

\ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,IntcInZlcnNpb25cIjozLFwiZmlsZVwiOlwiaW5kZXguaHRtbF9zdHlsZS5jc3NcIixcIm1hcHBpbmdzXCI6XCJBQUFBLEdBQ0UsU0FDRlwiLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUuY3NzXCJdLFwic291cmNlc0NvbnRlbnRcIjpbXCJoMSB7XFxuICBjb2xvcjogcmVkO1xcbn1cIl0sXCJuYW1lc1wiOltdLFwic291cmNlUm9vdFwiOlwiXCJ9Ig==*/ +

Hello World!

\ No newline at end of file diff --git a/test/cases/inline-style-asset-source-with-source-map/src/index.pug b/test/cases/inline-style-asset-source-with-source-map/src/index.pug index 8dcc45db..f1e52047 100644 --- a/test/cases/inline-style-asset-source-with-source-map/src/index.pug +++ b/test/cases/inline-style-asset-source-with-source-map/src/index.pug @@ -1,5 +1,9 @@ html head - style=require('./style.css?raw') + //- BREAKING CHANGE: since version 5.x the old syntax of version 4.x is not supported: + //- style=require('./style.css?raw') + + //- Since version 5.x to inline CSS use the NEW syntax: + link(rel='stylesheet' href=require('./style.css?inline')) body - h1 Hello World! \ No newline at end of file + h1 Hello World! diff --git a/test/cases/inline-style-asset-source-with-source-map/webpack.config.js b/test/cases/inline-style-asset-source-with-source-map/webpack.config.js index 9f997f76..35fa423d 100644 --- a/test/cases/inline-style-asset-source-with-source-map/webpack.config.js +++ b/test/cases/inline-style-asset-source-with-source-map/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -13,25 +13,12 @@ module.exports = { index: './src/index.pug', }, - plugins: [ - // zero config - new PugPlugin(), - ], + plugins: [new PugPlugin()], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { test: /\.css$/, - resourceQuery: /raw/, - type: 'asset/source', use: [ { loader: 'css-loader', @@ -49,4 +36,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/inline-style-asset-source/expected/index.html b/test/cases/inline-style-asset-source/expected/index.html index 4f53d0a9..70de3b74 100644 --- a/test/cases/inline-style-asset-source/expected/index.html +++ b/test/cases/inline-style-asset-source/expected/index.html @@ -1 +1,2 @@ -

Hello World!

\ No newline at end of file + +

Hello World!

\ No newline at end of file diff --git a/test/cases/inline-style-asset-source/src/index.pug b/test/cases/inline-style-asset-source/src/index.pug index 8dcc45db..f1e52047 100644 --- a/test/cases/inline-style-asset-source/src/index.pug +++ b/test/cases/inline-style-asset-source/src/index.pug @@ -1,5 +1,9 @@ html head - style=require('./style.css?raw') + //- BREAKING CHANGE: since version 5.x the old syntax of version 4.x is not supported: + //- style=require('./style.css?raw') + + //- Since version 5.x to inline CSS use the NEW syntax: + link(rel='stylesheet' href=require('./style.css?inline')) body - h1 Hello World! \ No newline at end of file + h1 Hello World! diff --git a/test/cases/inline-style-asset-source/webpack.config.js b/test/cases/inline-style-asset-source/webpack.config.js index eac4f078..841a0375 100644 --- a/test/cases/inline-style-asset-source/webpack.config.js +++ b/test/cases/inline-style-asset-source/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -12,25 +12,12 @@ module.exports = { index: './src/index.pug', }, - plugins: [ - // zero config - new PugPlugin(), - ], + plugins: [new PugPlugin()], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { test: /\.css$/, - resourceQuery: /raw/, - type: 'asset/source', use: [ { loader: 'css-loader', @@ -48,4 +35,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css b/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css index ba212ac9..a6257a68 100644 --- a/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css +++ b/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css @@ -1,2 +1,2 @@ h1{color:red}.img-file-style{border:2px solid lime;width:160px;height:130px;background-image:url(../img/image.697ef306.png)} -/*# sourceMappingURL=main.36bbfae6.css.map */ \ No newline at end of file +/*# sourceMappingURL=main.36bbfae6.css.map*/ \ No newline at end of file diff --git a/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css.map b/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css.map index 5e570954..1f6dee0d 100644 --- a/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css.map +++ b/test/cases/inline-style-query-with-source-map/expected/assets/css/main.36bbfae6.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/assets/styles/main.css"],"names":[],"mappings":"AAAA,GACE,SAAA,CAIF,gBACE,qBAAA,CACA,WAAA,CACA,YAAA,CACA,wDAAA","sourcesContent":["h1 {\n color: red;\n}\n\n/* test resolve same image in other issuer with different path */\n.img-file-style {\n border: 2px solid lime;\n width: 160px;\n height: 130px;\n background-image: url(\"Images/image.png\");\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/main.36bbfae6.css","mappings":"AAAA,GACE,UAIF,gBACE,sBACA,YACA,aACA","sources":["webpack:///./src/assets/styles/main.css"],"sourcesContent":["h1 {\n color: red;\n}\n\n/* test resolve same image in other issuer with different path */\n.img-file-style {\n border: 2px solid lime;\n width: 160px;\n height: 130px;\n background-image: url(\"Images/image.png\");\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/inline-style-query-with-source-map/expected/index.html b/test/cases/inline-style-query-with-source-map/expected/index.html index 40dff21a..424b8bc7 100644 --- a/test/cases/inline-style-query-with-source-map/expected/index.html +++ b/test/cases/inline-style-query-with-source-map/expected/index.html @@ -1,3 +1,3 @@

Home

\ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,IntcInZlcnNpb25cIjozLFwiZmlsZVwiOlwiaW5kZXguaHRtbF9hc3NldHMtY3NzLWlubGluZS1zdHlsZS45MmU4MGFmOS5jc3NcIixcIm1hcHBpbmdzXCI6XCJBQUFBLEdBQ0UsZUFHRixrQkFDRSx5QkFDQSxZQUNBLGFBQ0FcIixcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9zdHlsZXMvaW5saW5lLXN0eWxlLmNzc1wiXSxcInNvdXJjZXNDb250ZW50XCI6W1wiaDEge1xcbiAgZm9udC1zaXplOiAyMHB4O1xcbn1cXG5cXG4uaW1nLWlubGluZS1zdHlsZSB7XFxuICBib3JkZXI6IDJweCBzb2xpZCBvcmFuZ2VyZWQ7XFxuICB3aWR0aDogMTYwcHg7XFxuICBoZWlnaHQ6IDEzMHB4O1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJJbWFnZXMvaW1hZ2UucG5nXFxcIik7XFxufVwiXSxcIm5hbWVzXCI6W10sXCJzb3VyY2VSb290XCI6XCJcIn0i*/ +

Home

\ No newline at end of file diff --git a/test/cases/inline-style-query-with-source-map/expected/pages/about.html b/test/cases/inline-style-query-with-source-map/expected/pages/about.html index 4f7b3d37..e757b827 100644 --- a/test/cases/inline-style-query-with-source-map/expected/pages/about.html +++ b/test/cases/inline-style-query-with-source-map/expected/pages/about.html @@ -1,3 +1,3 @@

About

\ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,IntcInZlcnNpb25cIjozLFwiZmlsZVwiOlwicGFnZXMtYWJvdXQuaHRtbF9hc3NldHMtY3NzLWlubGluZS1zdHlsZS45MmU4MGFmOS5jc3NcIixcIm1hcHBpbmdzXCI6XCJBQUFBLEdBQ0UsZUFHRixrQkFDRSx5QkFDQSxZQUNBLGFBQ0FcIixcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9zdHlsZXMvaW5saW5lLXN0eWxlLmNzc1wiXSxcInNvdXJjZXNDb250ZW50XCI6W1wiaDEge1xcbiAgZm9udC1zaXplOiAyMHB4O1xcbn1cXG5cXG4uaW1nLWlubGluZS1zdHlsZSB7XFxuICBib3JkZXI6IDJweCBzb2xpZCBvcmFuZ2VyZWQ7XFxuICB3aWR0aDogMTYwcHg7XFxuICBoZWlnaHQ6IDEzMHB4O1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJJbWFnZXMvaW1hZ2UucG5nXFxcIik7XFxufVwiXSxcIm5hbWVzXCI6W10sXCJzb3VyY2VSb290XCI6XCJcIn0i*/ +

About

\ No newline at end of file diff --git a/test/cases/inline-style-query-with-source-map/src/views/about.pug b/test/cases/inline-style-query-with-source-map/src/views/about.pug index 3ca5f9c9..d856c52f 100644 --- a/test/cases/inline-style-query-with-source-map/src/views/about.pug +++ b/test/cases/inline-style-query-with-source-map/src/views/about.pug @@ -3,8 +3,8 @@ html //- load CSS as file link(href=require('Styles/main.css') rel='stylesheet') //- inline CSS - style=require('Styles/inline-style.css?inline') + link(rel='stylesheet' href=require('Styles/inline-style.css?inline')) body h1 About .img-file-style - .img-inline-style \ No newline at end of file + .img-inline-style diff --git a/test/cases/inline-style-query-with-source-map/src/views/index.pug b/test/cases/inline-style-query-with-source-map/src/views/index.pug index af135b66..c08a7a29 100644 --- a/test/cases/inline-style-query-with-source-map/src/views/index.pug +++ b/test/cases/inline-style-query-with-source-map/src/views/index.pug @@ -3,8 +3,8 @@ html //- load CSS as file link(href=require('Styles/main.css') rel='stylesheet') //- inline CSS - style=require('Styles/inline-style.css?inline') + link(rel='stylesheet' href=require('Styles/inline-style.css?inline')) body h1 Home .img-file-style - .img-inline-style \ No newline at end of file + .img-inline-style diff --git a/test/cases/inline-style-query-with-source-map/webpack.config.js b/test/cases/inline-style-query-with-source-map/webpack.config.js index a82054a3..b2ad609d 100644 --- a/test/cases/inline-style-query-with-source-map/webpack.config.js +++ b/test/cases/inline-style-query-with-source-map/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -31,13 +31,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -53,4 +47,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/inline-style-query/expected/index.html b/test/cases/inline-style-query/expected/index.html index 0094aa5f..8aad7ada 100644 --- a/test/cases/inline-style-query/expected/index.html +++ b/test/cases/inline-style-query/expected/index.html @@ -1 +1,2 @@ -

Home

\ No newline at end of file + +

Home

\ No newline at end of file diff --git a/test/cases/inline-style-query/expected/pages/about.html b/test/cases/inline-style-query/expected/pages/about.html index 0491e57b..ffb48fb5 100644 --- a/test/cases/inline-style-query/expected/pages/about.html +++ b/test/cases/inline-style-query/expected/pages/about.html @@ -1 +1,2 @@ -

About

\ No newline at end of file + +

About

\ No newline at end of file diff --git a/test/cases/inline-style-query/src/views/about.pug b/test/cases/inline-style-query/src/views/about.pug index 3ca5f9c9..d856c52f 100644 --- a/test/cases/inline-style-query/src/views/about.pug +++ b/test/cases/inline-style-query/src/views/about.pug @@ -3,8 +3,8 @@ html //- load CSS as file link(href=require('Styles/main.css') rel='stylesheet') //- inline CSS - style=require('Styles/inline-style.css?inline') + link(rel='stylesheet' href=require('Styles/inline-style.css?inline')) body h1 About .img-file-style - .img-inline-style \ No newline at end of file + .img-inline-style diff --git a/test/cases/inline-style-query/src/views/index.pug b/test/cases/inline-style-query/src/views/index.pug index af135b66..c08a7a29 100644 --- a/test/cases/inline-style-query/src/views/index.pug +++ b/test/cases/inline-style-query/src/views/index.pug @@ -3,8 +3,8 @@ html //- load CSS as file link(href=require('Styles/main.css') rel='stylesheet') //- inline CSS - style=require('Styles/inline-style.css?inline') + link(rel='stylesheet' href=require('Styles/inline-style.css?inline')) body h1 Home .img-file-style - .img-inline-style \ No newline at end of file + .img-inline-style diff --git a/test/cases/inline-style-query/webpack.config.js b/test/cases/inline-style-query/webpack.config.js index b131a915..63201448 100644 --- a/test/cases/inline-style-query/webpack.config.js +++ b/test/cases/inline-style-query/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -30,13 +30,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -52,4 +46,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/issue-0-base-template/expected/assets/css/style.47f4da55.css b/test/cases/issue-0-base-template/expected/css/style.47f4da55.css similarity index 100% rename from test/cases/issue-0-base-template/expected/assets/css/style.47f4da55.css rename to test/cases/issue-0-base-template/expected/css/style.47f4da55.css diff --git a/test/cases/issue-0-base-template/expected/assets/img/image.697ef306.png b/test/cases/issue-0-base-template/expected/img/image.697ef306.png similarity index 100% rename from test/cases/issue-0-base-template/expected/assets/img/image.697ef306.png rename to test/cases/issue-0-base-template/expected/img/image.697ef306.png diff --git a/test/cases/issue-0-base-template/expected/index.html b/test/cases/issue-0-base-template/expected/index.html index fe5d3347..743d4869 100644 --- a/test/cases/issue-0-base-template/expected/index.html +++ b/test/cases/issue-0-base-template/expected/index.html @@ -1 +1 @@ -Test

Hello World!

\ No newline at end of file +Test

Hello World!

\ No newline at end of file diff --git a/test/cases/issue-0-base-template/expected/assets/js/main.34cb596f.js b/test/cases/issue-0-base-template/expected/js/main.5317c1f6.js similarity index 100% rename from test/cases/issue-0-base-template/expected/assets/js/main.34cb596f.js rename to test/cases/issue-0-base-template/expected/js/main.5317c1f6.js diff --git a/test/cases/issue-0-base-template/src/index.pug b/test/cases/issue-0-base-template/src/index.pug index bb846d5f..a10a2182 100644 --- a/test/cases/issue-0-base-template/src/index.pug +++ b/test/cases/issue-0-base-template/src/index.pug @@ -1,8 +1,8 @@ html head title Test - link(href=require('./style.css') rel="stylesheet") - script(src=require('./main.js') defer="defer") + link(href='./style.css' rel="stylesheet") + script(src='./main.js' defer="defer") body - h1 Hello World! - img(src=require('./image.png')) + h1 Hello World! + img(src='./image.png') diff --git a/test/cases/issue-0-base-template/webpack.config.js b/test/cases/issue-0-base-template/webpack.config.js index 44a43095..ac26e4dc 100644 --- a/test/cases/issue-0-base-template/webpack.config.js +++ b/test/cases/issue-0-base-template/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -8,31 +8,26 @@ module.exports = { path: path.join(__dirname, 'dist/'), }, - entry: { - index: './src/index.pug', - }, - plugins: [ new PugPlugin({ + entry: { + index: './src/index.pug', + }, + js: { - // output filename of extracted JS - filename: 'assets/js/[name].[contenthash:8].js', + // JS output filename + filename: 'js/[name].[contenthash:8].js', }, css: { - // output filename of extracted CSS - filename: 'assets/css/[name].[contenthash:8].css', + // CSS output filename + filename: 'css/[name].[contenthash:8].css', }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - { test: /.css$/, use: ['css-loader'], @@ -42,7 +37,7 @@ module.exports = { test: /.(png|jpe?g|ico|svg)/, type: 'asset/resource', generator: { - filename: 'assets/img/[name].[hash:8][ext]', + filename: 'img/[name].[hash:8][ext]', }, }, ], diff --git a/test/cases/js-import-image/expected/assets/js/main.e147db14.js b/test/cases/js-import-image/expected/assets/js/main.539c282d.js similarity index 100% rename from test/cases/js-import-image/expected/assets/js/main.e147db14.js rename to test/cases/js-import-image/expected/assets/js/main.539c282d.js diff --git a/test/cases/js-import-image/expected/index.html b/test/cases/js-import-image/expected/index.html index c8b2a88f..60817843 100644 --- a/test/cases/js-import-image/expected/index.html +++ b/test/cases/js-import-image/expected/index.html @@ -1 +1 @@ -Test

Hello World!

\ No newline at end of file +Test

Hello World!

\ No newline at end of file diff --git a/test/cases/js-import-image/webpack.config.js b/test/cases/js-import-image/webpack.config.js index f5a7de35..d39d2ebc 100644 --- a/test/cases/js-import-image/webpack.config.js +++ b/test/cases/js-import-image/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,11 +27,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - { test: /.css$/, use: ['css-loader'], diff --git a/test/cases/js-tmpl-entry-js/expected/main.js b/test/cases/js-tmpl-entry-js/expected/main.js index a7a57c71..aeacb09c 100644 --- a/test/cases/js-tmpl-entry-js/expected/main.js +++ b/test/cases/js-tmpl-entry-js/expected/main.js @@ -1 +1 @@ -(()=>{var e={661:e=>{var r={"pug-compile":""},t=/["&<>]/;e.exports=function(e){var n,o="",a={...r,...e};return function(e){o=o+"

Component - "+function(e){var r=""+e,n=t.exec(r);if(!n)return e;var o,a,u,i="";for(o=n.index,a=0;o

included component partial

"}.call(this,"name"in a?a.name:"undefined"!=typeof name?name:void 0),o}},186:(e,r,t)=>{"use strict";t.d(r,{Z:()=>o});var n=t(661);const o=t.n(n)()({name:"MyComponent"})}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var a=r[n]={exports:{}};return e[n](a,a.exports,t),a.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";var e=t(186);document.getElementById("root").innerHTML=e.Z})()})(); \ No newline at end of file +(()=>{var e={147:e=>{var t=/["&<>]/,n={"pug-compile":!0};e.exports=e=>function(e){var n,r="",a=e||{};return function(e){r=r+"

Component - "+function(e){var n=""+e,r=t.exec(n);if(!r)return e;var a,o,i,u="";for(a=r.index,o=0;a

included component partial

"}.call(this,"name"in a?a.name:"undefined"!=typeof name?name:void 0),r}(Object.assign(n,e))},747:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(147);const a=n.n(r)()({name:"MyComponent"})}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(747);document.getElementById("root").innerHTML=e.A})()})(); \ No newline at end of file diff --git a/test/cases/js-tmpl-entry-js/expected/myComponent.js b/test/cases/js-tmpl-entry-js/expected/myComponent.js index ffa4ff6f..577f8224 100644 --- a/test/cases/js-tmpl-entry-js/expected/myComponent.js +++ b/test/cases/js-tmpl-entry-js/expected/myComponent.js @@ -1 +1 @@ -(()=>{var e={661:e=>{var r={"pug-compile":""},n=/["&<>]/;e.exports=function(e){var t,a="",o={...r,...e};return function(e){a=a+"

Component - "+function(e){var r=""+e,t=n.exec(r);if(!t)return e;var a,o,u,i="";for(a=t.index,o=0;a

included component partial

"}.call(this,"name"in o?o.name:"undefined"!=typeof name?name:void 0),a}}},r={};function n(t){var a=r[t];if(void 0!==a)return a.exports;var o=r[t]={exports:{}};return e[t](o,o.exports,n),o.exports}n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";var e=n(661);n.n(e)()({name:"MyComponent"})})()})(); \ No newline at end of file +(()=>{var e={147:e=>{var r=/["&<>]/,n={"pug-compile":!0};e.exports=e=>function(e){var n,t="",a=e||{};return function(e){t=t+"

Component - "+function(e){var n=""+e,t=r.exec(n);if(!t)return e;var a,o,i,u="";for(a=t.index,o=0;a

included component partial

"}.call(this,"name"in a?a.name:"undefined"!=typeof name?name:void 0),t}(Object.assign(n,e))}},r={};function n(t){var a=r[t];if(void 0!==a)return a.exports;var o=r[t]={exports:{}};return e[t](o,o.exports,n),o.exports}n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";var e=n(147);n.n(e)()({name:"MyComponent"})})()})(); \ No newline at end of file diff --git a/test/cases/js-tmpl-entry-js/webpack.config.js b/test/cases/js-tmpl-entry-js/webpack.config.js index 8710a449..a9a665a6 100644 --- a/test/cases/js-tmpl-entry-js/webpack.config.js +++ b/test/cases/js-tmpl-entry-js/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -18,13 +18,4 @@ module.exports = { plugins: [ new PugPlugin(), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], - }, }; diff --git a/test/cases/msg-deprecate-option-extractCss/webpack.config.js b/test/cases/msg-deprecate-option-extractCss/webpack.config.js index 2dffc7d4..06aef172 100644 --- a/test/cases/msg-deprecate-option-extractCss/webpack.config.js +++ b/test/cases/msg-deprecate-option-extractCss/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -24,14 +24,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, { test: /\.(css|sass|scss)$/, use: ['css-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/msg-exception-execute-postprocess/webpack.config.js b/test/cases/msg-exception-execute-postprocess/webpack.config.js index de998329..e710dd45 100644 --- a/test/cases/msg-exception-execute-postprocess/webpack.config.js +++ b/test/cases/msg-exception-execute-postprocess/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -15,26 +15,9 @@ module.exports = { plugins: [ new PugPlugin({ - modules: [ - { - test: /\.(pug)$/, - postprocess: () => { - throw new Error('issue an error'); - }, - }, - ], + postprocess: () => { + throw new Error('issue an error'); + }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/msg-exception-execute-template/webpack.config.js b/test/cases/msg-exception-execute-template/webpack.config.js index f93e7d78..ae43992d 100644 --- a/test/cases/msg-exception-execute-template/webpack.config.js +++ b/test/cases/msg-exception-execute-template/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -16,15 +16,5 @@ module.exports = { plugins: [new PugPlugin({})], - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - ], - }, -}; \ No newline at end of file + +}; diff --git a/test/cases/msg-exception-import-css-rule/webpack.config.js b/test/cases/msg-exception-import-css-rule/webpack.config.js index bdaea200..65e11468 100644 --- a/test/cases/msg-exception-import-css-rule/webpack.config.js +++ b/test/cases/msg-exception-import-css-rule/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'development', @@ -17,13 +17,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.css$/, use: [ @@ -38,4 +32,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/msg-exception-multiple-chunks-same-filename/webpack.config.js b/test/cases/msg-exception-multiple-chunks-same-filename/webpack.config.js index 9cc0df56..c46e6017 100644 --- a/test/cases/msg-exception-multiple-chunks-same-filename/webpack.config.js +++ b/test/cases/msg-exception-multiple-chunks-same-filename/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'development', @@ -31,17 +31,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - use: [ - { - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, + { test: /\.(css)$/, @@ -49,4 +39,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/msg-exception-option-modules/src/index.pug b/test/cases/msg-exception-option-modules/src/index.pug deleted file mode 100644 index b37a0d7c..00000000 --- a/test/cases/msg-exception-option-modules/src/index.pug +++ /dev/null @@ -1 +0,0 @@ -h1 Hello World! \ No newline at end of file diff --git a/test/cases/msg-exception-option-modules/webpack.config.js b/test/cases/msg-exception-option-modules/webpack.config.js deleted file mode 100644 index 7faef6e7..00000000 --- a/test/cases/msg-exception-option-modules/webpack.config.js +++ /dev/null @@ -1,34 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/index.pug', - }, - - plugins: [ - new PugPlugin({ - // test: modules must be the array of ModuleOptions, also not any object - modules: {}, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/msg-exception-resolve-file/webpack.config.js b/test/cases/msg-exception-resolve-file/webpack.config.js index 2f168207..40a59ec5 100644 --- a/test/cases/msg-exception-resolve-file/webpack.config.js +++ b/test/cases/msg-exception-resolve-file/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -17,20 +17,4 @@ module.exports = { }, plugins: [new PugPlugin()], - - module: { - rules: [ - { - test: /\.pug$/, - use: [ - { - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file1.js b/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file1.js deleted file mode 100644 index 5e721623..00000000 --- a/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file1.js +++ /dev/null @@ -1 +0,0 @@ -console.log('>> file 1'); \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file2.js b/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file2.js deleted file mode 100644 index 36555082..00000000 --- a/test/cases/msg-warning-duplicate-scripts-alias/src/assets/scripts/file2.js +++ /dev/null @@ -1 +0,0 @@ -console.log('>> file 2'); \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts-alias/src/views/index.pug b/test/cases/msg-warning-duplicate-scripts-alias/src/views/index.pug deleted file mode 100644 index 92fed81f..00000000 --- a/test/cases/msg-warning-duplicate-scripts-alias/src/views/index.pug +++ /dev/null @@ -1,9 +0,0 @@ -html - head - script(src=require('Scripts/file1')) - - //- WARNING: second same script WILL NOT be resolved in generated HTML - script(src=require('Scripts/file2.js?q=123')) - script(src=require('../assets/scripts/file2')) - body - h1 Hello Pug! \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts-alias/webpack.config.js b/test/cases/msg-warning-duplicate-scripts-alias/webpack.config.js deleted file mode 100644 index 742e3ca4..00000000 --- a/test/cases/msg-warning-duplicate-scripts-alias/webpack.config.js +++ /dev/null @@ -1,42 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - devtool: false, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - resolve: { - alias: { - Scripts: path.join(__dirname, 'src/assets/scripts/'), - }, - }, - - entry: { - index: './src/views/index.pug', - }, - - plugins: [ - new PugPlugin({ - js: { - filename: 'assets/js/[name].[contenthash:8].js', - }, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts/src/index.pug b/test/cases/msg-warning-duplicate-scripts/src/index.pug deleted file mode 100644 index 56eb2c72..00000000 --- a/test/cases/msg-warning-duplicate-scripts/src/index.pug +++ /dev/null @@ -1,6 +0,0 @@ -html - head - script(src=require('./main.js')) - script(src=require('./main.js')) - body - h1 Hello World! \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts/src/main.js b/test/cases/msg-warning-duplicate-scripts/src/main.js deleted file mode 100644 index 1eece1b6..00000000 --- a/test/cases/msg-warning-duplicate-scripts/src/main.js +++ /dev/null @@ -1 +0,0 @@ -console.log('Main'); \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-scripts/webpack.config.js b/test/cases/msg-warning-duplicate-scripts/webpack.config.js deleted file mode 100644 index 76543e3a..00000000 --- a/test/cases/msg-warning-duplicate-scripts/webpack.config.js +++ /dev/null @@ -1,36 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - devtool: false, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/index.pug', - }, - - plugins: [ - new PugPlugin({ - js: { - filename: 'js/[name].js', - }, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-styles/src/assets/styles/file2.scss b/test/cases/msg-warning-duplicate-styles/src/assets/styles/file2.scss deleted file mode 100644 index 768081a2..00000000 --- a/test/cases/msg-warning-duplicate-styles/src/assets/styles/file2.scss +++ /dev/null @@ -1,3 +0,0 @@ -h1 { - color: blue; -} \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-styles/src/views/index.pug b/test/cases/msg-warning-duplicate-styles/src/views/index.pug deleted file mode 100644 index f35ba94a..00000000 --- a/test/cases/msg-warning-duplicate-styles/src/views/index.pug +++ /dev/null @@ -1,9 +0,0 @@ -html - head - link(href=require('Styles/file1.scss') rel='stylesheet') - - //- WARNING: duplicate styles - link(href=require('Styles/file2.scss') rel='stylesheet') - link(href=require('../assets/styles/file2.scss') rel='stylesheet') - body - h1 Hello Pug! \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-styles/webpack.config.js b/test/cases/msg-warning-duplicate-styles/webpack.config.js deleted file mode 100644 index d4cb1b39..00000000 --- a/test/cases/msg-warning-duplicate-styles/webpack.config.js +++ /dev/null @@ -1,46 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - devtool: false, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - resolve: { - alias: { - Styles: path.join(__dirname, 'src/assets/styles/'), - }, - }, - - entry: { - index: './src/views/index.pug', - }, - - plugins: [ - new PugPlugin({ - css: { - filename: 'assets/css/[name].[contenthash:8].css', - }, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { - test: /\.(css|sass|scss)$/, - use: ['css-loader', 'sass-loader'], - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/msg-warning-duplicate-styles/src/assets/styles/file1.scss b/test/cases/multiple-chunks-same-filename/expected/assets/css/main.b72ffdcd.css similarity index 100% rename from test/cases/msg-warning-duplicate-styles/src/assets/styles/file1.scss rename to test/cases/multiple-chunks-same-filename/expected/assets/css/main.b72ffdcd.css diff --git a/test/cases/multiple-chunks-same-filename/webpack.config.js b/test/cases/multiple-chunks-same-filename/webpack.config.js index 10b47701..25acab7c 100644 --- a/test/cases/multiple-chunks-same-filename/webpack.config.js +++ b/test/cases/multiple-chunks-same-filename/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'development', @@ -30,17 +30,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - use: [ - { - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, + { test: /\.(css)$/, @@ -48,4 +38,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-custom-path/webpack.config.js b/test/cases/option-custom-path/webpack.config.js index 4895e9cb..2fc31d24 100644 --- a/test/cases/option-custom-path/webpack.config.js +++ b/test/cases/option-custom-path/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const templatePath = path.join(__dirname, 'src/views/'); const htmlPath = path.join(__dirname, 'dist/www/'); @@ -39,13 +39,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(png|jpg|jpeg)$/, type: 'asset/resource', diff --git a/test/cases/option-default-path/webpack.config.js b/test/cases/option-default-path/webpack.config.js index d8417231..997e9f75 100644 --- a/test/cases/option-default-path/webpack.config.js +++ b/test/cases/option-default-path/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -34,13 +34,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(png|jpg|jpeg)$/, type: 'asset/resource', diff --git a/test/cases/option-enabled/expected/index.js b/test/cases/option-enabled/expected/index.js deleted file mode 100644 index abef370c..00000000 --- a/test/cases/option-enabled/expected/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var r={545:r=>{r.exports="

Hello World!

"}},o={};!function e(t){var p=o[t];if(void 0!==p)return p.exports;var s=o[t]={exports:{}};return r[t](s,s.exports,e),s.exports}(545)})(); \ No newline at end of file diff --git a/test/cases/option-enabled/src/index.pug b/test/cases/option-enabled/src/index.pug deleted file mode 100644 index b37a0d7c..00000000 --- a/test/cases/option-enabled/src/index.pug +++ /dev/null @@ -1 +0,0 @@ -h1 Hello World! \ No newline at end of file diff --git a/test/cases/option-enabled/webpack.config.js b/test/cases/option-enabled/webpack.config.js deleted file mode 100644 index 17676c40..00000000 --- a/test/cases/option-enabled/webpack.config.js +++ /dev/null @@ -1,40 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - - resolve: { - alias: { - Images: path.join(__dirname, 'src/assets/images/'), - }, - }, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/index.pug', - }, - - plugins: [ - new PugPlugin({ - // test disable plugin - enabled: false, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/option-extension-test/webpack.config.js b/test/cases/option-extension-test/webpack.config.js index 89cdcaaf..5be7fa88 100644 --- a/test/cases/option-extension-test/webpack.config.js +++ b/test/cases/option-extension-test/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,16 +19,4 @@ module.exports = { test: /\.(pug|jade)$/, }), ], - - module: { - rules: [ - { - test: /\.(pug|jade)$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-extract-comments-false/expected/assets/js/vendor.dba7ee81.js b/test/cases/option-extract-comments-false/expected/assets/js/vendor.4140c455.js similarity index 60% rename from test/cases/option-extract-comments-false/expected/assets/js/vendor.dba7ee81.js rename to test/cases/option-extract-comments-false/expected/assets/js/vendor.4140c455.js index d7ddff6e..eb1de593 100644 --- a/test/cases/option-extract-comments-false/expected/assets/js/vendor.dba7ee81.js +++ b/test/cases/option-extract-comments-false/expected/assets/js/vendor.4140c455.js @@ -1 +1 @@ -(()=>{var r={690:r=>{const o={run(){console.log("Hello Pug!")}};r.exports=o}},o={};!function e(t){var n=o[t];if(void 0!==n)return n.exports;var s=o[t]={exports:{}};return r[t](s,s.exports,e),s.exports}(690)})(); \ No newline at end of file +(()=>{var r={532:r=>{const o={run(){console.log("Hello Pug!")}};r.exports=o}},o={};!function e(t){var n=o[t];if(void 0!==n)return n.exports;var s=o[t]={exports:{}};return r[t](s,s.exports,e),s.exports}(532)})(); \ No newline at end of file diff --git a/test/cases/option-extract-comments-false/expected/index.html b/test/cases/option-extract-comments-false/expected/index.html index f6171e29..343a9b0f 100644 --- a/test/cases/option-extract-comments-false/expected/index.html +++ b/test/cases/option-extract-comments-false/expected/index.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/test/cases/option-extract-comments-false/webpack.config.js b/test/cases/option-extract-comments-false/webpack.config.js index d033c7ec..e3ff936c 100644 --- a/test/cases/option-extract-comments-false/webpack.config.js +++ b/test/cases/option-extract-comments-false/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -33,16 +33,4 @@ module.exports = { }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-extract-comments-true/expected/assets/js/vendor.370c0b5c.js b/test/cases/option-extract-comments-true/expected/assets/js/vendor.370c0b5c.js new file mode 100644 index 00000000..6b7a2d01 --- /dev/null +++ b/test/cases/option-extract-comments-true/expected/assets/js/vendor.370c0b5c.js @@ -0,0 +1,2 @@ +/*! For license information please see vendor.370c0b5c.js.LICENSE.txt */ +(()=>{var r={532:r=>{const o={run(){console.log("Hello Pug!")}};r.exports=o}},o={};!function e(t){var n=o[t];if(void 0!==n)return n.exports;var s=o[t]={exports:{}};return r[t](s,s.exports,e),s.exports}(532)})(); \ No newline at end of file diff --git a/test/cases/option-extract-comments-true/expected/assets/js/vendor.dba7ee81.js.LICENSE.txt b/test/cases/option-extract-comments-true/expected/assets/js/vendor.370c0b5c.js.LICENSE.txt similarity index 100% rename from test/cases/option-extract-comments-true/expected/assets/js/vendor.dba7ee81.js.LICENSE.txt rename to test/cases/option-extract-comments-true/expected/assets/js/vendor.370c0b5c.js.LICENSE.txt diff --git a/test/cases/option-extract-comments-true/expected/assets/js/vendor.dba7ee81.js b/test/cases/option-extract-comments-true/expected/assets/js/vendor.dba7ee81.js deleted file mode 100644 index 5c390024..00000000 --- a/test/cases/option-extract-comments-true/expected/assets/js/vendor.dba7ee81.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see vendor.dba7ee81.js.LICENSE.txt */ -(()=>{var r={690:r=>{const o={run(){console.log("Hello Pug!")}};r.exports=o}},o={};!function e(t){var n=o[t];if(void 0!==n)return n.exports;var s=o[t]={exports:{}};return r[t](s,s.exports,e),s.exports}(690)})(); \ No newline at end of file diff --git a/test/cases/option-extract-comments-true/expected/index.html b/test/cases/option-extract-comments-true/expected/index.html index f6171e29..0b55dc57 100644 --- a/test/cases/option-extract-comments-true/expected/index.html +++ b/test/cases/option-extract-comments-true/expected/index.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/test/cases/option-extract-comments-true/webpack.config.js b/test/cases/option-extract-comments-true/webpack.config.js index d63e31d2..8aee7475 100644 --- a/test/cases/option-extract-comments-true/webpack.config.js +++ b/test/cases/option-extract-comments-true/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -33,16 +33,4 @@ module.exports = { }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-filename-function/webpack.config.js b/test/cases/option-filename-function/webpack.config.js index 733f71c1..baf660cb 100644 --- a/test/cases/option-filename-function/webpack.config.js +++ b/test/cases/option-filename-function/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -22,16 +22,4 @@ module.exports = { }, }), ], - - module: { - rules: [ - { - test: /\.(pug)$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-filename-separate-assets/expected/index.html b/test/cases/option-filename-separate-assets/expected/index.html index 60c55bfd..6f6376da 100644 --- a/test/cases/option-filename-separate-assets/expected/index.html +++ b/test/cases/option-filename-separate-assets/expected/index.html @@ -1 +1 @@ -

Home

\ No newline at end of file +

Home

\ No newline at end of file diff --git a/test/cases/option-filename-separate-assets/expected/js/main.282a9444.js b/test/cases/option-filename-separate-assets/expected/js/main.6de20bbc.js similarity index 100% rename from test/cases/option-filename-separate-assets/expected/js/main.282a9444.js rename to test/cases/option-filename-separate-assets/expected/js/main.6de20bbc.js diff --git a/test/cases/option-filename-separate-assets/webpack.config.js b/test/cases/option-filename-separate-assets/webpack.config.js index c68493bf..e4666b48 100644 --- a/test/cases/option-filename-separate-assets/webpack.config.js +++ b/test/cases/option-filename-separate-assets/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const sourceDirname = 'src/'; @@ -29,13 +29,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.scss$/, use: ['css-loader', 'sass-loader'], @@ -53,4 +47,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-filename-template/webpack.config.js b/test/cases/option-filename-template/webpack.config.js index f7c193b3..25193aab 100644 --- a/test/cases/option-filename-template/webpack.config.js +++ b/test/cases/option-filename-template/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -26,16 +26,4 @@ module.exports = { filename: '[name]-custom.html', }), ], - - module: { - rules: [ - { - test: /\.(pug)$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-js-css-outputPath-absolute/expected/assets/js/main.282a9444.js b/test/cases/option-js-css-outputPath-absolute/expected/assets/js/main.6de20bbc.js similarity index 100% rename from test/cases/option-js-css-outputPath-absolute/expected/assets/js/main.282a9444.js rename to test/cases/option-js-css-outputPath-absolute/expected/assets/js/main.6de20bbc.js diff --git a/test/cases/option-js-css-outputPath-absolute/expected/index.html b/test/cases/option-js-css-outputPath-absolute/expected/index.html index 58bac090..625ad95c 100644 --- a/test/cases/option-js-css-outputPath-absolute/expected/index.html +++ b/test/cases/option-js-css-outputPath-absolute/expected/index.html @@ -1 +1 @@ -

Main page

\ No newline at end of file +

Main page

\ No newline at end of file diff --git a/test/cases/option-js-css-outputPath-absolute/webpack.config.js b/test/cases/option-js-css-outputPath-absolute/webpack.config.js index cd199f06..83cf102d 100644 --- a/test/cases/option-js-css-outputPath-absolute/webpack.config.js +++ b/test/cases/option-js-css-outputPath-absolute/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -48,14 +48,11 @@ module.exports = { outputPath: 'cdn-assets/', }, }, - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, + { test: /\.scss$/, use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-js-css-outputPath-relative/expected/assets/js/main.282a9444.js b/test/cases/option-js-css-outputPath-relative/expected/assets/js/main.6de20bbc.js similarity index 100% rename from test/cases/option-js-css-outputPath-relative/expected/assets/js/main.282a9444.js rename to test/cases/option-js-css-outputPath-relative/expected/assets/js/main.6de20bbc.js diff --git a/test/cases/option-js-css-outputPath-relative/expected/index.html b/test/cases/option-js-css-outputPath-relative/expected/index.html index 58bac090..625ad95c 100644 --- a/test/cases/option-js-css-outputPath-relative/expected/index.html +++ b/test/cases/option-js-css-outputPath-relative/expected/index.html @@ -1 +1 @@ -

Main page

\ No newline at end of file +

Main page

\ No newline at end of file diff --git a/test/cases/option-js-css-outputPath-relative/webpack.config.js b/test/cases/option-js-css-outputPath-relative/webpack.config.js index b3ebde92..e61d2327 100644 --- a/test/cases/option-js-css-outputPath-relative/webpack.config.js +++ b/test/cases/option-js-css-outputPath-relative/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -38,14 +38,11 @@ module.exports = { outputPath: 'cdn-assets/', }, }, - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, + { test: /\.scss$/, use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-js-filename/expected/de/index.html b/test/cases/option-js-filename/expected/de/index.html index 36e00fc8..ced6fee4 100644 --- a/test/cases/option-js-filename/expected/de/index.html +++ b/test/cases/option-js-filename/expected/de/index.html @@ -1 +1 @@ -Test

Hello World!

de

\ No newline at end of file +Test

Hello World!

de

\ No newline at end of file diff --git a/test/cases/option-js-filename/expected/index.html b/test/cases/option-js-filename/expected/index.html index 0da595ce..8607350c 100644 --- a/test/cases/option-js-filename/expected/index.html +++ b/test/cases/option-js-filename/expected/index.html @@ -1 +1 @@ -Test

Hello World!

en

\ No newline at end of file +Test

Hello World!

en

\ No newline at end of file diff --git a/test/cases/option-js-filename/expected/js/main.5f2f104e.js b/test/cases/option-js-filename/expected/js/main.5317c1f6.js similarity index 100% rename from test/cases/option-js-filename/expected/js/main.5f2f104e.js rename to test/cases/option-js-filename/expected/js/main.5317c1f6.js diff --git a/test/cases/option-js-filename/webpack.config.js b/test/cases/option-js-filename/webpack.config.js index 44556841..b347fd9a 100644 --- a/test/cases/option-js-filename/webpack.config.js +++ b/test/cases/option-js-filename/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -30,11 +30,6 @@ module.exports = { ], module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], + rules: [], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-modules-css/expected/assets/css/about.css b/test/cases/option-modules-css/expected/assets/css/about.css index 22412e51..e356a6f1 100644 --- a/test/cases/option-modules-css/expected/assets/css/about.css +++ b/test/cases/option-modules-css/expected/assets/css/about.css @@ -1,4 +1,4 @@ p { color: green; } -/*# sourceMappingURL=about.css.map */ \ No newline at end of file +/*# sourceMappingURL=about.css.map*/ \ No newline at end of file diff --git a/test/cases/option-modules-css/expected/assets/css/about.css.map b/test/cases/option-modules-css/expected/assets/css/about.css.map index 53d12f8e..9c9e43e6 100644 --- a/test/cases/option-modules-css/expected/assets/css/about.css.map +++ b/test/cases/option-modules-css/expected/assets/css/about.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/views/about/style.css"],"names":[],"mappings":"AAAA;EACE,YAAY;AACd","sourcesContent":["p {\n color: green;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/about.css","mappings":"AAAA;EACE,YAAY;AACd","sources":["webpack:///./src/views/about/style.css"],"sourcesContent":["p {\n color: green;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/option-modules-css/expected/assets/css/home.css b/test/cases/option-modules-css/expected/assets/css/home.css index a32203f4..b65a4a39 100644 --- a/test/cases/option-modules-css/expected/assets/css/home.css +++ b/test/cases/option-modules-css/expected/assets/css/home.css @@ -1,4 +1,4 @@ p { color: red; } -/*# sourceMappingURL=home.css.map */ \ No newline at end of file +/*# sourceMappingURL=home.css.map*/ \ No newline at end of file diff --git a/test/cases/option-modules-css/expected/assets/css/home.css.map b/test/cases/option-modules-css/expected/assets/css/home.css.map index ed2e3fa2..66fcb716 100644 --- a/test/cases/option-modules-css/expected/assets/css/home.css.map +++ b/test/cases/option-modules-css/expected/assets/css/home.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/views/home/style.css"],"names":[],"mappings":"AAAA;EACE,UAAU;AACZ","sourcesContent":["p {\n color: red;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/home.css","mappings":"AAAA;EACE,UAAU;AACZ","sources":["webpack:///./src/views/home/style.css"],"sourcesContent":["p {\n color: red;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/option-modules-css/expected/assets/css/styles.css b/test/cases/option-modules-css/expected/assets/css/styles.css index 91b851ba..fc9439c5 100644 --- a/test/cases/option-modules-css/expected/assets/css/styles.css +++ b/test/cases/option-modules-css/expected/assets/css/styles.css @@ -1,4 +1,4 @@ h1 { color: blue; } -/*# sourceMappingURL=styles.css.map */ \ No newline at end of file +/*# sourceMappingURL=styles.css.map*/ \ No newline at end of file diff --git a/test/cases/option-modules-css/expected/assets/css/styles.css.map b/test/cases/option-modules-css/expected/assets/css/styles.css.map index 10ef7c57..6cfd6e19 100644 --- a/test/cases/option-modules-css/expected/assets/css/styles.css.map +++ b/test/cases/option-modules-css/expected/assets/css/styles.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/views/index.css"],"names":[],"mappings":"AAAA;EACE,WAAW;AACb","sourcesContent":["h1 {\n color: blue;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/styles.css","mappings":"AAAA;EACE,WAAW;AACb","sources":["webpack:///./src/views/index.css"],"sourcesContent":["h1 {\n color: blue;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/option-modules-css/webpack.config.js b/test/cases/option-modules-css/webpack.config.js index 56afa793..47411fab 100644 --- a/test/cases/option-modules-css/webpack.config.js +++ b/test/cases/option-modules-css/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const basePath = path.resolve(__dirname); @@ -29,24 +29,10 @@ module.exports = { 'assets/css/home': './src/views/home/style.css', }, - plugins: [ - new PugPlugin({ - // test defaults 'css' options, it is equivalent to: - // css: { - // filename: '[name].css', - // }, - }), - ], + plugins: [new PugPlugin({})], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, { test: /\.(css)$/, use: ['css-loader'], @@ -60,4 +46,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-modules-postprocess/expected/index.html b/test/cases/option-modules-postprocess/expected/index.html deleted file mode 100644 index b4a28ddb..00000000 --- a/test/cases/option-modules-postprocess/expected/index.html +++ /dev/null @@ -1 +0,0 @@ -

Hello Pug!

\ No newline at end of file diff --git a/test/cases/option-modules-postprocess/src/index.pug b/test/cases/option-modules-postprocess/src/index.pug deleted file mode 100644 index b37a0d7c..00000000 --- a/test/cases/option-modules-postprocess/src/index.pug +++ /dev/null @@ -1 +0,0 @@ -h1 Hello World! \ No newline at end of file diff --git a/test/cases/option-modules-postprocess/webpack.config.js b/test/cases/option-modules-postprocess/webpack.config.js deleted file mode 100644 index 8e4c3870..00000000 --- a/test/cases/option-modules-postprocess/webpack.config.js +++ /dev/null @@ -1,40 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/index.pug', - }, - - plugins: [ - new PugPlugin({ - modules: [ - { - test: /\.(pug)$/, - postprocess: (content, info, compilation) => { - return content.replace('World', 'Pug'); - }, - }, - ], - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/option-output-filename/expected/de/index.html b/test/cases/option-output-filename/expected/de/index.html index 36e00fc8..ced6fee4 100644 --- a/test/cases/option-output-filename/expected/de/index.html +++ b/test/cases/option-output-filename/expected/de/index.html @@ -1 +1 @@ -Test

Hello World!

de

\ No newline at end of file +Test

Hello World!

de

\ No newline at end of file diff --git a/test/cases/option-output-filename/expected/index.html b/test/cases/option-output-filename/expected/index.html index 0da595ce..8607350c 100644 --- a/test/cases/option-output-filename/expected/index.html +++ b/test/cases/option-output-filename/expected/index.html @@ -1 +1 @@ -Test

Hello World!

en

\ No newline at end of file +Test

Hello World!

en

\ No newline at end of file diff --git a/test/cases/option-output-filename/expected/js/main.5f2f104e.js b/test/cases/option-output-filename/expected/js/main.5317c1f6.js similarity index 100% rename from test/cases/option-output-filename/expected/js/main.5f2f104e.js rename to test/cases/option-output-filename/expected/js/main.5317c1f6.js diff --git a/test/cases/option-output-filename/webpack.config.js b/test/cases/option-output-filename/webpack.config.js index 0bb9d6e6..0848f288 100644 --- a/test/cases/option-output-filename/webpack.config.js +++ b/test/cases/option-output-filename/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -24,11 +24,6 @@ module.exports = { plugins: [new PugPlugin()], module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], + rules: [], }, }; diff --git a/test/cases/option-output-public-path-auto/webpack.config.js b/test/cases/option-output-public-path-auto/webpack.config.js index 6129da68..425678ea 100644 --- a/test/cases/option-output-public-path-auto/webpack.config.js +++ b/test/cases/option-output-public-path-auto/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -43,13 +43,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -65,4 +59,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-output-public-path-empty/webpack.config.js b/test/cases/option-output-public-path-empty/webpack.config.js index 18a22259..8f26c35e 100644 --- a/test/cases/option-output-public-path-empty/webpack.config.js +++ b/test/cases/option-output-public-path-empty/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -43,13 +43,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, diff --git a/test/cases/option-output-public-path-function/webpack.config.js b/test/cases/option-output-public-path-function/webpack.config.js index 6ea1e6c1..992c0ddf 100644 --- a/test/cases/option-output-public-path-function/webpack.config.js +++ b/test/cases/option-output-public-path-function/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,13 +19,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -33,4 +27,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-output-public-path-root/webpack.config.js b/test/cases/option-output-public-path-root/webpack.config.js index d69232e6..6aad2acb 100644 --- a/test/cases/option-output-public-path-root/webpack.config.js +++ b/test/cases/option-output-public-path-root/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -42,13 +42,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, diff --git a/test/cases/option-output-public-path-url/expected/assets/js/main.34cb596f.js b/test/cases/option-output-public-path-url/expected/assets/js/main.5317c1f6.js similarity index 100% rename from test/cases/option-output-public-path-url/expected/assets/js/main.34cb596f.js rename to test/cases/option-output-public-path-url/expected/assets/js/main.5317c1f6.js diff --git a/test/cases/option-output-public-path-url/expected/index.html b/test/cases/option-output-public-path-url/expected/index.html index 30c92999..2f9aa96c 100644 --- a/test/cases/option-output-public-path-url/expected/index.html +++ b/test/cases/option-output-public-path-url/expected/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/test/cases/option-output-public-path-url/webpack.config.js b/test/cases/option-output-public-path-url/webpack.config.js index be03209f..d6aceb05 100644 --- a/test/cases/option-output-public-path-url/webpack.config.js +++ b/test/cases/option-output-public-path-url/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -35,13 +35,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.css$/, diff --git a/test/cases/option-postprocess/expected/assets/js/main.ee2cdd6c.js b/test/cases/option-postprocess/expected/assets/js/main.7693a3d5.js similarity index 100% rename from test/cases/option-postprocess/expected/assets/js/main.ee2cdd6c.js rename to test/cases/option-postprocess/expected/assets/js/main.7693a3d5.js diff --git a/test/cases/option-postprocess/expected/index.html b/test/cases/option-postprocess/expected/index.html index 3af43dba..1885e210 100644 --- a/test/cases/option-postprocess/expected/index.html +++ b/test/cases/option-postprocess/expected/index.html @@ -1 +1 @@ -

Hello Pug!

The new replaced content.

\ No newline at end of file +

Hello Pug!

The new replaced content.

\ No newline at end of file diff --git a/test/cases/option-postprocess/webpack.config.js b/test/cases/option-postprocess/webpack.config.js index 3af48ea7..c7c16a34 100644 --- a/test/cases/option-postprocess/webpack.config.js +++ b/test/cases/option-postprocess/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -29,17 +29,11 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-pretty/webpack.config.js b/test/cases/option-pretty/webpack.config.js index 753b9e8d..9ec365da 100644 --- a/test/cases/option-pretty/webpack.config.js +++ b/test/cases/option-pretty/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,17 +19,4 @@ module.exports = { pretty: true, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - pretty: false, // not works, is deprecated - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-pug-outputPath/expected/pages/about/index.html b/test/cases/option-pug-outputPath/expected/pages/about/index.html index 247fa8a3..bd4f8f3f 100644 --- a/test/cases/option-pug-outputPath/expected/pages/about/index.html +++ b/test/cases/option-pug-outputPath/expected/pages/about/index.html @@ -1 +1 @@ -

About page

\ No newline at end of file +

About page

\ No newline at end of file diff --git a/test/cases/option-pug-outputPath/expected/pages/about/scripts.4995bebb.js b/test/cases/option-pug-outputPath/expected/pages/about/scripts.80dac158.js similarity index 100% rename from test/cases/option-pug-outputPath/expected/pages/about/scripts.4995bebb.js rename to test/cases/option-pug-outputPath/expected/pages/about/scripts.80dac158.js diff --git a/test/cases/option-pug-outputPath/expected/pages/main/index.html b/test/cases/option-pug-outputPath/expected/pages/main/index.html index d35ab58e..0b0a4e8a 100644 --- a/test/cases/option-pug-outputPath/expected/pages/main/index.html +++ b/test/cases/option-pug-outputPath/expected/pages/main/index.html @@ -1 +1 @@ -

Main page

\ No newline at end of file +

Main page

\ No newline at end of file diff --git a/test/cases/option-pug-outputPath/expected/pages/main/scripts.41db7348.js b/test/cases/option-pug-outputPath/expected/pages/main/scripts.6de20bbc.js similarity index 100% rename from test/cases/option-pug-outputPath/expected/pages/main/scripts.41db7348.js rename to test/cases/option-pug-outputPath/expected/pages/main/scripts.6de20bbc.js diff --git a/test/cases/option-pug-outputPath/webpack.config.js b/test/cases/option-pug-outputPath/webpack.config.js index 830fe74a..0d3eaf1d 100644 --- a/test/cases/option-pug-outputPath/webpack.config.js +++ b/test/cases/option-pug-outputPath/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -17,34 +17,23 @@ module.exports = { plugins: [ new PugPlugin({ + outputPath: 'pages/', js: { filename: 'pages/[name]/scripts.[contenthash:8].js', }, css: { filename: 'pages/[name]/styles.[contenthash:8].css', }, - modules: [ - { - test: /\.pug$/, - outputPath: 'pages/', - }, - ], }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.scss$/, use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/option-verbose/expected/index.html b/test/cases/option-verbose/expected/index.html index b1038dde..2d57f5b0 100644 --- a/test/cases/option-verbose/expected/index.html +++ b/test/cases/option-verbose/expected/index.html @@ -1 +1 @@ -

Home

Text

\ No newline at end of file +

Home

Text

\ No newline at end of file diff --git a/test/cases/option-verbose/expected/main.22531d40.js b/test/cases/option-verbose/expected/main.72b4b327.js similarity index 100% rename from test/cases/option-verbose/expected/main.22531d40.js rename to test/cases/option-verbose/expected/main.72b4b327.js diff --git a/test/cases/option-verbose/webpack.config.js b/test/cases/option-verbose/webpack.config.js index 2bce653d..87bc6b78 100644 --- a/test/cases/option-verbose/webpack.config.js +++ b/test/cases/option-verbose/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -33,13 +33,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -77,4 +71,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/pug-in-entry-and-js-config/expected/index.html b/test/cases/pug-in-entry-and-js-config/expected/index.html deleted file mode 100644 index 7b265d88..00000000 --- a/test/cases/pug-in-entry-and-js-config/expected/index.html +++ /dev/null @@ -1 +0,0 @@ -

Hello World!

\ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-config/expected/main.js b/test/cases/pug-in-entry-and-js-config/expected/main.js deleted file mode 100644 index 2e80ced0..00000000 --- a/test/cases/pug-in-entry-and-js-config/expected/main.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var t={427:t=>{function e(t,o){return Array.isArray(t)?function(t,r){for(var o,a="",i="",s=Array.isArray(r),c=0;c]/;t.exports=function(t){var r,o="",a=t||{};return function(t,a){o=o+""+n(null==(r=a)?"":r)+""}.call(this,"className"in a?a.className:"undefined"!=typeof className?className:void 0,"text"in a?a.text:"undefined"!=typeof text?text:void 0),o}}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}(()=>{const t=n(427);addEventListener("DOMContentLoaded",(e=>{console.log(">> main"),document.getElementById("root").innerHTML=t({text:"click me",className:"outline"})}))})()})(); \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-config/src/scripts/main.js b/test/cases/pug-in-entry-and-js-config/src/scripts/main.js deleted file mode 100644 index 674f4a46..00000000 --- a/test/cases/pug-in-entry-and-js-config/src/scripts/main.js +++ /dev/null @@ -1,11 +0,0 @@ -// test loader method `compile` via webpack multiple use config -// note: default method in pug-plugin is `render` -const buttonTmpl = require('Views/partials/button.pug'); - -const main = (event) => { - console.log('>> main'); - const rootNode = document.getElementById('root'); - rootNode.innerHTML = buttonTmpl({ text: 'click me', className: 'outline' }); -}; - -addEventListener('DOMContentLoaded', main); \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-config/src/views/index.pug b/test/cases/pug-in-entry-and-js-config/src/views/index.pug deleted file mode 100644 index da33fed8..00000000 --- a/test/cases/pug-in-entry-and-js-config/src/views/index.pug +++ /dev/null @@ -1,6 +0,0 @@ -html - head - script(src=require('Scripts/main.js') defer) - body - h1 Hello World! - #root \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-config/src/views/partials/button.pug b/test/cases/pug-in-entry-and-js-config/src/views/partials/button.pug deleted file mode 100644 index b777bc89..00000000 --- a/test/cases/pug-in-entry-and-js-config/src/views/partials/button.pug +++ /dev/null @@ -1 +0,0 @@ -button(class=className)= text \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-config/webpack.config.js b/test/cases/pug-in-entry-and-js-config/webpack.config.js deleted file mode 100644 index 2eb29007..00000000 --- a/test/cases/pug-in-entry-and-js-config/webpack.config.js +++ /dev/null @@ -1,46 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - devtool: false, - - resolve: { - alias: { - Scripts: path.join(__dirname, 'src/scripts/'), - Views: path.join(__dirname, 'src/views/'), - }, - }, - - output: { - path: path.join(__dirname, 'dist/'), - }, - - entry: { - index: './src/views/index.pug', - }, - - plugins: [new PugPlugin()], - - module: { - rules: [ - { - test: /\.pug$/, - oneOf: [ - // import Pug in JavaScript/TypeScript as template function - { - issuer: /\.(js|ts)$/, - loader: PugPlugin.loader, - options: { - method: 'compile', // compile Pug into template function - }, - }, - // render Pug from Webpack entry into static HTML - { - loader: PugPlugin.loader, // default method is `render` - }, - ], - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-query/expected/main.js b/test/cases/pug-in-entry-and-js-query/expected/main.js index 3c9b41c1..16d26efd 100644 --- a/test/cases/pug-in-entry-and-js-query/expected/main.js +++ b/test/cases/pug-in-entry-and-js-query/expected/main.js @@ -1 +1 @@ -(()=>{var t={733:t=>{var e={"pug-compile":""};function r(t,e){return Array.isArray(t)?function(t,e){for(var o,a="",i="",s=Array.isArray(e),c=0;c]/;t.exports=function(t){var o,a="",i={...e,...t};return function(t,e){a=a+""+n(null==(o=e)?"":o)+""}.call(this,"className"in i?i.className:"undefined"!=typeof className?className:void 0,"text"in i?i.text:"undefined"!=typeof text?text:void 0),a}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}(()=>{const t=r(733);addEventListener("DOMContentLoaded",(e=>{console.log(">> main"),document.getElementById("root").innerHTML=t({text:"click me",className:"outline"})}))})()})(); \ No newline at end of file +(()=>{var t={61:t=>{function e(t,o){return Array.isArray(t)?function(t,r){for(var o,a="",i="",s=Array.isArray(r),c=0;c]/;t.exports=function(t){var r,o="",a=t||{};return function(t,a){o=o+""+n(null==(r=a)?"":r)+""}.call(this,"className"in a?a.className:"undefined"!=typeof className?className:void 0,"text"in a?a.text:"undefined"!=typeof text?text:void 0),o}}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}(()=>{const t=n(61);addEventListener("DOMContentLoaded",(e=>{console.log(">> main"),document.getElementById("root").innerHTML=t({text:"click me",className:"outline"})}))})()})(); \ No newline at end of file diff --git a/test/cases/pug-in-entry-and-js-query/src/scripts/main.js b/test/cases/pug-in-entry-and-js-query/src/scripts/main.js index 6bff8257..4b21cd46 100644 --- a/test/cases/pug-in-entry-and-js-query/src/scripts/main.js +++ b/test/cases/pug-in-entry-and-js-query/src/scripts/main.js @@ -1,6 +1,4 @@ -// test loader method `compile` via query -// note: default method in pug-plugin is `render` -const buttonTmpl = require('Views/partials/button.pug?pug-compile'); +const buttonTmpl = require('Views/partials/button.pug'); const main = (event) => { console.log('>> main'); @@ -8,4 +6,4 @@ const main = (event) => { rootNode.innerHTML = buttonTmpl({ text: 'click me', className: 'outline' }); }; -addEventListener('DOMContentLoaded', main); \ No newline at end of file +addEventListener('DOMContentLoaded', main); diff --git a/test/cases/pug-in-entry-and-js-query/webpack.config.js b/test/cases/pug-in-entry-and-js-query/webpack.config.js index 4a412b79..ac1cea48 100644 --- a/test/cases/pug-in-entry-and-js-query/webpack.config.js +++ b/test/cases/pug-in-entry-and-js-query/webpack.config.js @@ -1,10 +1,14 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', devtool: false, + output: { + path: path.join(__dirname, 'dist/'), + }, + resolve: { alias: { Scripts: path.join(__dirname, 'src/scripts/'), @@ -12,25 +16,9 @@ module.exports = { }, }, - output: { - path: path.join(__dirname, 'dist/'), - }, - entry: { index: './src/views/index.pug', }, plugins: [new PugPlugin()], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - //method: 'compile', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css b/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css index 6efb013b..3b2cdfa6 100644 --- a/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css +++ b/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css @@ -1,2 +1,2 @@ .about{color:green} -/*# sourceMappingURL=about.9ac4ae13.css.map */ \ No newline at end of file +/*# sourceMappingURL=about.9ac4ae13.css.map*/ \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css.map b/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css.map index 66958050..e2a73187 100644 --- a/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css.map +++ b/test/cases/require-and-entry-styles/expected/assets/css/about.9ac4ae13.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/assets/styles/about.css"],"names":[],"mappings":"AAAA,OACE,WAAA","sourcesContent":[".about {\n color: green;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/about.9ac4ae13.css","mappings":"AAAA,OACE","sources":["webpack:///./src/assets/styles/about.css"],"sourcesContent":[".about {\n color: green;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css b/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css index 7f5e5cdc..0aa2a566 100644 --- a/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css +++ b/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css @@ -1,2 +1,2 @@ h1{color:blue} -/*# sourceMappingURL=main.310b95a7.css.map */ \ No newline at end of file +/*# sourceMappingURL=main.310b95a7.css.map*/ \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css.map b/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css.map index 1f827ab1..036adaaa 100644 --- a/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css.map +++ b/test/cases/require-and-entry-styles/expected/assets/css/main.310b95a7.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/assets/styles/main.scss"],"names":[],"mappings":"AACA,GACE,UAFM","sourcesContent":["$color: blue;\nh1 {\n color: $color;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/main.310b95a7.css","mappings":"AACA,GACE,UAFM","sources":["webpack:///./src/assets/styles/main.scss"],"sourcesContent":["$color: blue;\nh1 {\n color: $color;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css b/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css deleted file mode 100644 index a521b0f6..00000000 --- a/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css +++ /dev/null @@ -1,2 +0,0 @@ -body{color:red}p{color:green} -/*# sourceMappingURL=styles.2f8383b7.css.map */ \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css.map b/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css.map deleted file mode 100644 index 8baf8743..00000000 --- a/test/cases/require-and-entry-styles/expected/assets/css/styles.2f8383b7.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://./src/assets/styles/common.scss"],"names":[],"mappings":"AAGA,KACE,SAJc,CAOhB,EACE,WAPgB","sourcesContent":["$primary-color: red;\n$secondary-color: green;\n\nbody {\n color: $primary-color;\n}\n\np {\n color: $secondary-color;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css b/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css new file mode 100644 index 00000000..ec6e9608 --- /dev/null +++ b/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css @@ -0,0 +1,2 @@ +body{color:red}p{color:green} +/*# sourceMappingURL=styles.c6c24b3b.css.map*/ \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css.map b/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css.map new file mode 100644 index 00000000..af12cd17 --- /dev/null +++ b/test/cases/require-and-entry-styles/expected/assets/css/styles.c6c24b3b.css.map @@ -0,0 +1 @@ +{"version":3,"file":"assets/css/styles.c6c24b3b.css","mappings":"AAGA,KACE,SAJc,CAOhB,EACE,WAPgB","sources":["webpack:///./src/assets/styles/common.scss"],"sourcesContent":["$primary-color: red;\n$secondary-color: green;\n\nbody {\n color: $primary-color;\n}\n\np {\n color: $secondary-color;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-and-entry-styles/webpack.config.js b/test/cases/require-and-entry-styles/webpack.config.js index 8dfb3e89..6f388f5b 100644 --- a/test/cases/require-and-entry-styles/webpack.config.js +++ b/test/cases/require-and-entry-styles/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -39,13 +39,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: [ @@ -60,4 +54,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css b/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css new file mode 100644 index 00000000..63f5b1ee --- /dev/null +++ b/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css @@ -0,0 +1,2 @@ +.about{color:blue} +/*# sourceMappingURL=about.60404ee4.css.map*/ \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css.map b/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css.map new file mode 100644 index 00000000..6178b3de --- /dev/null +++ b/test/cases/require-assets-html/expected/assets/css/about.60404ee4.css.map @@ -0,0 +1 @@ +{"version":3,"file":"assets/css/about.60404ee4.css","mappings":"AAEA,OACE,UAHM","sources":["webpack:///./src/about.scss"],"sourcesContent":["$color: blue;\n\n.about {\n color: $color;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css b/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css deleted file mode 100644 index dfa8d6f6..00000000 --- a/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css +++ /dev/null @@ -1,2 +0,0 @@ -.about{color:blue} -/*# sourceMappingURL=about.9c8d443d.css.map */ \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css.map b/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css.map deleted file mode 100644 index 26649221..00000000 --- a/test/cases/require-assets-html/expected/assets/css/about.9c8d443d.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://./src/about.scss"],"names":[],"mappings":"AAEA,OACE,UAHM","sourcesContent":["$color: blue;\n\n.about {\n color: $color;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css b/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css new file mode 100644 index 00000000..044e4667 --- /dev/null +++ b/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css @@ -0,0 +1,2 @@ +h1{color:red} +/*# sourceMappingURL=style.31f2a954.css.map*/ \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css.map b/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css.map new file mode 100644 index 00000000..10fbc154 --- /dev/null +++ b/test/cases/require-assets-html/expected/assets/css/style.31f2a954.css.map @@ -0,0 +1 @@ +{"version":3,"file":"assets/css/style.31f2a954.css","mappings":"AAAA,GACE","sources":["webpack:///./src/style.css"],"sourcesContent":["h1 {\n color: red;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css b/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css deleted file mode 100644 index f4f70073..00000000 --- a/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css +++ /dev/null @@ -1,2 +0,0 @@ -h1{color:red} -/*# sourceMappingURL=style.6f6ad826.css.map */ \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css.map b/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css.map deleted file mode 100644 index fb06546f..00000000 --- a/test/cases/require-assets-html/expected/assets/css/style.6f6ad826.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://./src/style.css"],"names":[],"mappings":"AAAA,GACE,SAAA","sourcesContent":["h1 {\n color: red;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/require-assets-html/expected/index.html b/test/cases/require-assets-html/expected/index.html index 9afa6a0d..6b33cea6 100644 --- a/test/cases/require-assets-html/expected/index.html +++ b/test/cases/require-assets-html/expected/index.html @@ -1 +1 @@ -

Hello World!

\ No newline at end of file +

Hello World!

\ No newline at end of file diff --git a/test/cases/require-assets-html/src/index.pug b/test/cases/require-assets-html/src/index.pug index 5845b8ce..58477f6a 100644 --- a/test/cases/require-assets-html/src/index.pug +++ b/test/cases/require-assets-html/src/index.pug @@ -2,9 +2,9 @@ h1 Hello World! //- Static resource URL from public web path should not be parsed, leave as is. link(rel='stylesheet' href='/absolute/assets/styles2.css') -img(src='relative/assets/image2.png') +img(src='https://domain.com/relative/assets/image2.png') //- Required resource must be processed. link(rel='stylesheet' href=require('./style.css')) link(rel='stylesheet' href=require('./about.scss')) -img(src=require('./image.png')) \ No newline at end of file +img(src=require('./image.png')) diff --git a/test/cases/require-assets-html/webpack.config.js b/test/cases/require-assets-html/webpack.config.js index 7568ade7..227dee51 100644 --- a/test/cases/require-assets-html/webpack.config.js +++ b/test/cases/require-assets-html/webpack.config.js @@ -1,6 +1,6 @@ const fs = require('fs'); const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -25,36 +25,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - use: [ - { - loader: 'html-loader', - options: { - // Test: transformation of ESM to CommonJS source in PugPlugin.extractHtml - //esModule: true, - sources: { - // Static resource URL from public web path should not be parsed. - // Leave as is: - // img(src='/assets/image.png') - // link(rel='stylesheet' href='assets/style.css') - // Must be processed: - // img(src=require('./image.png')) - // link(rel='stylesheet' href=require('./style.css')) - urlFilter: (attribute, value) => path.isAbsolute(value) && fs.existsSync(value), - }, - }, - }, - { - loader: PugPlugin.loader, - options: { - method: 'html', - //method: 'render', - }, - }, - ], - }, - { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -69,4 +39,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-assets-render/expected/index.html b/test/cases/require-assets-render/expected/index.html index 6c958b19..ff70b0df 100644 --- a/test/cases/require-assets-render/expected/index.html +++ b/test/cases/require-assets-render/expected/index.html @@ -1 +1 @@ -

Hello World!

\ No newline at end of file +

Hello World!

\ No newline at end of file diff --git a/test/cases/require-assets-render/src/index.pug b/test/cases/require-assets-render/src/index.pug index 0378646b..44149f90 100644 --- a/test/cases/require-assets-render/src/index.pug +++ b/test/cases/require-assets-render/src/index.pug @@ -2,8 +2,8 @@ h1 Hello World! //- Static resource URL from public web path should not be parsed, leave as is. link(rel='stylesheet' href='/absolute/assets/styles2.css') -img(src='relative/assets/image2.png') +img(src='https://domain.com/assets/image2.png') //- Required resource must be processed. link(rel='stylesheet' href=require('./style.css')) -img(src=require('./image.png')) \ No newline at end of file +img(src=require('./image.png')) diff --git a/test/cases/require-assets-render/webpack.config.js b/test/cases/require-assets-render/webpack.config.js index 1ca8f397..de12efd5 100644 --- a/test/cases/require-assets-render/webpack.config.js +++ b/test/cases/require-assets-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -18,20 +18,14 @@ module.exports = { css: { filename: 'assets/css/[name].[contenthash:8].css', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - esModule: true, // Test: transformation of ESM to CommonJS source in PugPlugin.extractHtml - }, - }, - { test: /\.(css|sass|scss)$/, use: ['css-loader'], @@ -47,4 +41,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-assets-same-pug-scss/webpack.config.js b/test/cases/require-assets-same-pug-scss/webpack.config.js index 2da0fecc..b30e16e2 100644 --- a/test/cases/require-assets-same-pug-scss/webpack.config.js +++ b/test/cases/require-assets-same-pug-scss/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -34,13 +34,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -56,4 +50,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-data-compile/expected/about.html b/test/cases/require-data-compile/expected/about.html deleted file mode 100644 index 7e8ee256..00000000 --- a/test/cases/require-data-compile/expected/about.html +++ /dev/null @@ -1 +0,0 @@ -title - about

About

\ No newline at end of file diff --git a/test/cases/require-data-compile/expected/index.html b/test/cases/require-data-compile/expected/index.html deleted file mode 100644 index 3776cd40..00000000 --- a/test/cases/require-data-compile/expected/index.html +++ /dev/null @@ -1 +0,0 @@ -title - index

Home

\ No newline at end of file diff --git a/test/cases/require-data-compile/src/data/about.json b/test/cases/require-data-compile/src/data/about.json deleted file mode 100644 index 10d7bde0..00000000 --- a/test/cases/require-data-compile/src/data/about.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "head": { - "title": "title - about", - "description": "description - about" - }, - "body": { - "image": "../images/about.png", - "mainText": "main text - about" - } -} \ No newline at end of file diff --git a/test/cases/require-data-compile/src/data/index.json b/test/cases/require-data-compile/src/data/index.json deleted file mode 100644 index ab9c2486..00000000 --- a/test/cases/require-data-compile/src/data/index.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "head": { - "title": "title - index", - "description": "description - index" - }, - "body": { - "image": "../images/home.png", - "mainText": "main text - index" - } -} \ No newline at end of file diff --git a/test/cases/require-data-compile/src/images/about.png b/test/cases/require-data-compile/src/images/about.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-compile/src/images/about.png and /dev/null differ diff --git a/test/cases/require-data-compile/src/images/home.png b/test/cases/require-data-compile/src/images/home.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-compile/src/images/home.png and /dev/null differ diff --git a/test/cases/require-data-compile/src/views/about.pug b/test/cases/require-data-compile/src/views/about.pug deleted file mode 100644 index 62cab673..00000000 --- a/test/cases/require-data-compile/src/views/about.pug +++ /dev/null @@ -1,17 +0,0 @@ -- var DATA = require('../data/about.json') - -doctype html -html - - include ./includes/head.pug - include ./includes/menuItem.pug - - head - +head(DATA) - - body - +menuItem('about') - h1 About - //- The `compile` method not support require from parent directory - TODO: fix issue - img(src=require(DATA.body.image)) \ No newline at end of file diff --git a/test/cases/require-data-compile/src/views/home.pug b/test/cases/require-data-compile/src/views/home.pug deleted file mode 100644 index 918b51a7..00000000 --- a/test/cases/require-data-compile/src/views/home.pug +++ /dev/null @@ -1,14 +0,0 @@ -- var DATA = require('../data/index.json'); - -doctype html -html - - include ./includes/head.pug - include ./includes/menuItem.pug - - head - +head(DATA) - - body - +menuItem('index') - h1 Home \ No newline at end of file diff --git a/test/cases/require-data-compile/src/views/includes/head.pug b/test/cases/require-data-compile/src/views/includes/head.pug deleted file mode 100644 index 6c48fec2..00000000 --- a/test/cases/require-data-compile/src/views/includes/head.pug +++ /dev/null @@ -1,3 +0,0 @@ -mixin head(DATA) - meta(name="description", content=DATA.head.description) - title= DATA.head.title \ No newline at end of file diff --git a/test/cases/require-data-compile/src/views/includes/menuItem.pug b/test/cases/require-data-compile/src/views/includes/menuItem.pug deleted file mode 100644 index cea954ad..00000000 --- a/test/cases/require-data-compile/src/views/includes/menuItem.pug +++ /dev/null @@ -1,4 +0,0 @@ -mixin menuItem(page) - .nav - a(class=(page === 'index') ? 'active' : '' href='./', title='index') home - a(class=(page === 'about') ? 'active' : '' href='./about.html', title='about me') about \ No newline at end of file diff --git a/test/cases/require-data-compile/webpack.config.js b/test/cases/require-data-compile/webpack.config.js deleted file mode 100644 index 720f8b9b..00000000 --- a/test/cases/require-data-compile/webpack.config.js +++ /dev/null @@ -1,47 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -const isProduction = false; - -module.exports = { - mode: isProduction ? 'production' : 'development', - devtool: isProduction ? false : 'source-map', - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/views/home.pug', - about: './src/views/about.pug', - }, - - plugins: [ - new PugPlugin({ - js: { - filename: isProduction ? '[name].[contenthash:8].js' : '[name].js', - }, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - - { - test: /\.(png|jpg|jpeg)/, - type: 'asset/resource', // process required images in pug - generator: { - filename: 'assets/images/[name].[hash:8][ext]', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/require-data-html/expected/assets/images/about.697ef306.png b/test/cases/require-data-html/expected/assets/images/about.697ef306.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-html/expected/assets/images/about.697ef306.png and /dev/null differ diff --git a/test/cases/require-data-html/expected/assets/images/home.697ef306.png b/test/cases/require-data-html/expected/assets/images/home.697ef306.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-html/expected/assets/images/home.697ef306.png and /dev/null differ diff --git a/test/cases/require-data-html/expected/index.html b/test/cases/require-data-html/expected/index.html deleted file mode 100644 index b7db0ff1..00000000 --- a/test/cases/require-data-html/expected/index.html +++ /dev/null @@ -1 +0,0 @@ -title - home

Home

\ No newline at end of file diff --git a/test/cases/require-data-html/expected/pages/about.html b/test/cases/require-data-html/expected/pages/about.html deleted file mode 100644 index a7f0e983..00000000 --- a/test/cases/require-data-html/expected/pages/about.html +++ /dev/null @@ -1 +0,0 @@ -title - about

About

\ No newline at end of file diff --git a/test/cases/require-data-html/src/data/about.json b/test/cases/require-data-html/src/data/about.json deleted file mode 100644 index 10d7bde0..00000000 --- a/test/cases/require-data-html/src/data/about.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "head": { - "title": "title - about", - "description": "description - about" - }, - "body": { - "image": "../images/about.png", - "mainText": "main text - about" - } -} \ No newline at end of file diff --git a/test/cases/require-data-html/src/data/home.json b/test/cases/require-data-html/src/data/home.json deleted file mode 100644 index 6a080e51..00000000 --- a/test/cases/require-data-html/src/data/home.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "head": { - "title": "title - home", - "description": "description - home" - }, - "body": { - "image": "../images/home.png", - "mainText": "main text - home" - } -} \ No newline at end of file diff --git a/test/cases/require-data-html/src/images/about.png b/test/cases/require-data-html/src/images/about.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-html/src/images/about.png and /dev/null differ diff --git a/test/cases/require-data-html/src/images/home.png b/test/cases/require-data-html/src/images/home.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-data-html/src/images/home.png and /dev/null differ diff --git a/test/cases/require-data-html/src/views/about.pug b/test/cases/require-data-html/src/views/about.pug deleted file mode 100644 index 90753ac9..00000000 --- a/test/cases/require-data-html/src/views/about.pug +++ /dev/null @@ -1,15 +0,0 @@ -- var DATA = require('../data/about.json') - -doctype html -html - - include ./includes/head.pug - include ./includes/menuItem.pug - - head - +head(DATA) - - body - +menuItem('about') - h1 About - img(src=require(DATA.body.image)) \ No newline at end of file diff --git a/test/cases/require-data-html/src/views/home.pug b/test/cases/require-data-html/src/views/home.pug deleted file mode 100644 index b736c4b4..00000000 --- a/test/cases/require-data-html/src/views/home.pug +++ /dev/null @@ -1,15 +0,0 @@ -- var DATA = require('../data/home.json'); - -doctype html -html - - include ./includes/head.pug - include ./includes/menuItem.pug - - head - +head(DATA) - - body - +menuItem('home') - h1 Home - img(src=require(DATA.body.image)) \ No newline at end of file diff --git a/test/cases/require-data-html/src/views/includes/head.pug b/test/cases/require-data-html/src/views/includes/head.pug deleted file mode 100644 index 6c48fec2..00000000 --- a/test/cases/require-data-html/src/views/includes/head.pug +++ /dev/null @@ -1,3 +0,0 @@ -mixin head(DATA) - meta(name="description", content=DATA.head.description) - title= DATA.head.title \ No newline at end of file diff --git a/test/cases/require-data-html/src/views/includes/menuItem.pug b/test/cases/require-data-html/src/views/includes/menuItem.pug deleted file mode 100644 index 5bb86ab8..00000000 --- a/test/cases/require-data-html/src/views/includes/menuItem.pug +++ /dev/null @@ -1,4 +0,0 @@ -mixin menuItem(page) - .nav - p: a(class=(page === 'home') ? 'active' : '' href=(page === 'home' ? './index.html' : '../index.html') title='home') home - p: a(class=(page === 'about') ? 'active' : '' href=(page === 'about' ? './about.html' : './pages/about.html') title='about') about \ No newline at end of file diff --git a/test/cases/require-data-html/webpack.config.js b/test/cases/require-data-html/webpack.config.js deleted file mode 100644 index 78e43743..00000000 --- a/test/cases/require-data-html/webpack.config.js +++ /dev/null @@ -1,59 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'development', - devtool: false, - - resolve: { - alias: { - Images: path.join(__dirname, './src/images/'), - }, - }, - - output: { - path: path.join(__dirname, 'dist/'), - // test auto publicPath with `html` method - publicPath: 'auto', - }, - - entry: { - index: './src/views/home.pug', - 'pages/about': './src/views/about.pug', - }, - - plugins: [new PugPlugin()], - - module: { - rules: [ - { - test: /\.pug$/, - use: [ - { - loader: 'html-loader', - options: { - sources: { - urlFilter: (attribute, value) => path.isAbsolute(value) && fs.existsSync(value), - }, - }, - }, - { - loader: PugPlugin.loader, - options: { - method: 'html', - }, - }, - ], - }, - - { - test: /\.(png|jpe?g)/, - type: 'asset/resource', - generator: { - filename: 'assets/images/[name].[hash:8][ext]', - }, - }, - ], - }, -}; \ No newline at end of file diff --git a/test/cases/require-data-render/expected/about.html b/test/cases/require-data-render/expected/about.html index f6a4c327..250d8ebe 100644 --- a/test/cases/require-data-render/expected/about.html +++ b/test/cases/require-data-render/expected/about.html @@ -1 +1 @@ -title - about

About

\ No newline at end of file +title - about

About

\ No newline at end of file diff --git a/test/cases/require-data-render/expected/index.html b/test/cases/require-data-render/expected/index.html index a02ca8c7..0fcd5520 100644 --- a/test/cases/require-data-render/expected/index.html +++ b/test/cases/require-data-render/expected/index.html @@ -1 +1 @@ -title - home

Home

\ No newline at end of file +title - home

Home

\ No newline at end of file diff --git a/test/cases/require-data-render/webpack.config.js b/test/cases/require-data-render/webpack.config.js index c85d46be..38ddd3ea 100644 --- a/test/cases/require-data-render/webpack.config.js +++ b/test/cases/require-data-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = false; @@ -7,40 +7,25 @@ module.exports = { mode: isProduction ? 'production' : 'development', devtool: isProduction ? false : 'source-map', + output: { + path: path.join(__dirname, 'dist/'), + }, + resolve: { alias: { Images: path.join(__dirname, './src/images/'), }, }, - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - entry: { index: './src/views/home.pug', about: './src/views/about.pug', }, - plugins: [ - new PugPlugin({ - js: { - filename: isProduction ? '[name].[contenthash:8].js' : '[name].js', - }, - }), - ], + plugins: [new PugPlugin()], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { test: /\.(png|jpg|jpeg)/, type: 'asset/resource', @@ -50,4 +35,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-esm-script/expected/main.js b/test/cases/require-esm-script/expected/main.js index b4ad8983..1defcfa7 100644 --- a/test/cases/require-esm-script/expected/main.js +++ b/test/cases/require-esm-script/expected/main.js @@ -1 +1 @@ -(()=>{var e={852:()=>{console.log(">> module")}},r={};function o(t){var n=r[t];if(void 0!==n)return n.exports;var a=r[t]={exports:{}};return e[t](a,a.exports,o),a.exports}o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";o(852),console.log(">> main")})()})(); \ No newline at end of file +(()=>{var e={338:()=>{console.log(">> module")}},r={};function o(t){var n=r[t];if(void 0!==n)return n.exports;var a=r[t]={exports:{}};return e[t](a,a.exports,o),a.exports}o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";o(338),console.log(">> main")})()})(); \ No newline at end of file diff --git a/test/cases/require-esm-script/webpack.config.js b/test/cases/require-esm-script/webpack.config.js index 1c5fad57..d2659675 100644 --- a/test/cases/require-esm-script/webpack.config.js +++ b/test/cases/require-esm-script/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,11 +19,6 @@ module.exports = { plugins: [new PugPlugin()], module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], + rules: [], }, }; diff --git a/test/cases/require-fonts/webpack.config.js b/test/cases/require-fonts/webpack.config.js index 87c0974d..96a4f837 100644 --- a/test/cases/require-fonts/webpack.config.js +++ b/test/cases/require-fonts/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { stats: { @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, + { test: /\.(png|jpg|jpeg)/, @@ -52,4 +46,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-compile/expected/index.html b/test/cases/require-images-compile/expected/index.html index 8ac17013..c932a0b4 100644 --- a/test/cases/require-images-compile/expected/index.html +++ b/test/cases/require-images-compile/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-compile/webpack.config.js b/test/cases/require-images-compile/webpack.config.js index f927a55e..a5fe2f19 100644 --- a/test/cases/require-images-compile/webpack.config.js +++ b/test/cases/require-images-compile/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -19,7 +19,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -33,15 +33,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - esModule: true, - }, - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -51,4 +42,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-html/expected/index.html b/test/cases/require-images-html/expected/index.html index 8ac17013..c932a0b4 100644 --- a/test/cases/require-images-html/expected/index.html +++ b/test/cases/require-images-html/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-html/webpack.config.js b/test/cases/require-images-html/webpack.config.js index edf52661..38c32388 100644 --- a/test/cases/require-images-html/webpack.config.js +++ b/test/cases/require-images-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -16,7 +16,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -24,25 +24,14 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - use: [ - 'html-loader', - { - loader: PugPlugin.loader, - options: { - method: 'html', - esModule: true, - }, - }, - ], - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -52,4 +41,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-render/expected/index.html b/test/cases/require-images-render/expected/index.html index 8ac17013..c932a0b4 100644 --- a/test/cases/require-images-render/expected/index.html +++ b/test/cases/require-images-render/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-render/webpack.config.js b/test/cases/require-images-render/webpack.config.js index 168caf40..38c32388 100644 --- a/test/cases/require-images-render/webpack.config.js +++ b/test/cases/require-images-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -16,7 +16,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -24,20 +24,14 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - esModule: true, - }, - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -47,4 +41,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-variable-compile/expected/index.html b/test/cases/require-images-variable-compile/expected/index.html index 1d3fc1eb..18dbbb58 100644 --- a/test/cases/require-images-variable-compile/expected/index.html +++ b/test/cases/require-images-variable-compile/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-variable-compile/webpack.config.js b/test/cases/require-images-variable-compile/webpack.config.js index a30f013c..8da4bd39 100644 --- a/test/cases/require-images-variable-compile/webpack.config.js +++ b/test/cases/require-images-variable-compile/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -19,7 +19,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -27,20 +27,14 @@ module.exports = { js: { filename: isProduction ? '[name].[contenthash:8].js' : '[name].js', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - esModule: true, - }, - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -50,4 +44,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-variable-html/expected/index.html b/test/cases/require-images-variable-html/expected/index.html index e72ff5c9..ad998d5d 100644 --- a/test/cases/require-images-variable-html/expected/index.html +++ b/test/cases/require-images-variable-html/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-variable-html/webpack.config.js b/test/cases/require-images-variable-html/webpack.config.js index edf52661..38c32388 100644 --- a/test/cases/require-images-variable-html/webpack.config.js +++ b/test/cases/require-images-variable-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -16,7 +16,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -24,25 +24,14 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - use: [ - 'html-loader', - { - loader: PugPlugin.loader, - options: { - method: 'html', - esModule: true, - }, - }, - ], - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -52,4 +41,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-images-variable-render/expected/index.html b/test/cases/require-images-variable-render/expected/index.html index e72ff5c9..ad998d5d 100644 --- a/test/cases/require-images-variable-render/expected/index.html +++ b/test/cases/require-images-variable-render/expected/index.html @@ -1 +1 @@ -The title \ No newline at end of file +MyTitle \ No newline at end of file diff --git a/test/cases/require-images-variable-render/webpack.config.js b/test/cases/require-images-variable-render/webpack.config.js index 168caf40..38c32388 100644 --- a/test/cases/require-images-variable-render/webpack.config.js +++ b/test/cases/require-images-variable-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -16,7 +16,7 @@ module.exports = { }, entry: { - index: './src/views/index.pug?customData=' + JSON.stringify({ options: { title: 'The title' } }), + index: './src/views/index.pug?' + JSON.stringify({ customData: { options: { title: 'MyTitle' } } }), }, plugins: [ @@ -24,20 +24,14 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, + loaderOptions: { + esModule: true, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - esModule: true, - }, - }, - { test: /\.(png|jpg|jpeg|ico)/, type: 'asset/resource', @@ -47,4 +41,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-img-svg-fragment-filename/webpack.config.js b/test/cases/require-img-svg-fragment-filename/webpack.config.js index 02d120bf..779289cd 100644 --- a/test/cases/require-img-svg-fragment-filename/webpack.config.js +++ b/test/cases/require-img-svg-fragment-filename/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { stats: { @@ -21,14 +21,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - //method: 'render', - }, - }, - { test: /\.(png|jpe?g|svg)$/, type: 'asset/resource', diff --git a/test/cases/require-img-svg-fragment/webpack.config.js b/test/cases/require-img-svg-fragment/webpack.config.js index ffa43eef..611d5e3f 100644 --- a/test/cases/require-img-svg-fragment/webpack.config.js +++ b/test/cases/require-img-svg-fragment/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { stats: { @@ -21,14 +21,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - //method: 'render', - }, - }, - { test: /\.(png|jpe?g|svg)$/, type: 'asset/resource', diff --git a/test/cases/require-scripts-compile/expected/assets/img/image.697ef306.png b/test/cases/require-scripts-compile/expected/assets/img/image.697ef306.png deleted file mode 100644 index 29d95462..00000000 Binary files a/test/cases/require-scripts-compile/expected/assets/img/image.697ef306.png and /dev/null differ diff --git a/test/cases/require-scripts-compile/expected/assets/js/226.f852ef3c.js b/test/cases/require-scripts-compile/expected/assets/js/226.f852ef3c.js deleted file mode 100644 index 52b157cc..00000000 --- a/test/cases/require-scripts-compile/expected/assets/js/226.f852ef3c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[226],{226:e=>{e.exports={render:e=>"# Render: "+e}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/assets/js/763.1d188f13.js b/test/cases/require-scripts-compile/expected/assets/js/763.1d188f13.js deleted file mode 100644 index 8141e4aa..00000000 --- a/test/cases/require-scripts-compile/expected/assets/js/763.1d188f13.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[763],{763:e=>{e.exports=function(e){return""+"

Component

"}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/assets/js/script-b.099f8d18.js b/test/cases/require-scripts-compile/expected/assets/js/script-b.099f8d18.js deleted file mode 100644 index f531ad4b..00000000 --- a/test/cases/require-scripts-compile/expected/assets/js/script-b.099f8d18.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var r,e={534:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT B");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={871:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(534)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/index.html b/test/cases/require-scripts-compile/expected/index.html deleted file mode 100644 index c909158e..00000000 --- a/test/cases/require-scripts-compile/expected/index.html +++ /dev/null @@ -1 +0,0 @@ -

Hello World!

# Render: content

\ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/style.64442462.css b/test/cases/require-scripts-compile/expected/style.64442462.css deleted file mode 100644 index 4dcf0670..00000000 --- a/test/cases/require-scripts-compile/expected/style.64442462.css +++ /dev/null @@ -1,5 +0,0 @@ -h1 { - color: red; - background-color: rebeccapurple; - background-image: url(/assets/img/image.697ef306.png); -} \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/about/main.js b/test/cases/require-scripts-compile/src/views/about/main.js deleted file mode 100644 index 8611fd68..00000000 --- a/test/cases/require-scripts-compile/src/views/about/main.js +++ /dev/null @@ -1 +0,0 @@ -console.log('about'); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/component.pug b/test/cases/require-scripts-compile/src/views/component.pug deleted file mode 100644 index 5e7a26e2..00000000 --- a/test/cases/require-scripts-compile/src/views/component.pug +++ /dev/null @@ -1 +0,0 @@ -h2 Component \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/index.pug b/test/cases/require-scripts-compile/src/views/index.pug deleted file mode 100644 index 3a929330..00000000 --- a/test/cases/require-scripts-compile/src/views/index.pug +++ /dev/null @@ -1,20 +0,0 @@ -html - head - link(rel='stylesheet' href=require('./style.css')) - - //- stay as is - script(src='/static/vendor/main.js') - //- extract common code in separate chunk file and inject one before original script - script(src=require('./module/script-a.js')) - script(src=require('./module/script-b.js')) - body - h1 Hello World! - - var lib = require('./module/lib.js') - h2= lib.render('content') - - #footer - - //- if is same basename then add index to next same filename - script(src=require('./main.js')) - script(src=require('./about/main.js')) - //- test next not empty line \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/main.js b/test/cases/require-scripts-compile/src/views/main.js deleted file mode 100644 index 5233ad68..00000000 --- a/test/cases/require-scripts-compile/src/views/main.js +++ /dev/null @@ -1,2 +0,0 @@ -const tmpl = require('./component.pug'); -console.log(tmpl()); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/module/lib.js b/test/cases/require-scripts-compile/src/views/module/lib.js deleted file mode 100644 index 0b55331e..00000000 --- a/test/cases/require-scripts-compile/src/views/module/lib.js +++ /dev/null @@ -1,7 +0,0 @@ -const Lib = { - render(content) { - return '# Render: ' + content; - }, -}; - -module.exports = Lib; \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/module/script-a.js b/test/cases/require-scripts-compile/src/views/module/script-a.js deleted file mode 100644 index f242a390..00000000 --- a/test/cases/require-scripts-compile/src/views/module/script-a.js +++ /dev/null @@ -1,4 +0,0 @@ -import Lib from './lib'; - -const out = Lib.render('SCRIPT A'); -console.log(out); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/module/script-b.js b/test/cases/require-scripts-compile/src/views/module/script-b.js deleted file mode 100644 index ca749ed1..00000000 --- a/test/cases/require-scripts-compile/src/views/module/script-b.js +++ /dev/null @@ -1,4 +0,0 @@ -import Lib from './lib'; - -const out = Lib.render('SCRIPT B'); -console.log(out); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/src/views/style.css b/test/cases/require-scripts-compile/src/views/style.css deleted file mode 100644 index 13c3acde..00000000 --- a/test/cases/require-scripts-compile/src/views/style.css +++ /dev/null @@ -1,5 +0,0 @@ -h1 { - color: red; - background-color: rebeccapurple; - background-image: url('./image.png'); -} \ No newline at end of file diff --git a/test/cases/require-scripts-compile/webpack.config.js b/test/cases/require-scripts-compile/webpack.config.js deleted file mode 100644 index cede6ba7..00000000 --- a/test/cases/require-scripts-compile/webpack.config.js +++ /dev/null @@ -1,59 +0,0 @@ -const path = require('path'); -const PugPlugin = require('../../../'); - -module.exports = { - mode: 'production', - devtool: false, - - output: { - path: path.join(__dirname, 'dist/'), - publicPath: '/', - }, - - entry: { - index: './src/views/index.pug', - }, - - plugins: [ - new PugPlugin({ - js: { - filename: 'assets/js/[name].[contenthash:8].js', - }, - css: { - filename: '[name].[contenthash:8].css', - }, - }), - ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - { - test: /\.(css)$/, - loader: 'css-loader', - }, - { - test: /\.(png|jpg|jpeg|ico)$/, - type: 'asset/resource', - generator: { - filename: 'assets/img/[name].[hash:8][ext]', - }, - }, - ], - }, - - optimization: { - // test injection of chunks in html - splitChunks: { - chunks: 'all', - minChunks: 1, - minSize: 50, - }, - }, -}; \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/css/style.e093582f.css b/test/cases/require-scripts-html/expected/assets/css/style.6af604e3.css similarity index 100% rename from test/cases/require-scripts-html/expected/assets/css/style.e093582f.css rename to test/cases/require-scripts-html/expected/assets/css/style.6af604e3.css diff --git a/test/cases/require-scripts-html/expected/assets/js/226.f852ef3c.js b/test/cases/require-scripts-html/expected/assets/js/226.f852ef3c.js deleted file mode 100644 index 52b157cc..00000000 --- a/test/cases/require-scripts-html/expected/assets/js/226.f852ef3c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[226],{226:e=>{e.exports={render:e=>"# Render: "+e}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/817.c66d84a9.js b/test/cases/require-scripts-html/expected/assets/js/817.c66d84a9.js new file mode 100644 index 00000000..5da326f0 --- /dev/null +++ b/test/cases/require-scripts-html/expected/assets/js/817.c66d84a9.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[817],{817:e=>{e.exports={render:e=>"# Render: "+e}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/925.615b6e9f.js b/test/cases/require-scripts-html/expected/assets/js/925.615b6e9f.js new file mode 100644 index 00000000..b46f9e68 --- /dev/null +++ b/test/cases/require-scripts-html/expected/assets/js/925.615b6e9f.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[925],{925:e=>{e.exports=function(e){return""+"

Component

"}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/assets/js/main.1.1190bb6b.js b/test/cases/require-scripts-html/expected/assets/js/main.1.d880f0e3.js similarity index 100% rename from test/cases/require-scripts-compile/expected/assets/js/main.1.1190bb6b.js rename to test/cases/require-scripts-html/expected/assets/js/main.1.d880f0e3.js diff --git a/test/cases/require-scripts-compile/expected/assets/js/main.e84bcba0.js b/test/cases/require-scripts-html/expected/assets/js/main.5c1615c3.js similarity index 80% rename from test/cases/require-scripts-compile/expected/assets/js/main.e84bcba0.js rename to test/cases/require-scripts-html/expected/assets/js/main.5c1615c3.js index 341aad67..d3eb25ec 100644 --- a/test/cases/require-scripts-compile/expected/assets/js/main.e84bcba0.js +++ b/test/cases/require-scripts-html/expected/assets/js/main.5c1615c3.js @@ -1 +1 @@ -(()=>{var r,e={158:(r,e,o)=>{const n=o(763);console.log(n())}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={179:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(158)));t=n.O(t)})(); \ No newline at end of file +(()=>{var r,e={652:(r,e,o)=>{const n=o(925);console.log(n())}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={792:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(652)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/main.a34f44d3.js b/test/cases/require-scripts-html/expected/assets/js/main.a34f44d3.js deleted file mode 100644 index 4c6df0d5..00000000 --- a/test/cases/require-scripts-html/expected/assets/js/main.a34f44d3.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e={350:(e,o,t)=>{"use strict";t.r(o),t.d(o,{default:()=>r});const r="

Component

"}},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var l=o[r]={exports:{}};return e[r](l,l.exports,t),l.exports}t.d=(e,o)=>{for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{const e=t(350);console.log(e())})()})(); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/script-a.008175e1.js b/test/cases/require-scripts-html/expected/assets/js/script-a.008175e1.js deleted file mode 100644 index 95fb7829..00000000 --- a/test/cases/require-scripts-html/expected/assets/js/script-a.008175e1.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var r,e={102:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT A");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={87:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(102)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/script-a.173e38ed.js b/test/cases/require-scripts-html/expected/assets/js/script-a.f48853e2.js similarity index 81% rename from test/cases/require-scripts-render/expected/assets/js/script-a.173e38ed.js rename to test/cases/require-scripts-html/expected/assets/js/script-a.f48853e2.js index 4165271f..1028c835 100644 --- a/test/cases/require-scripts-render/expected/assets/js/script-a.173e38ed.js +++ b/test/cases/require-scripts-html/expected/assets/js/script-a.f48853e2.js @@ -1 +1 @@ -(()=>{"use strict";var r,e={961:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT A");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={87:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(961)));t=n.O(t)})(); \ No newline at end of file +(()=>{"use strict";var r,e={197:(r,e,o)=>{var n=o(817);const t=o.n(n)().render("SCRIPT A");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={28:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(197)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/script-b.03999db0.js b/test/cases/require-scripts-html/expected/assets/js/script-b.03999db0.js deleted file mode 100644 index 2c9cda04..00000000 --- a/test/cases/require-scripts-html/expected/assets/js/script-b.03999db0.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var r,e={971:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT B");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={871:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(971)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/script-b.63995971.js b/test/cases/require-scripts-html/expected/assets/js/script-b.63995971.js new file mode 100644 index 00000000..5672bd33 --- /dev/null +++ b/test/cases/require-scripts-html/expected/assets/js/script-b.63995971.js @@ -0,0 +1 @@ +(()=>{"use strict";var r,e={76:(r,e,o)=>{var n=o(817);const t=o.n(n)().render("SCRIPT B");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={879:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(76)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/index.html b/test/cases/require-scripts-html/expected/index.html index e31e183b..2abfcb73 100644 --- a/test/cases/require-scripts-html/expected/index.html +++ b/test/cases/require-scripts-html/expected/index.html @@ -1 +1,5 @@ -

Hello World!

# Render: content

\ No newline at end of file + + +

Hello World!

# Render: content

+ + \ No newline at end of file diff --git a/test/cases/require-scripts-html/webpack.config.js b/test/cases/require-scripts-html/webpack.config.js index 1cfd9dd1..98052008 100644 --- a/test/cases/require-scripts-html/webpack.config.js +++ b/test/cases/require-scripts-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -7,7 +7,6 @@ module.exports = { output: { path: path.join(__dirname, 'dist/'), - publicPath: '/', }, entry: { @@ -27,26 +26,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - use: [ - { - loader: 'html-loader', - options: { - sources: { - // ignore static resources - urlFilter: (attribute, value, resourcePath) => !/\/static\/vendor/.test(value), - }, - }, - }, - { - loader: PugPlugin.loader, - options: { - method: 'html', - }, - }, - ], - }, { test: /\.(css)$/, loader: 'css-loader', @@ -69,4 +48,4 @@ module.exports = { minSize: 50, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-scripts-render/expected/assets/js/226.f852ef3c.js b/test/cases/require-scripts-render/expected/assets/js/226.f852ef3c.js deleted file mode 100644 index 52b157cc..00000000 --- a/test/cases/require-scripts-render/expected/assets/js/226.f852ef3c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[226],{226:e=>{e.exports={render:e=>"# Render: "+e}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/817.c66d84a9.js b/test/cases/require-scripts-render/expected/assets/js/817.c66d84a9.js new file mode 100644 index 00000000..5da326f0 --- /dev/null +++ b/test/cases/require-scripts-render/expected/assets/js/817.c66d84a9.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[817],{817:e=>{e.exports={render:e=>"# Render: "+e}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/925.615b6e9f.js b/test/cases/require-scripts-render/expected/assets/js/925.615b6e9f.js new file mode 100644 index 00000000..b46f9e68 --- /dev/null +++ b/test/cases/require-scripts-render/expected/assets/js/925.615b6e9f.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[925],{925:e=>{e.exports=function(e){return""+"

Component

"}}}]); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/main.1.1190bb6b.js b/test/cases/require-scripts-render/expected/assets/js/main.1.1190bb6b.js deleted file mode 100644 index d1676c9a..00000000 --- a/test/cases/require-scripts-render/expected/assets/js/main.1.1190bb6b.js +++ /dev/null @@ -1 +0,0 @@ -console.log("about"); \ No newline at end of file diff --git a/test/cases/require-scripts-html/expected/assets/js/main.1.f34f7dd9.js b/test/cases/require-scripts-render/expected/assets/js/main.1.d880f0e3.js similarity index 100% rename from test/cases/require-scripts-html/expected/assets/js/main.1.f34f7dd9.js rename to test/cases/require-scripts-render/expected/assets/js/main.1.d880f0e3.js diff --git a/test/cases/require-scripts-render/expected/assets/js/main.1986e1de.js b/test/cases/require-scripts-render/expected/assets/js/main.1986e1de.js deleted file mode 100644 index e526bf64..00000000 --- a/test/cases/require-scripts-render/expected/assets/js/main.1986e1de.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var o={763:o=>{o.exports="

Component

"}},r={};function t(e){var n=r[e];if(void 0!==n)return n.exports;var s=r[e]={exports:{}};return o[e](s,s.exports,t),s.exports}(()=>{const o=t(763);console.log(o())})()})(); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/main.5c1615c3.js b/test/cases/require-scripts-render/expected/assets/js/main.5c1615c3.js new file mode 100644 index 00000000..d3eb25ec --- /dev/null +++ b/test/cases/require-scripts-render/expected/assets/js/main.5c1615c3.js @@ -0,0 +1 @@ +(()=>{var r,e={652:(r,e,o)=>{const n=o(925);console.log(n())}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={792:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(652)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-compile/expected/assets/js/script-a.173e38ed.js b/test/cases/require-scripts-render/expected/assets/js/script-a.f48853e2.js similarity index 81% rename from test/cases/require-scripts-compile/expected/assets/js/script-a.173e38ed.js rename to test/cases/require-scripts-render/expected/assets/js/script-a.f48853e2.js index 4165271f..1028c835 100644 --- a/test/cases/require-scripts-compile/expected/assets/js/script-a.173e38ed.js +++ b/test/cases/require-scripts-render/expected/assets/js/script-a.f48853e2.js @@ -1 +1 @@ -(()=>{"use strict";var r,e={961:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT A");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={87:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(961)));t=n.O(t)})(); \ No newline at end of file +(()=>{"use strict";var r,e={197:(r,e,o)=>{var n=o(817);const t=o.n(n)().render("SCRIPT A");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={28:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(197)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/script-b.099f8d18.js b/test/cases/require-scripts-render/expected/assets/js/script-b.099f8d18.js deleted file mode 100644 index f531ad4b..00000000 --- a/test/cases/require-scripts-render/expected/assets/js/script-b.099f8d18.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var r,e={534:(r,e,o)=>{var n=o(226);const t=o.n(n)().render("SCRIPT B");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={871:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(534)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/assets/js/script-b.63995971.js b/test/cases/require-scripts-render/expected/assets/js/script-b.63995971.js new file mode 100644 index 00000000..5672bd33 --- /dev/null +++ b/test/cases/require-scripts-render/expected/assets/js/script-b.63995971.js @@ -0,0 +1 @@ +(()=>{"use strict";var r,e={76:(r,e,o)=>{var n=o(817);const t=o.n(n)().render("SCRIPT B");console.log(t)}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var l=1/0;for(f=0;f=a)&&Object.keys(n.O).every((r=>n.O[r](o[i])))?o.splice(i--,1):(v=!1,a0&&r[f-1][2]>a;f--)r[f]=r[f-1];r[f]=[o,t,a]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var o in e)n.o(e,o)&&!n.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:e[o]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={879:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[l,v,i]=o,s=0;if(l.some((e=>0!==r[e]))){for(t in v)n.o(v,t)&&(n.m[t]=v[t]);if(i)var f=i(n)}for(e&&e(o);sn(76)));t=n.O(t)})(); \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/index.html b/test/cases/require-scripts-render/expected/index.html index a3f07e17..57834247 100644 --- a/test/cases/require-scripts-render/expected/index.html +++ b/test/cases/require-scripts-render/expected/index.html @@ -1 +1,5 @@ -

Hello World!

# Render: content

\ No newline at end of file + + +

Hello World!

# Render: content

+ + \ No newline at end of file diff --git a/test/cases/require-scripts-render/expected/style.css b/test/cases/require-scripts-render/expected/style.css index 4dcf0670..9e2d970f 100644 --- a/test/cases/require-scripts-render/expected/style.css +++ b/test/cases/require-scripts-render/expected/style.css @@ -1,5 +1,5 @@ h1 { color: red; background-color: rebeccapurple; - background-image: url(/assets/img/image.697ef306.png); + background-image: url(assets/img/image.697ef306.png); } \ No newline at end of file diff --git a/test/cases/require-scripts-render/webpack.config.js b/test/cases/require-scripts-render/webpack.config.js index 8d9bd793..7867c10a 100644 --- a/test/cases/require-scripts-render/webpack.config.js +++ b/test/cases/require-scripts-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -7,7 +7,6 @@ module.exports = { output: { path: path.join(__dirname, 'dist/'), - publicPath: '/', }, entry: { @@ -24,13 +23,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, { test: /\.(css)$/, loader: 'css-loader', @@ -53,4 +45,4 @@ module.exports = { minSize: 50, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/require-scripts-same-src/expected/about.html b/test/cases/require-scripts-same-src/expected/about.html index 0861f16a..88010405 100644 --- a/test/cases/require-scripts-same-src/expected/about.html +++ b/test/cases/require-scripts-same-src/expected/about.html @@ -1 +1 @@ -

About

\ No newline at end of file +

About

\ No newline at end of file diff --git a/test/cases/require-scripts-same-src/expected/assets/js/main.545e8465.js b/test/cases/require-scripts-same-src/expected/assets/js/main.6de20bbc.js similarity index 100% rename from test/cases/require-scripts-same-src/expected/assets/js/main.545e8465.js rename to test/cases/require-scripts-same-src/expected/assets/js/main.6de20bbc.js diff --git a/test/cases/require-scripts-same-src/expected/home.html b/test/cases/require-scripts-same-src/expected/home.html index 00518985..fc9955c8 100644 --- a/test/cases/require-scripts-same-src/expected/home.html +++ b/test/cases/require-scripts-same-src/expected/home.html @@ -1 +1 @@ -

Home

\ No newline at end of file +

Home

\ No newline at end of file diff --git a/test/cases/require-scripts-same-src/expected/index.html b/test/cases/require-scripts-same-src/expected/index.html index 33b2cfef..2aa996a5 100644 --- a/test/cases/require-scripts-same-src/expected/index.html +++ b/test/cases/require-scripts-same-src/expected/index.html @@ -1 +1 @@ -

Index

\ No newline at end of file +

Index

\ No newline at end of file diff --git a/test/cases/require-scripts-same-src/webpack.config.js b/test/cases/require-scripts-same-src/webpack.config.js index 1097eee0..baf0bcc3 100644 --- a/test/cases/require-scripts-same-src/webpack.config.js +++ b/test/cases/require-scripts-same-src/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -7,7 +7,6 @@ module.exports = { output: { path: path.join(__dirname, 'dist/'), - publicPath: '/', }, entry: { @@ -23,16 +22,4 @@ module.exports = { }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-assets-multi-lang-page/expected/de/index.html b/test/cases/resolve-assets-multi-lang-page/expected/de/index.html index 0d9a80d7..ebd782cc 100644 --- a/test/cases/resolve-assets-multi-lang-page/expected/de/index.html +++ b/test/cases/resolve-assets-multi-lang-page/expected/de/index.html @@ -1 +1 @@ -Test

Hello World!

de

\ No newline at end of file +Test

Hello World!

de

\ No newline at end of file diff --git a/test/cases/resolve-assets-multi-lang-page/expected/en/index.html b/test/cases/resolve-assets-multi-lang-page/expected/en/index.html index fb16cdf3..30443bb4 100644 --- a/test/cases/resolve-assets-multi-lang-page/expected/en/index.html +++ b/test/cases/resolve-assets-multi-lang-page/expected/en/index.html @@ -1 +1 @@ -Test

Hello World!

en

\ No newline at end of file +Test

Hello World!

en

\ No newline at end of file diff --git a/test/cases/resolve-assets-multi-lang-page/expected/main.5f2f104e.js b/test/cases/resolve-assets-multi-lang-page/expected/main.5317c1f6.js similarity index 100% rename from test/cases/resolve-assets-multi-lang-page/expected/main.5f2f104e.js rename to test/cases/resolve-assets-multi-lang-page/expected/main.5317c1f6.js diff --git a/test/cases/resolve-assets-multi-lang-page/webpack.config.js b/test/cases/resolve-assets-multi-lang-page/webpack.config.js index a36dfdc6..8ee7dd80 100644 --- a/test/cases/resolve-assets-multi-lang-page/webpack.config.js +++ b/test/cases/resolve-assets-multi-lang-page/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -30,14 +30,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, { test: /\.(css)$/, loader: 'css-loader', }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-context-image-pug-scss/webpack.config.js b/test/cases/resolve-context-image-pug-scss/webpack.config.js index 807614d0..9fac44e1 100644 --- a/test/cases/resolve-context-image-pug-scss/webpack.config.js +++ b/test/cases/resolve-context-image-pug-scss/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const srcPath = path.resolve(__dirname, 'src'); @@ -33,19 +33,15 @@ module.exports = { css: { filename: 'assets/css/[name].[contenthash:8].css', }, + preprocessorOptions: { + // Pug compiler option + basedir: srcPath, + }, }), ], module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -60,4 +56,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-context-script-ext/expected/assets/js/file1.474d5d99.js b/test/cases/resolve-context-script-ext/expected/assets/js/file1.87a6d6c3.js similarity index 100% rename from test/cases/resolve-context-script-ext/expected/assets/js/file1.474d5d99.js rename to test/cases/resolve-context-script-ext/expected/assets/js/file1.87a6d6c3.js diff --git a/test/cases/resolve-context-script-ext/expected/assets/js/file2.744f639e.js b/test/cases/resolve-context-script-ext/expected/assets/js/file2.86574c98.js similarity index 100% rename from test/cases/resolve-context-script-ext/expected/assets/js/file2.744f639e.js rename to test/cases/resolve-context-script-ext/expected/assets/js/file2.86574c98.js diff --git a/test/cases/resolve-context-script-ext/expected/assets/js/file3.0aef0969.js b/test/cases/resolve-context-script-ext/expected/assets/js/file3.2521cc3a.js similarity index 100% rename from test/cases/resolve-context-script-ext/expected/assets/js/file3.0aef0969.js rename to test/cases/resolve-context-script-ext/expected/assets/js/file3.2521cc3a.js diff --git a/test/cases/resolve-context-script-ext/expected/assets/js/file4.f8c7c4c3.js b/test/cases/resolve-context-script-ext/expected/assets/js/file4.5d286a55.js similarity index 100% rename from test/cases/resolve-context-script-ext/expected/assets/js/file4.f8c7c4c3.js rename to test/cases/resolve-context-script-ext/expected/assets/js/file4.5d286a55.js diff --git a/test/cases/resolve-context-script-ext/expected/index.html b/test/cases/resolve-context-script-ext/expected/index.html index 137fc999..4d021190 100644 --- a/test/cases/resolve-context-script-ext/expected/index.html +++ b/test/cases/resolve-context-script-ext/expected/index.html @@ -1 +1 @@ -

Hello Pug!

\ No newline at end of file +

Hello Pug!

\ No newline at end of file diff --git a/test/cases/resolve-context-script-ext/webpack.config.js b/test/cases/resolve-context-script-ext/webpack.config.js index aba24bd8..19e374ee 100644 --- a/test/cases/resolve-context-script-ext/webpack.config.js +++ b/test/cases/resolve-context-script-ext/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -28,18 +28,10 @@ module.exports = { js: { filename: 'assets/js/[name].[contenthash:8].js', }, + preprocessorOptions: { + // Pug compiler option + basedir: __dirname, + }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-context-script/expected/file1.f9ba2f3a.js b/test/cases/resolve-context-script/expected/file1.87a6d6c3.js similarity index 100% rename from test/cases/resolve-context-script/expected/file1.f9ba2f3a.js rename to test/cases/resolve-context-script/expected/file1.87a6d6c3.js diff --git a/test/cases/resolve-context-script/expected/file2.4320afe1.js b/test/cases/resolve-context-script/expected/file2.86574c98.js similarity index 100% rename from test/cases/resolve-context-script/expected/file2.4320afe1.js rename to test/cases/resolve-context-script/expected/file2.86574c98.js diff --git a/test/cases/resolve-context-script/expected/file3.295068b4.js b/test/cases/resolve-context-script/expected/file3.2521cc3a.js similarity index 100% rename from test/cases/resolve-context-script/expected/file3.295068b4.js rename to test/cases/resolve-context-script/expected/file3.2521cc3a.js diff --git a/test/cases/resolve-context-script/expected/file4.90f9eb4b.js b/test/cases/resolve-context-script/expected/file4.5d286a55.js similarity index 100% rename from test/cases/resolve-context-script/expected/file4.90f9eb4b.js rename to test/cases/resolve-context-script/expected/file4.5d286a55.js diff --git a/test/cases/resolve-context-script/expected/home/index.html b/test/cases/resolve-context-script/expected/home/index.html index 0ab5dbb1..3c8a1a4a 100644 --- a/test/cases/resolve-context-script/expected/home/index.html +++ b/test/cases/resolve-context-script/expected/home/index.html @@ -1 +1 @@ -

Hello Pug!

\ No newline at end of file +

Hello Pug!

\ No newline at end of file diff --git a/test/cases/resolve-context-script/webpack.config.js b/test/cases/resolve-context-script/webpack.config.js index 10132a5f..38a94cd6 100644 --- a/test/cases/resolve-context-script/webpack.config.js +++ b/test/cases/resolve-context-script/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const srcPath = path.resolve(__dirname, 'src'); @@ -29,18 +29,10 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, + preprocessorOptions: { + // Pug compiler option + basedir: srcPath, + }, }), ], - - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-css-in-diff-output-html/expected/de/index.html b/test/cases/resolve-css-in-diff-output-html/expected/de/index.html index 409033ee..c48da98f 100644 --- a/test/cases/resolve-css-in-diff-output-html/expected/de/index.html +++ b/test/cases/resolve-css-in-diff-output-html/expected/de/index.html @@ -1 +1 @@ -Test

Hello World!

de

\ No newline at end of file +Test

Hello World!

de

\ No newline at end of file diff --git a/test/cases/resolve-css-in-diff-output-html/expected/index.html b/test/cases/resolve-css-in-diff-output-html/expected/index.html index a3d57860..3c6bc746 100644 --- a/test/cases/resolve-css-in-diff-output-html/expected/index.html +++ b/test/cases/resolve-css-in-diff-output-html/expected/index.html @@ -1 +1 @@ -Test

Hello World!

en

\ No newline at end of file +Test

Hello World!

en

\ No newline at end of file diff --git a/test/cases/resolve-css-in-diff-output-html/expected/js/main.5f2f104e.js b/test/cases/resolve-css-in-diff-output-html/expected/js/main.5317c1f6.js similarity index 100% rename from test/cases/resolve-css-in-diff-output-html/expected/js/main.5f2f104e.js rename to test/cases/resolve-css-in-diff-output-html/expected/js/main.5317c1f6.js diff --git a/test/cases/resolve-css-in-diff-output-html/webpack.config.js b/test/cases/resolve-css-in-diff-output-html/webpack.config.js index 32c06cf1..b21740f2 100644 --- a/test/cases/resolve-css-in-diff-output-html/webpack.config.js +++ b/test/cases/resolve-css-in-diff-output-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -36,14 +36,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, { test: /\.(css)$/, loader: 'css-loader', }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-js-in-diff-output-html/webpack.config.js b/test/cases/resolve-js-in-diff-output-html/webpack.config.js index 45c4fa16..86cdaaaa 100644 --- a/test/cases/resolve-js-in-diff-output-html/webpack.config.js +++ b/test/cases/resolve-js-in-diff-output-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -37,14 +37,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, { test: /\.(css)$/, loader: 'css-loader', }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-js-pug-same-name/webpack.config.js b/test/cases/resolve-js-pug-same-name/webpack.config.js index bc968468..8edbfbd9 100644 --- a/test/cases/resolve-js-pug-same-name/webpack.config.js +++ b/test/cases/resolve-js-pug-same-name/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -46,14 +46,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, { test: /\.(css)$/, loader: 'css-loader', }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/multiple-chunks-same-filename/expected/assets/css/main.a26c8eb5.css b/test/cases/resolve-manifest.json/expected/css/style.47f4da55.css similarity index 90% rename from test/cases/multiple-chunks-same-filename/expected/assets/css/main.a26c8eb5.css rename to test/cases/resolve-manifest.json/expected/css/style.47f4da55.css index 9054080f..adc68fa6 100644 --- a/test/cases/multiple-chunks-same-filename/expected/assets/css/main.a26c8eb5.css +++ b/test/cases/resolve-manifest.json/expected/css/style.47f4da55.css @@ -1,3 +1,3 @@ h1 { color: red; -} \ No newline at end of file +} diff --git a/test/cases/require-scripts-compile/src/views/image.png b/test/cases/resolve-manifest.json/expected/img/image.png similarity index 100% rename from test/cases/require-scripts-compile/src/views/image.png rename to test/cases/resolve-manifest.json/expected/img/image.png diff --git a/test/cases/resolve-manifest.json/expected/index.html b/test/cases/resolve-manifest.json/expected/index.html new file mode 100644 index 00000000..012a0638 --- /dev/null +++ b/test/cases/resolve-manifest.json/expected/index.html @@ -0,0 +1 @@ +

Hello World!

\ No newline at end of file diff --git a/test/cases/resolve-manifest.json/expected/js/main.5317c1f6.js b/test/cases/resolve-manifest.json/expected/js/main.5317c1f6.js new file mode 100644 index 00000000..1ce9c884 --- /dev/null +++ b/test/cases/resolve-manifest.json/expected/js/main.5317c1f6.js @@ -0,0 +1 @@ +console.log(">> main"); \ No newline at end of file diff --git a/test/cases/resolve-manifest.json/expected/webmanifest.json b/test/cases/resolve-manifest.json/expected/webmanifest.json new file mode 100644 index 00000000..6a7ad32b --- /dev/null +++ b/test/cases/resolve-manifest.json/expected/webmanifest.json @@ -0,0 +1,14 @@ +{ + "name": "test app", + "start_url": "/", + "display": "standalone", + "background_color": "#fff", + "theme_color": "#673ab8", + "icons": [ + { + "src": "assets/img/image.png", + "type": "image/png", + "sizes": "512x512" + } + ] +} diff --git a/test/cases/resolve-manifest.json/src/index.pug b/test/cases/resolve-manifest.json/src/index.pug index 2bf6f0ab..3708ce54 100644 --- a/test/cases/resolve-manifest.json/src/index.pug +++ b/test/cases/resolve-manifest.json/src/index.pug @@ -1,15 +1,15 @@ html head //- load source manifest file - link(href=require('./webmanifest.json') rel='manifest') + link(href='./webmanifest.json' rel='manifest') //- load source style - link(href=require('./style.css') rel='stylesheet') + link(href='./style.css' rel='stylesheet') //- load source script - script(src=require('./main.js') defer='defer') + script(src='./main.js' defer='defer') body h1 Hello World! //- load source image - img(src=require('./image.png')) + img(src='./image.png') diff --git a/test/cases/resolve-manifest.json/webpack.config.js b/test/cases/resolve-manifest.json/webpack.config.js index 4a5756ea..11b7bd52 100644 --- a/test/cases/resolve-manifest.json/webpack.config.js +++ b/test/cases/resolve-manifest.json/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -9,12 +9,11 @@ module.exports = { publicPath: '/', }, - entry: { - index: './src/index.pug', - }, - plugins: [ new PugPlugin({ + entry: { + index: './src/index.pug', + }, js: { filename: 'js/[name].[contenthash:8].js', }, @@ -26,11 +25,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - { test: /\.css$/, use: ['css-loader'], @@ -49,8 +43,6 @@ module.exports = { test: /\.(png|jpe?g|ico|svg)$/, type: 'asset/resource', generator: { - // TODO: replace in manifest the source images - //filename: 'assets/img/[name].[hash:8][ext]', filename: 'img/[name][ext]', }, }, diff --git a/test/cases/resolve-styles-from-module.ext/webpack.config.js b/test/cases/resolve-styles-from-module.ext/webpack.config.js index 0a522e0f..733ed7b9 100644 --- a/test/cases/resolve-styles-from-module.ext/webpack.config.js +++ b/test/cases/resolve-styles-from-module.ext/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { output: { @@ -17,13 +17,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -37,4 +31,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css b/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css index f79d4b2c..5e5eabdc 100644 --- a/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css +++ b/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css @@ -4,4 +4,4 @@ * Copyleft 2022 @test-fixtures/scss * Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE) *//*! test to resolve url in css from module */.image-bg{background-image:url(/assets/img/fixture-image-bg.697ef306.png);width:246px;height:200px;background-repeat:no-repeat;background-size:cover}.test-fixture-primary{color:navy}.test-fixture-secondary{color:purple}.test-fixture-success{color:green}.test-fixture-info{color:aqua}.test-fixture-warning{color:#ff0}.test-fixture-danger{color:red} -/*# sourceMappingURL=fixture-styles.28854a3c.css.map */ \ No newline at end of file +/*# sourceMappingURL=fixture-styles.28854a3c.css.map*/ \ No newline at end of file diff --git a/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css.map b/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css.map index ea0d76e4..3169ede9 100644 --- a/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css.map +++ b/test/cases/resolve-styles-from-module/expected/assets/css/fixture-styles.28854a3c.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./../../../node_modules/@test-fixtures/scss/dist/fixture-styles.css"],"names":[],"mappings":"AAAA;;;;;CAAA,CAMA,4CAAA,CACA,UACE,wDAAA,CACA,WAAA,CACA,YAAA,CACA,2BAAA,CACA,qBAAA,CAGF,sBACE,UAAA,CAGF,wBACE,YAAA,CAGF,sBACE,WAAA,CAGF,mBACE,UAAA,CAGF,sBACE,UAAA,CAGF,qBACE,SAAA","sourcesContent":["/*!\n* SCSS test fixture (https://github.com/webdiscus/test-fixtures-scss)\n* This is compiled CSS bundle.\n* Copyleft 2022 @test-fixtures/scss\n* Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE)\n*/\n/*! test to resolve url in css from module */\n.image-bg {\n background-image: url(../fixture-images/fixture-image-bg.png);\n width: 246px;\n height: 200px;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.test-fixture-primary {\n color: navy\n}\n\n.test-fixture-secondary {\n color: purple\n}\n\n.test-fixture-success {\n color: green\n}\n\n.test-fixture-info {\n color: aqua\n}\n\n.test-fixture-warning {\n color: #ff0\n}\n\n.test-fixture-danger {\n color: red\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/fixture-styles.28854a3c.css","mappings":"AAAA;;;;;CAAA,CAMA,6CACA,UACE,yDACA,YACA,aACA,4BACA,sBAGF,sBACE,WAGF,wBACE,aAGF,sBACE,YAGF,mBACE,WAGF,sBACE,WAGF,qBACE","sources":["webpack:///../../../node_modules/@test-fixtures/scss/dist/fixture-styles.css"],"sourcesContent":["/*!\n* SCSS test fixture (https://github.com/webdiscus/test-fixtures-scss)\n* This is compiled CSS bundle.\n* Copyleft 2022 @test-fixtures/scss\n* Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE)\n*/\n/*! test to resolve url in css from module */\n.image-bg {\n background-image: url(../fixture-images/fixture-image-bg.png);\n width: 246px;\n height: 200px;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.test-fixture-primary {\n color: navy\n}\n\n.test-fixture-secondary {\n color: purple\n}\n\n.test-fixture-success {\n color: green\n}\n\n.test-fixture-info {\n color: aqua\n}\n\n.test-fixture-warning {\n color: #ff0\n}\n\n.test-fixture-danger {\n color: red\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css b/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css index d8b7b64d..41f21b9f 100644 --- a/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css +++ b/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css @@ -3,4 +3,4 @@ * Copyleft 2022 @test-fixtures/scss * Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE) *//*! test to resolve url in scss from module */.image-bg{background-image:url(/assets/img/fixture-image-bg.697ef306.png);width:246px;height:200px;background-repeat:no-repeat;background-size:cover}.test-fixture-primary{color:navy}.test-fixture-secondary{color:purple}.test-fixture-success{color:green}.test-fixture-info{color:aqua}.test-fixture-warning{color:#ff0}.test-fixture-danger{color:red}/*! styles.scss */h1{color:navy} -/*# sourceMappingURL=style.1e33ba24.css.map */ \ No newline at end of file +/*# sourceMappingURL=style.1e33ba24.css.map*/ \ No newline at end of file diff --git a/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css.map b/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css.map index 4f59c34e..c6700c8d 100644 --- a/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css.map +++ b/test/cases/resolve-styles-from-module/expected/assets/css/style.1e33ba24.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./../../../node_modules/@test-fixtures/scss/src/mixins/_comments.scss","webpack://./../../../node_modules/@test-fixtures/scss/src/mixins/_images.scss","webpack://./../../../node_modules/@test-fixtures/scss/src/_styles.scss","webpack://./../../../node_modules/@test-fixtures/scss/src/_variables.scss","webpack://./src/views/style.scss"],"names":[],"mappings":"AACE;;;;CAAA,CAAA,6CAAA,CCCA,UACE,wDAAA,CACA,WAAA,CACA,YAAA,CACA,2BAAA,CACA,qBAAA,CAAA,sBCCF,UCPQ,CDUV,wBACE,YCVU,CDaZ,sBACE,WCbQ,CDgBV,mBACE,UChBK,CDmBP,sBACE,UCnBQ,CDsBV,qBACE,SCtBO,CCHT,iBAAA,CACA,GACE,UDJQ","sourcesContent":["@mixin license() {\n /*!\n * SCSS test fixture (https://github.com/webdiscus/test-fixtures-scss)\n * Copyleft 2022 @test-fixtures/scss\n * Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE)\n */\n}\n","@mixin image-bg {\n /*! test to resolve url in scss from module */\n .image-bg {\n background-image: url('../../fixture-images/fixture-image-bg.png');\n width: 246px;\n height: 200px;\n background-repeat: no-repeat;\n background-size: cover;\n }\n}\n","@use 'variables' as vars;\n@use 'mixins/comments';\n@use 'mixins/images';\n\n@include comments.license();\n@include images.image-bg();\n\n.test-fixture-primary {\n color: vars.$primary;\n}\n\n.test-fixture-secondary {\n color: vars.$secondary;\n}\n\n.test-fixture-success {\n color: vars.$success;\n}\n\n.test-fixture-info {\n color: vars.$info;\n}\n\n.test-fixture-warning {\n color: vars.$warning;\n}\n\n.test-fixture-danger {\n color: vars.$danger;\n}\n","// color variables\n$primary: navy;\n$secondary: purple;\n$success: green;\n$info: cyan;\n$warning: yellow;\n$danger: red;\n","//- resolve 'sass' field in package.json of the style module\n@use '@test-fixtures/scss' as fixture;\n\n/*! styles.scss */\nh1 {\n color: fixture.$primary;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/style.1e33ba24.css","mappings":"AACE;;;;CAAA,+CCCA,UACE,yDACA,YACA,aACA,4BACA,4CCCF,UCPQ,CDUV,wBACE,YCVU,CDaZ,sBACE,WCbQ,CDgBV,mBACE,UChBK,CDmBP,sBACE,UCnBQ,CDsBV,qBACE,SCtBO,CCHT,kBACA,GACE,UDJQ","sources":["webpack:///../../../node_modules/@test-fixtures/scss/src/mixins/_comments.scss","webpack:///../../../node_modules/@test-fixtures/scss/src/mixins/_images.scss","webpack:///../../../node_modules/@test-fixtures/scss/src/_styles.scss","webpack:///../../../node_modules/@test-fixtures/scss/src/_variables.scss","webpack:///./src/views/style.scss"],"sourcesContent":["@mixin license() {\n /*!\n * SCSS test fixture (https://github.com/webdiscus/test-fixtures-scss)\n * Copyleft 2022 @test-fixtures/scss\n * Licensed under ISC (https://github.com/webdiscus/test-fixtures-scss/blob/master/LICENSE)\n */\n}\n","@mixin image-bg {\n /*! test to resolve url in scss from module */\n .image-bg {\n background-image: url('../../fixture-images/fixture-image-bg.png');\n width: 246px;\n height: 200px;\n background-repeat: no-repeat;\n background-size: cover;\n }\n}\n","@use 'variables' as vars;\n@use 'mixins/comments';\n@use 'mixins/images';\n\n@include comments.license();\n@include images.image-bg();\n\n.test-fixture-primary {\n color: vars.$primary;\n}\n\n.test-fixture-secondary {\n color: vars.$secondary;\n}\n\n.test-fixture-success {\n color: vars.$success;\n}\n\n.test-fixture-info {\n color: vars.$info;\n}\n\n.test-fixture-warning {\n color: vars.$warning;\n}\n\n.test-fixture-danger {\n color: vars.$danger;\n}\n","// color variables\n$primary: navy;\n$secondary: purple;\n$success: green;\n$info: cyan;\n$warning: yellow;\n$danger: red;\n","//- resolve 'sass' field in package.json of the style module\n@use '@test-fixtures/scss' as fixture;\n\n/*! styles.scss */\nh1 {\n color: fixture.$primary;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/resolve-styles-from-module/webpack.config.js b/test/cases/resolve-styles-from-module/webpack.config.js index 3481dcbd..408ee9dd 100644 --- a/test/cases/resolve-styles-from-module/webpack.config.js +++ b/test/cases/resolve-styles-from-module/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -35,13 +35,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -55,4 +49,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-styles-with-same-name-hash/webpack.config.js b/test/cases/resolve-styles-with-same-name-hash/webpack.config.js index aed702d7..1ef52214 100644 --- a/test/cases/resolve-styles-with-same-name-hash/webpack.config.js +++ b/test/cases/resolve-styles-with-same-name-hash/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -26,13 +26,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -40,4 +34,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-styles-with-same-name/webpack.config.js b/test/cases/resolve-styles-with-same-name/webpack.config.js index 556f0140..7e5bbacf 100644 --- a/test/cases/resolve-styles-with-same-name/webpack.config.js +++ b/test/cases/resolve-styles-with-same-name/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -41,4 +35,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css b/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css index a9b56cf5..4d96ef09 100644 --- a/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css +++ b/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css @@ -1,2 +1,2 @@ .about{color:green} -/*# sourceMappingURL=about.7d6690af.css.map */ \ No newline at end of file +/*# sourceMappingURL=about.7d6690af.css.map*/ \ No newline at end of file diff --git a/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css.map b/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css.map index 66958050..1cbce6b4 100644 --- a/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css.map +++ b/test/cases/resolve-styles/expected/assets/css/about.7d6690af.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/assets/styles/about.css"],"names":[],"mappings":"AAAA,OACE,WAAA","sourcesContent":[".about {\n color: green;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/about.7d6690af.css","mappings":"AAAA,OACE","sources":["webpack:///./src/assets/styles/about.css"],"sourcesContent":[".about {\n color: green;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css b/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css index 26f9e4f1..fd6ada2c 100644 --- a/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css +++ b/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css @@ -1,2 +1,2 @@ h1{color:blue} -/*# sourceMappingURL=main.d49c4294.css.map */ \ No newline at end of file +/*# sourceMappingURL=main.d49c4294.css.map*/ \ No newline at end of file diff --git a/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css.map b/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css.map index 1f827ab1..b79d4624 100644 --- a/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css.map +++ b/test/cases/resolve-styles/expected/assets/css/main.d49c4294.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/assets/styles/main.scss"],"names":[],"mappings":"AACA,GACE,UAFM","sourcesContent":["$color: blue;\nh1 {\n color: $color;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/main.d49c4294.css","mappings":"AACA,GACE,UAFM","sources":["webpack:///./src/assets/styles/main.scss"],"sourcesContent":["$color: blue;\nh1 {\n color: $color;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css b/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css index 08c35cc9..922d5e4d 100644 --- a/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css +++ b/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css @@ -1,2 +1,2 @@ h2{color:aqua} -/*# sourceMappingURL=style.21dcdad7.css.map */ \ No newline at end of file +/*# sourceMappingURL=style.21dcdad7.css.map*/ \ No newline at end of file diff --git a/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css.map b/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css.map index f27e894c..aa7137c6 100644 --- a/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css.map +++ b/test/cases/resolve-styles/expected/assets/css/style.21dcdad7.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://./src/views/style.css"],"names":[],"mappings":"AAAA,GACE,UAAA","sourcesContent":["h2 {\n color: cyan;\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/css/style.21dcdad7.css","mappings":"AAAA,GACE","sources":["webpack:///./src/views/style.css"],"sourcesContent":["h2 {\n color: cyan;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/test/cases/resolve-styles/webpack.config.js b/test/cases/resolve-styles/webpack.config.js index 930d7d28..44d25b27 100644 --- a/test/cases/resolve-styles/webpack.config.js +++ b/test/cases/resolve-styles/webpack.config.js @@ -1,6 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); -const extractCss = require('../../../src/Modules/extractCss'); +const PugPlugin = require('@test/pug-plugin'); const isProduction = true; @@ -29,9 +28,7 @@ module.exports = { js: { filename: '[name].[contenthash:8].js', }, - // test deprecation message - // TODO: replace the `extractCss` with `css` in v5.0 - extractCss: { + css: { filename: 'assets/css/[name].[contenthash:8].css', }, }), @@ -39,18 +36,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'compile', - }, - }, - { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-alias-relative/webpack.config.js b/test/cases/resolve-url-alias-relative/webpack.config.js index ed7bfff6..2a21f4c5 100644 --- a/test/cases/resolve-url-alias-relative/webpack.config.js +++ b/test/cases/resolve-url-alias-relative/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -31,13 +31,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -53,4 +47,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-alias/webpack.config.js b/test/cases/resolve-url-alias/webpack.config.js index 9448cb16..9221c86d 100644 --- a/test/cases/resolve-url-alias/webpack.config.js +++ b/test/cases/resolve-url-alias/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -33,13 +33,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -55,4 +49,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-deep/expected/assets/css/main.css b/test/cases/resolve-url-deep/expected/assets/css/main.css index 8417f4de..27615946 100644 --- a/test/cases/resolve-url-deep/expected/assets/css/main.css +++ b/test/cases/resolve-url-deep/expected/assets/css/main.css @@ -1,4 +1,2 @@ @font-face{font-family:"Material Icons";font-style:normal;font-weight:400;src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons/MaterialIcons-Regular.woff2) format("woff2")}body{color:maroon}.mat2{font-family:"Material Icons";font-size:40px} -/*# sourceURL=webpack://./src/styles/fonts/icons.scss */ -/*# sourceURL=webpack://./src/styles/main.scss */ -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvZm9udHMvaWNvbnMuc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvbWFpbi5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQ0UsNEJBQUEsQ0FDQSxpQkFBQSxDQUNBLGVBQUEsQ0FDQSxrSEFBQSxDQ0ZGLEtBQ0UsWUFBQSxDQUdGLE1BQ0UsNEJER1ksQ0NGWixjQUFBIiwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoJ01hdGVyaWFsIEljb25zJyksXG4gIGxvY2FsKCdNYXRlcmlhbEljb25zLVJlZ3VsYXInKSxcbiAgdXJsKCdGb250cy9NYXRlcmlhbEljb25zL01hdGVyaWFsSWNvbnMtUmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbn1cblxuLy8gbW9kdWxlIGV4cG9ydFxuJGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnOyIsIkB1c2UgJy4vZm9udHMvaWNvbnMnO1xuXG5ib2R5IHtcbiAgY29sb3I6IG1hcm9vbjtcbn1cblxuLm1hdDIge1xuICBmb250LWZhbWlseTogaWNvbnMuJGZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IDQwcHg7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9tYWluLmNzcyIsIm1hcHBpbmdzIjoiQUFBQSxXQUNFLDZCQUNBLGtCQUNBLGdCQUNBLG1IQ0ZGLEtBQ0UsYUFHRixNQUNFLDRCREdZLENDRloiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGVzL2ZvbnRzL2ljb25zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vc3JjL3N0eWxlcy9tYWluLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoJ01hdGVyaWFsIEljb25zJyksXG4gIGxvY2FsKCdNYXRlcmlhbEljb25zLVJlZ3VsYXInKSxcbiAgdXJsKCdGb250cy9NYXRlcmlhbEljb25zL01hdGVyaWFsSWNvbnMtUmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbn1cblxuLy8gbW9kdWxlIGV4cG9ydFxuJGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnOyIsIkB1c2UgJy4vZm9udHMvaWNvbnMnO1xuXG5ib2R5IHtcbiAgY29sb3I6IG1hcm9vbjtcbn1cblxuLm1hdDIge1xuICBmb250LWZhbWlseTogaWNvbnMuJGZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IDQwcHg7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/test/cases/resolve-url-deep/expected/assets/css/style.css b/test/cases/resolve-url-deep/expected/assets/css/style.css index 30972407..8d71d017 100644 --- a/test/cases/resolve-url-deep/expected/assets/css/style.css +++ b/test/cases/resolve-url-deep/expected/assets/css/style.css @@ -1,4 +1,2 @@ @font-face{font-family:"Material Icons";font-style:normal;font-weight:400;src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons/MaterialIcons-Regular.woff2) format("woff2")}h1{color:#191970}.mat{font-family:"Material Icons";font-size:20px} -/*# sourceURL=webpack://./src/styles/fonts/icons.scss */ -/*# sourceURL=webpack://./src/views/style.scss */ -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvZm9udHMvaWNvbnMuc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy92aWV3cy9zdHlsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQ0UsNEJBQUEsQ0FDQSxpQkFBQSxDQUNBLGVBQUEsQ0FDQSxrSEFBQSxDQ0ZGLEdBQ0UsYUFBQSxDQUdGLEtBQ0UsNEJER1ksQ0NGWixjQUFBIiwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoJ01hdGVyaWFsIEljb25zJyksXG4gIGxvY2FsKCdNYXRlcmlhbEljb25zLVJlZ3VsYXInKSxcbiAgdXJsKCdGb250cy9NYXRlcmlhbEljb25zL01hdGVyaWFsSWNvbnMtUmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbn1cblxuLy8gbW9kdWxlIGV4cG9ydFxuJGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnOyIsIkB1c2UgJy4uL3N0eWxlcy9mb250cy9pY29ucyc7XG5cbmgxIHtcbiAgY29sb3I6IG1pZG5pZ2h0Ymx1ZTtcbn1cblxuLm1hdCB7XG4gIGZvbnQtZmFtaWx5OiBpY29ucy4kZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn0iXSwic291cmNlUm9vdCI6IiJ9 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9zdHlsZS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsV0FDRSw2QkFDQSxrQkFDQSxnQkFDQSxtSENGRixHQUNFLGNBR0YsS0FDRSw0QkRHWSxDQ0ZaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL3N0eWxlcy9mb250cy9pY29ucy5zY3NzIiwid2VicGFjazovLy8uL3NyYy92aWV3cy9zdHlsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBzcmM6IGxvY2FsKCdNYXRlcmlhbCBJY29ucycpLFxuICBsb2NhbCgnTWF0ZXJpYWxJY29ucy1SZWd1bGFyJyksXG4gIHVybCgnRm9udHMvTWF0ZXJpYWxJY29ucy9NYXRlcmlhbEljb25zLVJlZ3VsYXIud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG59XG5cbi8vIG1vZHVsZSBleHBvcnRcbiRmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJzsiLCJAdXNlICcuLi9zdHlsZXMvZm9udHMvaWNvbnMnO1xuXG5oMSB7XG4gIGNvbG9yOiBtaWRuaWdodGJsdWU7XG59XG5cbi5tYXQge1xuICBmb250LWZhbWlseTogaWNvbnMuJGZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IDIwcHg7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/test/cases/resolve-url-deep/webpack.config.js b/test/cases/resolve-url-deep/webpack.config.js index 443e196d..ae2f4450 100644 --- a/test/cases/resolve-url-deep/webpack.config.js +++ b/test/cases/resolve-url-deep/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -31,19 +31,10 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], }, - { test: /\.(woff|woff2|eot|ttf|otf|svg)$/i, type: 'asset/resource', @@ -55,4 +46,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-in-css-html/webpack.config.js b/test/cases/resolve-url-in-css-html/webpack.config.js index ab9c137b..7ccfac0c 100644 --- a/test/cases/resolve-url-in-css-html/webpack.config.js +++ b/test/cases/resolve-url-in-css-html/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,22 +27,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - use: [ - { - loader: 'html-loader', - }, - - { - loader: PugPlugin.loader, - options: { - method: 'html', - //method: 'render', - }, - }, - ], - }, { test: /\.(css)$/, loader: 'css-loader', @@ -65,4 +49,4 @@ module.exports = { // minSize: 50, // }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-in-css-render/webpack.config.js b/test/cases/resolve-url-in-css-render/webpack.config.js index c895c6bf..62c0d6d5 100644 --- a/test/cases/resolve-url-in-css-render/webpack.config.js +++ b/test/cases/resolve-url-in-css-render/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css)$/, @@ -49,4 +43,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-relative-public-path/webpack.config.js b/test/cases/resolve-url-relative-public-path/webpack.config.js index 38fae596..ef03569c 100644 --- a/test/cases/resolve-url-relative-public-path/webpack.config.js +++ b/test/cases/resolve-url-relative-public-path/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -32,13 +32,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -52,4 +46,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/resolve-url-relative/webpack.config.js b/test/cases/resolve-url-relative/webpack.config.js index 8006d748..7d4ddbd5 100644 --- a/test/cases/resolve-url-relative/webpack.config.js +++ b/test/cases/resolve-url-relative/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, diff --git a/test/cases/responsive-images-many-duplicates/webpack.config.js b/test/cases/responsive-images-many-duplicates/webpack.config.js index 38288220..8a87b26a 100644 --- a/test/cases/responsive-images-many-duplicates/webpack.config.js +++ b/test/cases/responsive-images-many-duplicates/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -40,13 +40,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -65,4 +59,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/responsive-images-pug-scss/expected/assets/js/main.51f27c38.js b/test/cases/responsive-images-pug-scss/expected/assets/js/main.51f27c38.js deleted file mode 100644 index 4ce77df6..00000000 --- a/test/cases/responsive-images-pug-scss/expected/assets/js/main.51f27c38.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./src/assets/scripts/main.js": -/*!************************************!*\ - !*** ./src/assets/scripts/main.js ***! - \************************************/ -/***/ (() => { - -eval("console.log('>> Responsive images');\n\n\n//# sourceURL=webpack:///./src/assets/scripts/main.js?"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module can't be inlined because the eval devtool is used. -/******/ var __webpack_exports__ = {}; -/******/ __webpack_modules__["./src/assets/scripts/main.js"](); -/******/ -/******/ })() -; \ No newline at end of file diff --git a/test/cases/responsive-images-pug-scss/expected/assets/js/main.c6d5091d.js b/test/cases/responsive-images-pug-scss/expected/assets/js/main.c6d5091d.js new file mode 100644 index 00000000..63364a66 --- /dev/null +++ b/test/cases/responsive-images-pug-scss/expected/assets/js/main.c6d5091d.js @@ -0,0 +1,9 @@ +/******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +/*!************************************!*\ + !*** ./src/assets/scripts/main.js ***! + \************************************/ +console.log('>> Responsive images'); + +/******/ })() +; \ No newline at end of file diff --git a/test/cases/responsive-images-pug-scss/expected/pages/home.html b/test/cases/responsive-images-pug-scss/expected/pages/home.html index 77d0afde..953debde 100644 --- a/test/cases/responsive-images-pug-scss/expected/pages/home.html +++ b/test/cases/responsive-images-pug-scss/expected/pages/home.html @@ -1 +1 @@ -

Placeholder via style attribute

Placeholder via CSS

Responsive image

responsive image

Resized images

size=80size=120&format=png

Resized image in CSS

Placeholder via style attribute

\ No newline at end of file +

Placeholder via style attribute

Placeholder via CSS

Responsive image

responsive image

Resized images

size=80size=120&format=png

Resized image in CSS

Placeholder via style attribute

\ No newline at end of file diff --git a/test/cases/responsive-images-pug-scss/webpack.config.js b/test/cases/responsive-images-pug-scss/webpack.config.js index 64acfd83..c9a2f68f 100644 --- a/test/cases/responsive-images-pug-scss/webpack.config.js +++ b/test/cases/responsive-images-pug-scss/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'development', @@ -35,13 +35,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, @@ -60,4 +54,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/responsive-images/expected/assets/img/favicon-32w.png b/test/cases/responsive-images/expected/assets/img/favicon-32w.png index f6ddf21e..a0cdfa6c 100644 Binary files a/test/cases/responsive-images/expected/assets/img/favicon-32w.png and b/test/cases/responsive-images/expected/assets/img/favicon-32w.png differ diff --git a/test/cases/responsive-images/expected/assets/img/image-100w.jpg b/test/cases/responsive-images/expected/assets/img/image-100w.jpg deleted file mode 100644 index f7971701..00000000 Binary files a/test/cases/responsive-images/expected/assets/img/image-100w.jpg and /dev/null differ diff --git a/test/cases/responsive-images/expected/assets/img/image-100w.png b/test/cases/responsive-images/expected/assets/img/image-100w.png deleted file mode 100644 index e52d8b1d..00000000 Binary files a/test/cases/responsive-images/expected/assets/img/image-100w.png and /dev/null differ diff --git a/test/cases/responsive-images/expected/assets/img/image-110w.jpg b/test/cases/responsive-images/expected/assets/img/image-110w.jpg new file mode 100644 index 00000000..b1e36e24 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-110w.jpg differ diff --git a/test/cases/responsive-images/expected/assets/img/image-120w.jpg b/test/cases/responsive-images/expected/assets/img/image-120w.jpg new file mode 100644 index 00000000..7d1897a3 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-120w.jpg differ diff --git a/test/cases/responsive-images/expected/assets/img/image-130w.png b/test/cases/responsive-images/expected/assets/img/image-130w.png new file mode 100644 index 00000000..17a2ccb8 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-130w.png differ diff --git a/test/cases/responsive-images/expected/assets/img/image-140w.png b/test/cases/responsive-images/expected/assets/img/image-140w.png new file mode 100644 index 00000000..a659bdae Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-140w.png differ diff --git a/test/cases/responsive-images/expected/assets/img/image-160w.jpg b/test/cases/responsive-images/expected/assets/img/image-160w.jpg deleted file mode 100644 index 438a1e65..00000000 Binary files a/test/cases/responsive-images/expected/assets/img/image-160w.jpg and /dev/null differ diff --git a/test/cases/responsive-images/expected/assets/img/image-160w.png b/test/cases/responsive-images/expected/assets/img/image-160w.png index 013d7377..379fe937 100644 Binary files a/test/cases/responsive-images/expected/assets/img/image-160w.png and b/test/cases/responsive-images/expected/assets/img/image-160w.png differ diff --git a/test/cases/responsive-images/expected/assets/img/image-160w.webp b/test/cases/responsive-images/expected/assets/img/image-160w.webp deleted file mode 100644 index 238589d7..00000000 Binary files a/test/cases/responsive-images/expected/assets/img/image-160w.webp and /dev/null differ diff --git a/test/cases/responsive-images/expected/assets/img/image-50w.jpg b/test/cases/responsive-images/expected/assets/img/image-50w.jpg new file mode 100644 index 00000000..e2a9cb96 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-50w.jpg differ diff --git a/test/cases/responsive-images/expected/assets/img/image-50w.png b/test/cases/responsive-images/expected/assets/img/image-50w.png new file mode 100644 index 00000000..ec725212 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-50w.png differ diff --git a/test/cases/responsive-images/expected/assets/img/image-60w.jpg b/test/cases/responsive-images/expected/assets/img/image-60w.jpg new file mode 100644 index 00000000..222cfb70 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-60w.jpg differ diff --git a/test/cases/responsive-images/expected/assets/img/image-70w.jpg b/test/cases/responsive-images/expected/assets/img/image-70w.jpg new file mode 100644 index 00000000..cf982e51 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-70w.jpg differ diff --git a/test/cases/responsive-images/expected/assets/img/image-75w.webp b/test/cases/responsive-images/expected/assets/img/image-75w.webp new file mode 100644 index 00000000..c0026f41 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-75w.webp differ diff --git a/test/cases/responsive-images/expected/assets/img/image-80w.webp b/test/cases/responsive-images/expected/assets/img/image-80w.webp new file mode 100644 index 00000000..0fcad2d7 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-80w.webp differ diff --git a/test/cases/responsive-images/expected/assets/img/image-85w.webp b/test/cases/responsive-images/expected/assets/img/image-85w.webp new file mode 100644 index 00000000..b8fa7851 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-85w.webp differ diff --git a/test/cases/responsive-images/expected/assets/img/image-90w.webp b/test/cases/responsive-images/expected/assets/img/image-90w.webp new file mode 100644 index 00000000..c9a5bcc6 Binary files /dev/null and b/test/cases/responsive-images/expected/assets/img/image-90w.webp differ diff --git a/test/cases/responsive-images/expected/pages/home.html b/test/cases/responsive-images/expected/pages/home.html index 7155314f..3b84d1fa 100644 --- a/test/cases/responsive-images/expected/pages/home.html +++ b/test/cases/responsive-images/expected/pages/home.html @@ -1,3 +1,3 @@ -

../assets/img/image-160w.png

responsive image

src webp: ../assets/img/image-160w.webp

srcSet: ../assets/img/image-100w.webp 100w,../assets/img/image-160w.webp 160w

Image +responsive image 105pxresponsive image srcset

../assets/img/image-160w.png

responsive image

src webp: ../assets/img/image-80w.webp

srcSet: ../assets/img/image-80w.webp 80w,../assets/img/image-85w.webp 85w,../assets/img/image-90w.webp 90w

Image width: 160 -height: 130

\ No newline at end of file +height: 114

\ No newline at end of file diff --git a/test/cases/responsive-images/src/views/index.pug b/test/cases/responsive-images/src/views/index.pug index e6fe49b2..e95959cd 100644 --- a/test/cases/responsive-images/src/views/index.pug +++ b/test/cases/responsive-images/src/views/index.pug @@ -2,20 +2,24 @@ html head link(rel='icon' href=require('~Images/favicon.png?size=32')) body + //- resize & convert image + img(src=require("~Images/image.png?prop=src&format=webp&size=105") alt="responsive image 105px") + img(src=require("~Images/image.png?prop=src&format=webp&size=100") srcset=require('~Images/image.png?sizes[]=110,sizes[]=120&format=jpg') alt="responsive image srcset") + - const img = { - src: require('~Images/image.png?size=200'), - srcSet: require('~Images/image.png?sizes[]=100,sizes[]=200,sizes[]=300&format=jpg'), + src: require('~Images/image.png?size=50'), + srcSet: require('~Images/image.png?sizes[]=50,sizes[]=60,sizes[]=70&format=jpg'), } p.default= require('~Images/image.png') img.responsible(srcset=img.srcSet src=img.src alt="responsive image") - img.json(src=require('~Images/image.png?{size:105, format:"webp"}')) + img.json(src=require('~Images/image.png?{size:75, format:"webp"}')) - p src webp: #{require("~Images/image.png?prop=src&format=webp&size=200")} - p srcSet: #{require("~Images/image.png?prop=srcSet&format=webp&sizes[]=100,sizes[]=200,sizes[]=300&placeholder=true")} + p src webp: #{require("~Images/image.png?prop=src&format=webp&size=80")} + p srcSet: #{require("~Images/image.png?prop=srcSet&format=webp&sizes[]=80,sizes[]=85,sizes[]=90&placeholder=true")} p. Image width: #{require("~Images/image.png?prop=width")} - height: #{require("~Images/image.png?prop=height&sizes[]=100,sizes[]=200")} \ No newline at end of file + height: #{require("~Images/image.png?prop=height&sizes[]=130,sizes[]=140")} diff --git a/test/cases/responsive-images/webpack.config.js b/test/cases/responsive-images/webpack.config.js index b1b5416a..1f96d90a 100644 --- a/test/cases/responsive-images/webpack.config.js +++ b/test/cases/responsive-images/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -30,14 +30,6 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - // images loader { test: /\.(gif|png|jpe?g|ico|svg|webp)$/i, @@ -55,4 +47,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/test/cases/split-chunk-css-js/expected/assets/js/main.055e99b8.js b/test/cases/split-chunk-css-js/expected/assets/js/main.055e99b8.js deleted file mode 100644 index 7b2fa431..00000000 --- a/test/cases/split-chunk-css-js/expected/assets/js/main.055e99b8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[179],{225:(e,s,l)=>{l.r(s);var n=l(784),a=l.n(n);console.log(">> main.js",a().getTitle())}},e=>{e.O(0,[216],(()=>(225,e(e.s=225)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-css-js/expected/assets/js/main.4dc16f39.js b/test/cases/split-chunk-css-js/expected/assets/js/main.4dc16f39.js new file mode 100644 index 00000000..5a19891b --- /dev/null +++ b/test/cases/split-chunk-css-js/expected/assets/js/main.4dc16f39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[792],{803:(e,s,l)=>{l.r(s);var n=l(696),a=l.n(n);console.log(">> main.js",a().getTitle())}},e=>{e.O(0,[96],(()=>(803,e(e.s=803)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-css-js/expected/assets/js/runtime.6f30c2d5.js b/test/cases/split-chunk-css-js/expected/assets/js/runtime.700c82c7.js similarity index 94% rename from test/cases/split-chunk-css-js/expected/assets/js/runtime.6f30c2d5.js rename to test/cases/split-chunk-css-js/expected/assets/js/runtime.700c82c7.js index a8d21449..423cb190 100644 --- a/test/cases/split-chunk-css-js/expected/assets/js/runtime.6f30c2d5.js +++ b/test/cases/split-chunk-css-js/expected/assets/js/runtime.700c82c7.js @@ -1 +1 @@ -(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(v=0;v=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[v-1][2]>a;v--)e[v]=e[v-1];e[v]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var v=f(t)}for(r&&r(o);u{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(v=0;v=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[v-1][2]>a;v--)e[v]=e[v-1];e[v]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={121:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var v=f(t)}for(r&&r(o);u{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-css-js/expected/index.html b/test/cases/split-chunk-css-js/expected/index.html index 3d2e6f26..f111955f 100644 --- a/test/cases/split-chunk-css-js/expected/index.html +++ b/test/cases/split-chunk-css-js/expected/index.html @@ -1 +1,4 @@ -

Hello Pug!

\ No newline at end of file +

Hello Pug!

+ + + \ No newline at end of file diff --git a/test/cases/split-chunk-css-js/webpack.config.js b/test/cases/split-chunk-css-js/webpack.config.js index 18d1c9ec..b8a18cb7 100644 --- a/test/cases/split-chunk-css-js/webpack.config.js +++ b/test/cases/split-chunk-css-js/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -59,4 +53,4 @@ module.exports = { }, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.3ed3ba31.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.3ed3ba31.js deleted file mode 100644 index f2ff4b10..00000000 --- a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.3ed3ba31.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[179],{225:(e,l,o)=>{o.r(l);var s=o(815);console.log(">> main.js"),console.log("Lorem: ",s.lorem.getTitle()),console.log("Lib 1: ",s.libA.getName()),console.log("Lib 2: ",s.libB.getName())}},e=>{e.O(0,[955,41],(()=>(225,e(e.s=225)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.6903ad0e.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.6903ad0e.js new file mode 100644 index 00000000..bb188bbf --- /dev/null +++ b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/main.6903ad0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[792],{803:(e,l,o)=>{o.r(l);var s=o(854);console.log(">> main.js"),console.log("Lorem: ",s.lorem.getTitle()),console.log("Lib 1: ",s.libA.getName()),console.log("Lib 2: ",s.libB.getName())}},e=>{e.O(0,[764,34],(()=>(803,e(e.s=803)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.6f30c2d5.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.700c82c7.js similarity index 94% rename from test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.6f30c2d5.js rename to test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.700c82c7.js index a8d21449..423cb190 100644 --- a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.6f30c2d5.js +++ b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/runtime.700c82c7.js @@ -1 +1 @@ -(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(v=0;v=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[v-1][2]>a;v--)e[v]=e[v-1];e[v]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var v=f(t)}for(r&&r(o);u{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(v=0;v=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[v-1][2]>a;v--)e[v]=e[v-1];e[v]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={121:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var v=f(t)}for(r&&r(o);u{const n=s(784),o=s(667),r=s(14);console.log("Fixture script"),e.exports={lorem:n,libA:o,libB:r}},667:e=>{const t={name:"Lib A",getName(){return this.name}};e.exports=t},14:e=>{const t={name:"Lib B",getName(){return this.name}};e.exports=t}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/js.d4834fdb.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/js.d4834fdb.js new file mode 100644 index 00000000..ba4f143c --- /dev/null +++ b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/js.d4834fdb.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[34],{854:(e,t,s)=>{const n=s(696),o=s(108),r=s(581);console.log("Fixture script"),e.exports={lorem:n,libA:o,libB:r}},108:e=>{const t={name:"Lib A",getName(){return this.name}};e.exports=t},581:e=>{const t={name:"Lib B",getName(){return this.name}};e.exports=t}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-css-js/expected/assets/js/vendors.9326a07a.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.4be17acd.js similarity index 94% rename from test/cases/split-chunk-css-js/expected/assets/js/vendors.9326a07a.js rename to test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.4be17acd.js index a2eabcb3..108d2054 100644 --- a/test/cases/split-chunk-css-js/expected/assets/js/vendors.9326a07a.js +++ b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.4be17acd.js @@ -1 +1 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[216],{784:e=>{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file +(self.webpackChunk=self.webpackChunk||[]).push([[764],{696:e=>{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.ee65eb71.js b/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.ee65eb71.js deleted file mode 100644 index a4e13bb0..00000000 --- a/test/cases/split-chunk-node-module-many-vendors/expected/assets/js/vendor.test-fixtures/lorem.ee65eb71.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[955],{784:e=>{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/expected/index.html b/test/cases/split-chunk-node-module-many-vendors/expected/index.html index d416f361..d640ecec 100644 --- a/test/cases/split-chunk-node-module-many-vendors/expected/index.html +++ b/test/cases/split-chunk-node-module-many-vendors/expected/index.html @@ -1 +1,5 @@ -

Hello Pug!

\ No newline at end of file +

Hello Pug!

+ + + + \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-many-vendors/webpack.config.js b/test/cases/split-chunk-node-module-many-vendors/webpack.config.js index b1161f36..c8446694 100644 --- a/test/cases/split-chunk-node-module-many-vendors/webpack.config.js +++ b/test/cases/split-chunk-node-module-many-vendors/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -28,13 +28,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], diff --git a/test/cases/split-chunk-node-module-source/expected/assets/js/main.23bdfb00.js b/test/cases/split-chunk-node-module-source/expected/assets/js/main.23bdfb00.js new file mode 100644 index 00000000..29a6e5e7 --- /dev/null +++ b/test/cases/split-chunk-node-module-source/expected/assets/js/main.23bdfb00.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[792],{803:(e,s,l)=>{l.r(s);var n=l(696),a=l.n(n);console.log(">> Main: ",a().getTitle())}},e=>{e.O(0,[96],(()=>(803,e(e.s=803)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-source/expected/assets/js/main.e2b7242d.js b/test/cases/split-chunk-node-module-source/expected/assets/js/main.e2b7242d.js deleted file mode 100644 index 706ebb9e..00000000 --- a/test/cases/split-chunk-node-module-source/expected/assets/js/main.e2b7242d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[179],{225:(e,s,l)=>{l.r(s);var n=l(784),a=l.n(n);console.log(">> Main: ",a().getTitle())}},e=>{e.O(0,[216],(()=>(225,e(e.s=225)))),e.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-source/expected/assets/js/runtime.dde9ce93.js b/test/cases/split-chunk-node-module-source/expected/assets/js/runtime.a240b014.js similarity index 94% rename from test/cases/split-chunk-node-module-source/expected/assets/js/runtime.dde9ce93.js rename to test/cases/split-chunk-node-module-source/expected/assets/js/runtime.a240b014.js index 68139d1a..432a5b6d 100644 --- a/test/cases/split-chunk-node-module-source/expected/assets/js/runtime.dde9ce93.js +++ b/test/cases/split-chunk-node-module-source/expected/assets/js/runtime.a240b014.js @@ -1 +1 @@ -(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(s=0;s=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/",(()=>{t.b=document.baseURI||self.location.href;var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var s=f(t)}for(r&&r(o);u{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={id:e,exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(s=0;s=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/",(()=>{t.b=document.baseURI||self.location.href;var e={121:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[l,i,f]=o,u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var s=f(t)}for(r&&r(o);u{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-source/expected/assets/js/vendors.9326a07a.js b/test/cases/split-chunk-node-module-source/expected/assets/js/vendors.9326a07a.js deleted file mode 100644 index a2eabcb3..00000000 --- a/test/cases/split-chunk-node-module-source/expected/assets/js/vendors.9326a07a.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[216],{784:e=>{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-source/expected/index.html b/test/cases/split-chunk-node-module-source/expected/index.html index dded9016..de534eb8 100644 --- a/test/cases/split-chunk-node-module-source/expected/index.html +++ b/test/cases/split-chunk-node-module-source/expected/index.html @@ -1 +1,4 @@ -

Hello Pug!

\ No newline at end of file +

Hello Pug!

+ + + \ No newline at end of file diff --git a/test/cases/split-chunk-node-module-source/webpack.config.js b/test/cases/split-chunk-node-module-source/webpack.config.js index c2437afe..af037309 100644 --- a/test/cases/split-chunk-node-module-source/webpack.config.js +++ b/test/cases/split-chunk-node-module-source/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -29,13 +29,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -68,4 +62,4 @@ module.exports = { }, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/about.html b/test/cases/split-chunk-resolve-assets-dev/expected/about.html index 64550816..b2d527d9 100644 --- a/test/cases/split-chunk-resolve-assets-dev/expected/about.html +++ b/test/cases/split-chunk-resolve-assets-dev/expected/about.html @@ -1 +1,5 @@ -

About

\ No newline at end of file +

About

+ + + + \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.f8b72c0e.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.2024e678.js similarity index 90% rename from test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.f8b72c0e.js rename to test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.2024e678.js index ce6e9946..5215e69b 100644 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.f8b72c0e.js +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-a.2024e678.js @@ -1,11 +1,3 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({}); diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.ac43568a.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.8e32275c.js similarity index 90% rename from test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.ac43568a.js rename to test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.8e32275c.js index 79196f72..a87d9186 100644 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.ac43568a.js +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/main-b.8e32275c.js @@ -1,11 +1,3 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({}); diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b420.19c777f1.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b420.19c777f1.js new file mode 100644 index 00000000..2c6f8098 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b420.19c777f1.js @@ -0,0 +1,18 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-a_js-_8b420"],{ + +/***/ "./src/assets/js/main-a.js": +/*!*********************************!*\ + !*** ./src/assets/js/main-a.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +const modA = __webpack_require__(/*! ./module-a */ "./src/assets/js/module-a.js"); +const modC = __webpack_require__(/*! ./module-c */ "./src/assets/js/module-c.js"); + +console.log('>> main-a:'); +console.log(' - A: ', modA); +console.log(' - C: ', modC); + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.268fd2b2.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.268fd2b2.js deleted file mode 100644 index a73d4968..00000000 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.268fd2b2.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-a_js-_8b421"],{ - -/***/ "./src/assets/js/main-a.js": -/*!*********************************!*\ - !*** ./src/assets/js/main-a.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -eval("const modA = __webpack_require__(/*! ./module-a */ \"./src/assets/js/module-a.js\");\nconst modC = __webpack_require__(/*! ./module-c */ \"./src/assets/js/module-c.js\");\n\nconsole.log('>> main-a:');\nconsole.log(' - A: ', modA);\nconsole.log(' - C: ', modC);\n\n//# sourceURL=webpack:///./src/assets/js/main-a.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.a17876cb.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.a17876cb.js new file mode 100644 index 00000000..ff502fc1 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-a_js-_8b421.a17876cb.js @@ -0,0 +1,18 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-a_js-_8b421"],{ + +/***/ "./src/assets/js/main-a.js": +/*!*********************************!*\ + !*** ./src/assets/js/main-a.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +const modA = __webpack_require__(/*! ./module-a */ "./src/assets/js/module-a.js"); +const modC = __webpack_require__(/*! ./module-c */ "./src/assets/js/module-c.js"); + +console.log('>> main-a:'); +console.log(' - A: ', modA); +console.log(' - C: ', modC); + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e10.466a0abc.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e10.466a0abc.js new file mode 100644 index 00000000..aeba5c5c --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e10.466a0abc.js @@ -0,0 +1,18 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-b_js-_07e10"],{ + +/***/ "./src/assets/js/main-b.js": +/*!*********************************!*\ + !*** ./src/assets/js/main-b.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +const modB = __webpack_require__(/*! ./module-b */ "./src/assets/js/module-b.js"); +const modC = __webpack_require__(/*! ./module-c */ "./src/assets/js/module-c.js"); + +console.log('>> main-b:'); +console.log(' - B: ', modB); +console.log(' - C: ', modC); + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.82189694.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.82189694.js deleted file mode 100644 index dbf7da23..00000000 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.82189694.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-b_js-_07e11"],{ - -/***/ "./src/assets/js/main-b.js": -/*!*********************************!*\ - !*** ./src/assets/js/main-b.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -eval("const modB = __webpack_require__(/*! ./module-b */ \"./src/assets/js/module-b.js\");\nconst modC = __webpack_require__(/*! ./module-c */ \"./src/assets/js/module-c.js\");\n\nconsole.log('>> main-b:');\nconsole.log(' - B: ', modB);\nconsole.log(' - C: ', modC);\n\n//# sourceURL=webpack:///./src/assets/js/main-b.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.eee6cd36.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.eee6cd36.js new file mode 100644 index 00000000..6b28cde8 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_main-b_js-_07e11.eee6cd36.js @@ -0,0 +1,18 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_main-b_js-_07e11"],{ + +/***/ "./src/assets/js/main-b.js": +/*!*********************************!*\ + !*** ./src/assets/js/main-b.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +const modB = __webpack_require__(/*! ./module-b */ "./src/assets/js/module-b.js"); +const modC = __webpack_require__(/*! ./module-c */ "./src/assets/js/module-c.js"); + +console.log('>> main-b:'); +console.log(' - B: ', modB); +console.log(' - C: ', modC); + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.55cb15f3.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.55cb15f3.js new file mode 100644 index 00000000..88872202 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.55cb15f3.js @@ -0,0 +1,16 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-a_js"],{ + +/***/ "./src/assets/js/module-a.js": +/*!***********************************!*\ + !*** ./src/assets/js/module-a.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const lib = __webpack_require__(/*! ./lib */ "./src/assets/js/lib.js"); +const value = lib.methodA(); + +module.exports = value; + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.f469ad55.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.f469ad55.js deleted file mode 100644 index b5bd7540..00000000 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-a_js.f469ad55.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-a_js"],{ - -/***/ "./src/assets/js/module-a.js": -/*!***********************************!*\ - !*** ./src/assets/js/module-a.js ***! - \***********************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -eval("const lib = __webpack_require__(/*! ./lib */ \"./src/assets/js/lib.js\");\nconst value = lib.methodA();\n\nmodule.exports = value;\n\n//# sourceURL=webpack:///./src/assets/js/module-a.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.625e553e.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.625e553e.js deleted file mode 100644 index c50f8612..00000000 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.625e553e.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-b_js"],{ - -/***/ "./src/assets/js/module-b.js": -/*!***********************************!*\ - !*** ./src/assets/js/module-b.js ***! - \***********************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -eval("const lib = __webpack_require__(/*! ./lib */ \"./src/assets/js/lib.js\");\nconst value = lib.methodB();\n\nmodule.exports = value;\n\n//# sourceURL=webpack:///./src/assets/js/module-b.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.ab91b9c6.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.ab91b9c6.js new file mode 100644 index 00000000..3160ca50 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-b_js.ab91b9c6.js @@ -0,0 +1,16 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-b_js"],{ + +/***/ "./src/assets/js/module-b.js": +/*!***********************************!*\ + !*** ./src/assets/js/module-b.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const lib = __webpack_require__(/*! ./lib */ "./src/assets/js/lib.js"); +const value = lib.methodB(); + +module.exports = value; + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.45e8f540.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.45e8f540.js deleted file mode 100644 index d3df442c..00000000 --- a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.45e8f540.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-c_js"],{ - -/***/ "./src/assets/js/lib.js": -/*!******************************!*\ - !*** ./src/assets/js/lib.js ***! - \******************************/ -/***/ ((module) => { - -eval("const Lib = {\n methodA() {\n return 'module A';\n },\n methodB() {\n return 'module B';\n },\n methodC() {\n return 'common used module';\n },\n};\n\nmodule.exports = Lib;\n\n//# sourceURL=webpack:///./src/assets/js/lib.js?"); - -/***/ }), - -/***/ "./src/assets/js/module-c.js": -/*!***********************************!*\ - !*** ./src/assets/js/module-c.js ***! - \***********************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -eval("const lib = __webpack_require__(/*! ./lib */ \"./src/assets/js/lib.js\");\nconst value = lib.methodC();\n\nmodule.exports = value;\n\n//# sourceURL=webpack:///./src/assets/js/module-c.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.61c3cc78.js b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.61c3cc78.js new file mode 100644 index 00000000..3cab6f20 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-dev/expected/assets/js/scripts-src_assets_js_module-c_js.61c3cc78.js @@ -0,0 +1,38 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["scripts-src_assets_js_module-c_js"],{ + +/***/ "./src/assets/js/lib.js": +/*!******************************!*\ + !*** ./src/assets/js/lib.js ***! + \******************************/ +/***/ ((module) => { + +const Lib = { + methodA() { + return 'module A'; + }, + methodB() { + return 'module B'; + }, + methodC() { + return 'common used module'; + }, +}; + +module.exports = Lib; + +/***/ }), + +/***/ "./src/assets/js/module-c.js": +/*!***********************************!*\ + !*** ./src/assets/js/module-c.js ***! + \***********************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const lib = __webpack_require__(/*! ./lib */ "./src/assets/js/lib.js"); +const value = lib.methodC(); + +module.exports = value; + +/***/ }) + +}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/expected/index.html b/test/cases/split-chunk-resolve-assets-dev/expected/index.html index 7c321df9..93095552 100644 --- a/test/cases/split-chunk-resolve-assets-dev/expected/index.html +++ b/test/cases/split-chunk-resolve-assets-dev/expected/index.html @@ -1 +1,5 @@ -

Index

\ No newline at end of file +

Index

+ + + + \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-dev/webpack.config.js b/test/cases/split-chunk-resolve-assets-dev/webpack.config.js index 9630149b..221e7080 100644 --- a/test/cases/split-chunk-resolve-assets-dev/webpack.config.js +++ b/test/cases/split-chunk-resolve-assets-dev/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { //mode: 'production', @@ -38,13 +38,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|scss)$/, use: ['css-loader', 'sass-loader'], @@ -69,4 +63,4 @@ module.exports = { }, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/about.html b/test/cases/split-chunk-resolve-assets-prod/expected/about.html index 40377c12..416d785e 100644 --- a/test/cases/split-chunk-resolve-assets-prod/expected/about.html +++ b/test/cases/split-chunk-resolve-assets-prod/expected/about.html @@ -1 +1,5 @@ -

About

\ No newline at end of file +

About

+ + + + \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/168.5a1ae208.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/168.5a1ae208.js deleted file mode 100644 index d85982be..00000000 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/168.5a1ae208.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[168,541],{541:(o,l,e)=>{const n=e(416),s=e(703);console.log(">> main-a:"),console.log(" - A: ",n),console.log(" - C: ",s)}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/17.7bd2b7e2.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/17.7bd2b7e2.js deleted file mode 100644 index 40ce1cfe..00000000 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/17.7bd2b7e2.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[17,870],{870:(o,l,e)=>{const n=e(691),s=e(703);console.log(">> main-b:"),console.log(" - B: ",n),console.log(" - C: ",s)}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/198.f8c76e4c.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/198.f8c76e4c.js new file mode 100644 index 00000000..e265ff64 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/198.f8c76e4c.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[198],{198:(e,s,h)=>{const k=h(645).methodA();e.exports=k}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/416.dfafe31f.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/416.dfafe31f.js deleted file mode 100644 index d8f8617a..00000000 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/416.dfafe31f.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[416],{416:(e,s,h)=>{const k=h(998).methodA();e.exports=k}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/552.ee7f5099.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/552.ee7f5099.js new file mode 100644 index 00000000..973d9d04 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/552.ee7f5099.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[552,171],{171:(o,l,e)=>{const n=e(198),s=e(740);console.log(">> main-a:"),console.log(" - A: ",n),console.log(" - C: ",s)}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/673.7feba7e6.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/673.7feba7e6.js new file mode 100644 index 00000000..f0fe4253 --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/673.7feba7e6.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[673,54],{54:(o,l,e)=>{const n=e(683),s=e(740);console.log(">> main-b:"),console.log(" - B: ",n),console.log(" - C: ",s)}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/683.7cf5402e.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/683.7cf5402e.js new file mode 100644 index 00000000..32a7a76c --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/683.7cf5402e.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[683],{683:(e,s,h)=>{const k=h(645).methodB();e.exports=k}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/691.e11602ee.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/691.e11602ee.js deleted file mode 100644 index e1930436..00000000 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/691.e11602ee.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[691],{691:(e,s,h)=>{const k=h(998).methodB();e.exports=k}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/703.ea6edaa6.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/703.ea6edaa6.js deleted file mode 100644 index 628aa9e4..00000000 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/703.ea6edaa6.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[703],{998:e=>{e.exports={methodA:()=>"module A",methodB:()=>"module B",methodC:()=>"common used module"}},703:(e,o,m)=>{const d=m(998).methodC();e.exports=d}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/740.58bc6904.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/740.58bc6904.js new file mode 100644 index 00000000..eab223ba --- /dev/null +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/740.58bc6904.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[740],{645:e=>{e.exports={methodA:()=>"module A",methodB:()=>"module B",methodC:()=>"common used module"}},740:(e,o,m)=>{const d=m(645).methodC();e.exports=d}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.0a227bfd.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.fbd9dce5.js similarity index 54% rename from test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.0a227bfd.js rename to test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.fbd9dce5.js index 42aacf87..53adcff6 100644 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.0a227bfd.js +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-a.fbd9dce5.js @@ -1 +1 @@ -(()=>{"use strict";var r,e={},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,t),a.exports}t.m=e,r=[],t.O=(e,o,n,a)=>{if(!o){var i=1/0;for(l=0;l=a)&&Object.keys(t.O).every((r=>t.O[r](o[s])))?o.splice(s--,1):(v=!1,a0&&r[l-1][2]>a;l--)r[l]=r[l-1];r[l]=[o,n,a]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={991:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var n,a,[i,v,s]=o,f=0;if(i.some((e=>0!==r[e]))){for(n in v)t.o(v,n)&&(t.m[n]=v[n]);if(s)var l=s(t)}for(e&&e(o);ft(541)));n=t.O(n)})(); \ No newline at end of file +(()=>{"use strict";var r,e={},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,t),a.exports}t.m=e,r=[],t.O=(e,o,n,a)=>{if(!o){var i=1/0;for(l=0;l=a)&&Object.keys(t.O).every((r=>t.O[r](o[s])))?o.splice(s--,1):(v=!1,a0&&r[l-1][2]>a;l--)r[l]=r[l-1];r[l]=[o,n,a]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={78:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var n,a,[i,v,s]=o,f=0;if(i.some((e=>0!==r[e]))){for(n in v)t.o(v,n)&&(t.m[n]=v[n]);if(s)var l=s(t)}for(e&&e(o);ft(171)));n=t.O(n)})(); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.b402d05f.js b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.9b73f9a5.js similarity index 88% rename from test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.b402d05f.js rename to test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.9b73f9a5.js index 2c3d9fb3..3b141e9c 100644 --- a/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.b402d05f.js +++ b/test/cases/split-chunk-resolve-assets-prod/expected/assets/js/main-b.9b73f9a5.js @@ -1 +1 @@ -(()=>{"use strict";var r,e={},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,t),a.exports}t.m=e,r=[],t.O=(e,o,n,a)=>{if(!o){var i=1/0;for(l=0;l=a)&&Object.keys(t.O).every((r=>t.O[r](o[s])))?o.splice(s--,1):(v=!1,a0&&r[l-1][2]>a;l--)r[l]=r[l-1];r[l]=[o,n,a]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={562:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var n,a,[i,v,s]=o,f=0;if(i.some((e=>0!==r[e]))){for(n in v)t.o(v,n)&&(t.m[n]=v[n]);if(s)var l=s(t)}for(e&&e(o);ft(870)));n=t.O(n)})(); \ No newline at end of file +(()=>{"use strict";var r,e={},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,t),a.exports}t.m=e,r=[],t.O=(e,o,n,a)=>{if(!o){var i=1/0;for(l=0;l=a)&&Object.keys(t.O).every((r=>t.O[r](o[s])))?o.splice(s--,1):(v=!1,a0&&r[l-1][2]>a;l--)r[l]=r[l-1];r[l]=[o,n,a]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={269:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var n,a,[i,v,s]=o,f=0;if(i.some((e=>0!==r[e]))){for(n in v)t.o(v,n)&&(t.m[n]=v[n]);if(s)var l=s(t)}for(e&&e(o);ft(54)));n=t.O(n)})(); \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/expected/index.html b/test/cases/split-chunk-resolve-assets-prod/expected/index.html index 771a0a5e..67dd7006 100644 --- a/test/cases/split-chunk-resolve-assets-prod/expected/index.html +++ b/test/cases/split-chunk-resolve-assets-prod/expected/index.html @@ -1 +1,5 @@ -

Index

\ No newline at end of file +

Index

+ + + + \ No newline at end of file diff --git a/test/cases/split-chunk-resolve-assets-prod/webpack.config.js b/test/cases/split-chunk-resolve-assets-prod/webpack.config.js index 50aa093e..3269a354 100644 --- a/test/cases/split-chunk-resolve-assets-prod/webpack.config.js +++ b/test/cases/split-chunk-resolve-assets-prod/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -38,13 +38,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|scss)$/, use: ['css-loader', 'sass-loader'], @@ -69,4 +63,4 @@ module.exports = { }, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.57b041c9.js b/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.57b041c9.js deleted file mode 100644 index ceddc659..00000000 --- a/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.57b041c9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[890],{},s=>{s.O(0,[216],(()=>(784,s(s.s=784)))),s.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.f64d404c.js b/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.f64d404c.js new file mode 100644 index 00000000..72aa700b --- /dev/null +++ b/test/cases/split-chunk-vendor/expected/assets/js/fixture-lorem.f64d404c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[928],{},s=>{s.O(0,[96],(()=>(696,s(s.s=696)))),s.O()}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/assets/js/main.09bdcd86.js b/test/cases/split-chunk-vendor/expected/assets/js/main.09bdcd86.js new file mode 100644 index 00000000..7f273ddc --- /dev/null +++ b/test/cases/split-chunk-vendor/expected/assets/js/main.09bdcd86.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[792],{803:()=>{console.log(">> main.js")}},s=>{s(s.s=803)}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/assets/js/main.c56902e3.js b/test/cases/split-chunk-vendor/expected/assets/js/main.c56902e3.js deleted file mode 100644 index 0dc8098c..00000000 --- a/test/cases/split-chunk-vendor/expected/assets/js/main.c56902e3.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[179],{225:()=>{console.log(">> main.js")}},s=>{s(s.s=225)}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/assets/js/runtime.a5bd90e1.js b/test/cases/split-chunk-vendor/expected/assets/js/runtime.328d8b99.js similarity index 94% rename from test/cases/split-chunk-vendor/expected/assets/js/runtime.a5bd90e1.js rename to test/cases/split-chunk-vendor/expected/assets/js/runtime.328d8b99.js index 91ad4db4..993102d7 100644 --- a/test/cases/split-chunk-vendor/expected/assets/js/runtime.a5bd90e1.js +++ b/test/cases/split-chunk-vendor/expected/assets/js/runtime.328d8b99.js @@ -1 +1 @@ -(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={id:e,exports:{}};return r[e](i,i.exports,t),i.exports}t.m=r,e=[],t.O=(r,o,n,i)=>{if(!o){var a=1/0;for(p=0;p=i)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(l=!1,i0&&e[p-1][2]>i;p--)e[p]=e[p-1];e[p]=[o,n,i]},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,i,[a,l,f]=o,u=0;if(a.some((r=>0!==e[r]))){for(n in l)t.o(l,n)&&(t.m[n]=l[n]);if(f)var p=f(t)}for(r&&r(o);u{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={id:e,exports:{}};return r[e](i,i.exports,t),i.exports}t.m=r,e=[],t.O=(r,o,n,i)=>{if(!o){var a=1/0;for(p=0;p=i)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(l=!1,i0&&e[p-1][2]>i;p--)e[p]=e[p-1];e[p]=[o,n,i]},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={121:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,i,[a,l,f]=o,u=0;if(a.some((r=>0!==e[r]))){for(n in l)t.o(l,n)&&(t.m[n]=l[n]);if(f)var p=f(t)}for(r&&r(o);u{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/assets/js/vendors.9326a07a.js b/test/cases/split-chunk-vendor/expected/assets/js/vendors.9326a07a.js deleted file mode 100644 index a2eabcb3..00000000 --- a/test/cases/split-chunk-vendor/expected/assets/js/vendors.9326a07a.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[216],{784:e=>{const i={title:"Lorem Ipsum",data:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce efficitur pretium urna. Fusce condimentum dapibus lectus, et cursus turpis interdum ut. Nulla suscipit viverra turpis ac eleifend. Nulla dignissim auctor nulla, at imperdiet magna volutpat in. Proin neque elit, interdum sit amet mauris quis, aliquam placerat enim. Morbi cursus, ipsum eu finibus suscipit, odio velit iaculis orci, vitae malesuada orci lacus nec erat. Integer pellentesque velit a ex convallis, ac commodo justo tincidunt. Cras ac lorem et sem feugiat molestie non et est. Nullam id diam ut lorem bibendum congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget lectus gravida, dictum risus ac, rutrum ante. Phasellus faucibus lectus urna, eget vehicula magna fringilla et. Morbi tempus ipsum in velit auctor efficitur. Fusce luctus ultrices diam, ac pellentesque enim aliquet at. Cras finibus odio in nisl bibendum vulputate. Quisque ultrices nisi vel enim faucibus, non scelerisque ex portitor.",getTitle(){return this.title},getText(){return this.data},getSize(){return this.data.length}};e.exports=i}}]); \ No newline at end of file diff --git a/test/cases/split-chunk-vendor/expected/index.html b/test/cases/split-chunk-vendor/expected/index.html index 4377adab..96393d50 100644 --- a/test/cases/split-chunk-vendor/expected/index.html +++ b/test/cases/split-chunk-vendor/expected/index.html @@ -1 +1,4 @@ -

Hello Pug!

\ No newline at end of file + + + +

Hello Pug!

\ No newline at end of file diff --git a/test/cases/split-chunk-vendor/webpack.config.js b/test/cases/split-chunk-vendor/webpack.config.js index bb561bc4..e31ed666 100644 --- a/test/cases/split-chunk-vendor/webpack.config.js +++ b/test/cases/split-chunk-vendor/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -28,13 +28,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], @@ -60,4 +54,4 @@ module.exports = { }, }, }, -}; \ No newline at end of file +}; diff --git a/test/cases/webpack-config-default/webpack.config.js b/test/cases/webpack-config-default/webpack.config.js index 69bcc147..25dc933b 100644 --- a/test/cases/webpack-config-default/webpack.config.js +++ b/test/cases/webpack-config-default/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -19,11 +19,6 @@ module.exports = { ], module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - }, - ], + rules: [], }, -}; \ No newline at end of file +}; diff --git a/test/index.test.js b/test/index.test.js index 43b4b183..ac3d396f 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -1,52 +1,10 @@ -import { compareFiles, exceptionContain, stdoutContain } from './utils/helpers'; -import { PluginError, PluginException } from '../src/Messages/Exception'; - -import { parseQuery } from '../src/Utils'; -import AssetEntry from '../src/AssetEntry'; +import { compareFiles, exceptionContain } from './utils/helpers'; beforeAll(() => { // important: the environment constant is used in code process.env.NODE_ENV_TEST = 'true'; }); -describe('unit tests', () => { - test('parseQuery array', (done) => { - const received = parseQuery('file.pug?key=val&arr[]=a&arr[]=1'); - const expected = { - key: 'val', - arr: ['a', '1'], - }; - expect(received).toEqual(expected); - done(); - }); - - test('parseQuery json5', (done) => { - const received = parseQuery('file.pug?{sizes:[10,20,30], format: "webp"}'); - const expected = { - format: 'webp', - sizes: [10, 20, 30], - }; - expect(received).toEqual(expected); - done(); - }); -}); - -describe('AssetEntry tests', () => { - test('inEntry', (done) => { - const received = AssetEntry.inEntry('file.js'); - expect(received).toBeFalsy(); - done(); - }); - - test('reset', (done) => { - AssetEntry.compilationEntryNames = new Set(['home', 'about']); - AssetEntry.reset(); - const received = AssetEntry.compilationEntryNames; - expect(received).toEqual(new Set()); - done(); - }); -}); - describe('options', () => { test('default webpack config', () => compareFiles('webpack-config-default')); test('output.publicPath = auto', () => compareFiles('option-output-public-path-auto')); @@ -55,7 +13,6 @@ describe('options', () => { test('publicPath = "http://localhost:8080"', () => compareFiles('option-output-public-path-root')); test('output.publicPath = "/"', () => compareFiles('option-output-public-path-url')); test('output.filename', () => compareFiles('option-output-filename')); - test('options.enabled = false', () => compareFiles('option-enabled')); test('options.test (extensions)', () => compareFiles('option-extension-test')); test('options.filename as template', () => compareFiles('option-filename-template')); test('options.filename as function', () => compareFiles('option-filename-function')); @@ -67,9 +24,9 @@ describe('options', () => { test('option js.filename', () => compareFiles('option-js-filename')); test('options js, css outputPath absolute', () => compareFiles('option-js-css-outputPath-absolute')); test('options js, css outputPath relative', () => compareFiles('option-js-css-outputPath-relative')); - test('options.pretty', () => compareFiles('option-pretty')); + // TODO: implement the pretty option in v5.x + //test('options.pretty', () => compareFiles('option-pretty')); test('options.verbose', () => compareFiles('option-verbose')); - test('options.modules.postprocess', () => compareFiles('option-modules-postprocess')); test('options.postprocess', () => compareFiles('option-postprocess')); test('options.extractComments = false', () => compareFiles('option-extract-comments-false')); test('options.extractComments = true', () => compareFiles('option-extract-comments-true')); @@ -84,18 +41,15 @@ describe('source map', () => { describe('integration tests', () => { test('Hello World!', () => compareFiles('hello-world')); test('entry: html, pug', () => compareFiles('entry-html-pug')); - test('entry: load styles from entry with same base names using generator', () => compareFiles('entry-sass-with-same-names')); + test('entry: scss with same base names using generator', () => compareFiles('entry-sass-with-same-names')); test('entry: js, pug', () => compareFiles('entry-js-pug')); test('entry styles bypass to other plugin', () => compareFiles('entry-styles-bypass')); test('entry: pass data via query', () => compareFiles('entry-pug-query')); - test('entry: pug require data, method compile', () => compareFiles('require-data-compile')); test('entry: pug require data, method render', () => compareFiles('require-data-render')); - test('entry: pug require data, method html', () => compareFiles('require-data-html')); test('entry: alias resolve.plugins, method compile', () => compareFiles('entry-alias-resolve-compile')); test('entry: keep all output folder structure for pug', () => compareFiles('entry-pug-keep-all-output-dir')); test('entry: keep single output folder structure for pug', () => compareFiles('entry-pug-keep-single-output-dir')); - test('pug-loader config: pug in entry and require pug in js with query `pug-compile`', () => compareFiles('pug-in-entry-and-js-query')); - test('pug-loader config: pug in entry and require pug in js with multiple config', () => compareFiles('pug-in-entry-and-js-config')); + test('pug in entry and require pug in js', () => compareFiles('pug-in-entry-and-js-query')); }); describe('extract css', () => { @@ -126,10 +80,10 @@ describe('require assets', () => { test('require assets in pug, method html', () => compareFiles('require-assets-html')); test('resolve styles in pug', () => compareFiles('resolve-styles')); test('resolve styles in pug from node_modules', () => compareFiles('resolve-styles-from-module')); - test('resolve styles in pug from node_modules with .ext in module name', () => compareFiles('resolve-styles-from-module.ext')); + test('resolve styles in pug from node_modules with .ext', () => compareFiles('resolve-styles-from-module.ext')); test('resolve styles with same name', () => compareFiles('resolve-styles-with-same-name')); test('resolve styles with same name, hash', () => compareFiles('resolve-styles-with-same-name-hash')); - test('require styles in pug and use compiled styles from webpack entry', () => compareFiles('require-and-entry-styles')); + test('require styles in pug and use styles from webpack entry', () => compareFiles('require-and-entry-styles')); test('require same asset with different raw request', () => compareFiles('require-assets-same-pug-scss')); test('multiple-chunks-same-filename', () => compareFiles('multiple-chunks-same-filename')); test('resolve the url(image) in CSS, method render', () => compareFiles('resolve-url-in-css-render')); @@ -138,12 +92,12 @@ describe('require assets', () => { }); describe('inline style & script', () => { - test('inline script using URL query `?inline`', () => compareFiles('inline-script-query')); - test('inline style using URL query `?inline` and resolve url() in CSS', () => compareFiles('inline-style-query')); - test('inline style with source map using URL query `?inline`', () => compareFiles('inline-style-query-with-source-map')); - test('inline style using asset/source', () => compareFiles('inline-style-asset-source')); - test('inline style using asset/source with source-map', () => compareFiles('inline-style-asset-source-with-source-map')); - test('inline style using asset/source and style as file', () => compareFiles('inline-style-asset-source-as-inline-and-file')); + test('inline js using URL query `?inline`', () => compareFiles('inline-script-query')); + test('inline css using URL query `?inline` and resolve url() in CSS', () => compareFiles('inline-style-query')); + test('inline css with source map, query `?inline`', () => compareFiles('inline-style-query-with-source-map')); + test('inline css via asset/source', () => compareFiles('inline-style-asset-source')); + test('inline css via asset/source with source-map', () => compareFiles('inline-style-asset-source-with-source-map')); + test('inline css via asset/source and css file', () => compareFiles('inline-style-asset-source-as-inline-and-file')); }); describe('resolve paths in root context', () => { @@ -162,7 +116,7 @@ describe('resolve assets in pug with url query', () => { describe('split chunks', () => { test('extract css and js w/o runtime code of css-loader', () => compareFiles('split-chunk-css-js')); - test('import source scripts and styles from many node module', () => compareFiles('split-chunk-node-module-many-vendors')); + test('import source scripts and styles from modules', () => compareFiles('split-chunk-node-module-many-vendors')); test('import source scripts and styles from node module', () => compareFiles('split-chunk-node-module-source')); test('resolve assets when used split chunk, development', () => compareFiles('split-chunk-resolve-assets-dev')); test('resolve assets when used split chunk, production', () => compareFiles('split-chunk-resolve-assets-prod')); @@ -187,7 +141,6 @@ describe('inline assets', () => { }); describe('require in script tag', () => { - test('method compile', () => compareFiles('require-scripts-compile')); test('method render', () => compareFiles('require-scripts-render')); test('method html', () => compareFiles('require-scripts-html')); test('require scripts with same name', () => compareFiles('require-scripts-same-src')); @@ -200,85 +153,32 @@ describe('extras: responsive images', () => { }); describe('special cases', () => { - // // TODO: fix it. Note: in html bundler plugin it is already fixed. - //test('resolve-manifest.json', () => compareFiles('resolve-manifest.json')); + test('resolve-manifest.json', () => compareFiles('resolve-manifest.json')); test('require-esm-script', () => compareFiles('require-esm-script')); test('js-import-image', () => compareFiles('js-import-image')); test('compile template function in js', () => compareFiles('js-tmpl-entry-js')); }); // Test Messages -describe('warning tests', () => { - test('duplicate scripts', () => { - const containString = 'Duplicate scripts are not allowed'; - return stdoutContain('msg-warning-duplicate-scripts', containString); - }); - - test('duplicate scripts using alias', () => { - const containString = 'Duplicate scripts are not allowed'; - return stdoutContain('msg-warning-duplicate-scripts-alias', containString); - }); - - test('duplicate styles', () => { - const containString = 'Duplicate styles are not allowed'; - return stdoutContain('msg-warning-duplicate-styles', containString); - }); -}); describe('exception tests', () => { - test('exception test: previous error', (done) => { - const containString = 'previous error'; - - try { - PluginError('previous error'); - } catch (error) { - try { - PluginError('last error', error); - } catch (error) { - expect(error.toString()).toContain(containString); - done(); - } - } - }); - - test('exception test: nested exceptions', (done) => { - const containString = 'last error'; - - const originalError = new PluginException('original error'); - try { - PluginError('previous error', originalError); - } catch (error) { - try { - PluginError('last error', error); - } catch (error) { - expect(error.toString()).toContain(containString); - done(); - } - } - }); - test('exception: execute template function', () => { - const containString = 'Failed to execute the template function'; + const containString = 'Failed to execute the function'; return exceptionContain('msg-exception-execute-template', containString); }); test('exception: resolve required file', () => { - const containString = `Can't resolve the file`; - return exceptionContain( 'msg-exception-resolve-file', containString); + const containString = `Cannot find module`; + return exceptionContain('msg-exception-resolve-file', containString); }); test('exception: @import CSS is not supported', () => { const containString = `Disable the 'import' option in 'css-loader'`; - return exceptionContain( 'msg-exception-import-css-rule', containString); - }); - - test('exception: option modules', () => { - const containString = 'must be the array of'; - return exceptionContain('msg-exception-option-modules', containString); + return exceptionContain('msg-exception-import-css-rule', containString); }); test('exception: execute postprocess', () => { - const containString = 'Postprocess is failed'; + const containString = 'Postprocess failed'; return exceptionContain('msg-exception-execute-postprocess', containString); }); @@ -287,10 +187,3 @@ describe('exception tests', () => { return exceptionContain('msg-exception-multiple-chunks-same-filename', containString); }); }); - -describe('DEPRECATE tests', () => { - test('deprecate-option-extractCss', () => { - const containString = `Use the 'css' option name instead of 'extractCss'`; - return stdoutContain('msg-deprecate-option-extractCss', containString); - }); -}); diff --git a/test/manual/serv-rebuild-required-scripts/webpack.config.js b/test/manual/serv-rebuild-required-scripts/webpack.config.js index 292f5e93..8b5dc11f 100644 --- a/test/manual/serv-rebuild-required-scripts/webpack.config.js +++ b/test/manual/serv-rebuild-required-scripts/webpack.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const PugPlugin = require('../../../'); +const PugPlugin = require('@test/pug-plugin'); module.exports = { mode: 'production', @@ -36,13 +36,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader', 'sass-loader'], diff --git a/test/manual/watch-dependencies-bootstrap/webpack.config.js b/test/manual/watch-dependencies-bootstrap/webpack.config.js index 69bfac56..1b2d5f93 100644 --- a/test/manual/watch-dependencies-bootstrap/webpack.config.js +++ b/test/manual/watch-dependencies-bootstrap/webpack.config.js @@ -27,13 +27,7 @@ module.exports = { module: { rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, + { test: /\.(css|sass|scss)$/, use: ['css-loader'], diff --git a/test/manual/watch-dependencies-import-js/README.md b/test/manual/watch-dependencies-import-js/README.md new file mode 100644 index 00000000..dd33250b --- /dev/null +++ b/test/manual/watch-dependencies-import-js/README.md @@ -0,0 +1,15 @@ +# Test + +The test for the [issue #77](https://github.com/webdiscus/pug-plugin/issues/77). + +### Start + +``` +npm start +``` + +Change the `src/module.js` file in the `serve` mode. + +### Expected + +No compilation error. diff --git a/test/manual/watch-dependencies-import-js/webpack.config.js b/test/manual/watch-dependencies-import-js/webpack.config.js index ae0cf5ae..e2d7b51f 100644 --- a/test/manual/watch-dependencies-import-js/webpack.config.js +++ b/test/manual/watch-dependencies-import-js/webpack.config.js @@ -2,40 +2,27 @@ const path = require('path'); const PugPlugin = require('../../..'); module.exports = { - mode: 'production', + //mode: 'production', // no error + mode: 'development', // no error output: { path: path.join(__dirname, 'dist/'), clean: true, }, - entry: { - index: './src/index.pug', - }, - plugins: [ new PugPlugin({ + entry: { + index: './src/index.pug', + }, js: { filename: '[name].[contenthash:8].js', }, }), ], - module: { - rules: [ - { - test: /\.pug$/, - loader: PugPlugin.loader, - options: { - method: 'render', - }, - }, - ], - }, - // enable HMR with live reload devServer: { - //hot: false, static: path.join(__dirname, 'dist'), watchFiles: { paths: ['src/**/*.*'], diff --git a/test/webpack.common.js b/test/webpack.common.js index 444e2ce2..9e884c15 100644 --- a/test/webpack.common.js +++ b/test/webpack.common.js @@ -1,4 +1,19 @@ module.exports = { + devtool: false, + // avoid double error output in console + stats: 'errors-warnings', + + output: { + // clean the output directory before emitting + clean: true, + + //asyncChunks: false, + //hashSalt: '1234567890', + //pathinfo: false, + //hashFunction: require('metrohash').MetroHash64, + //asyncChunks: false, + }, + plugins: [], module: { @@ -11,4 +26,4 @@ module.exports = { usedExports: true, concatenateModules: true, }, -}; \ No newline at end of file +};