diff --git a/.gitignore b/.gitignore
index 683949d8ad..22987ba4a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,3 +135,6 @@ ui-tests/playwright-report
.pnp.*
ui-tests/.yarn/*
ui-tests/.pnp.*
+
+# generated html
+notebook/templates/*.html
diff --git a/app/package.json b/app/package.json
index bc4f2aa001..53209e0338 100644
--- a/app/package.json
+++ b/app/package.json
@@ -4,7 +4,7 @@
"private": true,
"scripts": {
"build": "webpack",
- "build:prod": "webpack --mode=production",
+ "build:prod": "webpack --config ./webpack.prod.config.js",
"clean": "rimraf build && jlpm run clean:static",
"clean:static": "rimraf -g \"../notebook/static/!(favicons)\"",
"watch": "webpack --config ./webpack.config.watch.js"
diff --git a/app/templates/consoles_template.html b/app/templates/consoles_template.html
new file mode 100644
index 0000000000..c4172e6930
--- /dev/null
+++ b/app/templates/consoles_template.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{page_config['appName'] | e}} - Console
+ {% block favicon %}
+
+ {% endblock %} {% if custom_css %}
+
+ {% endif %}
+
+
+ {# Copy so we do not modify the page_config with updates. #} {% set
+ page_config_full = page_config.copy() %} {# Set a dummy variable - we just
+ want the side effect of the update. #} {% set _ =
+ page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value
+ to say that we are on the tree page #} {% set _ =
+ page_config_full.update(notebookPage='consoles') %}
+
+
+
+
+
+
diff --git a/app/templates/edit_template.html b/app/templates/edit_template.html
new file mode 100644
index 0000000000..2c0ff6b410
--- /dev/null
+++ b/app/templates/edit_template.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ {{page_config['appName'] | e}} - Edit
+ {% block favicon %}
+
+ {% endblock %}
+
+
+ {# Copy so we do not modify the page_config with updates. #} {% set
+ page_config_full = page_config.copy() %} {# Set a dummy variable - we just
+ want the side effect of the update. #} {% set _ =
+ page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value
+ to say that we are on the tree page #} {% set _ =
+ page_config_full.update(notebookPage='edit') %}
+
+
+
+
+
+
diff --git a/notebook/templates/error.html b/app/templates/error_template.html
similarity index 100%
rename from notebook/templates/error.html
rename to app/templates/error_template.html
diff --git a/app/templates/notebooks_template.html b/app/templates/notebooks_template.html
new file mode 100644
index 0000000000..ce6709858f
--- /dev/null
+++ b/app/templates/notebooks_template.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{page_config['appName'] | e}} - Notebook
+ {% block favicon %}
+
+ {% endblock %} {% if custom_css %}
+
+ {% endif %}
+
+
+ {# Copy so we do not modify the page_config with updates. #} {% set
+ page_config_full = page_config.copy() %} {# Set a dummy variable - we just
+ want the side effect of the update. #} {% set _ =
+ page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value
+ to say that we are on the tree page #} {% set _ =
+ page_config_full.update(notebookPage='notebooks') %}
+
+
+
+
+
+
diff --git a/app/templates/terminals_template.html b/app/templates/terminals_template.html
new file mode 100644
index 0000000000..6311fc07fc
--- /dev/null
+++ b/app/templates/terminals_template.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{page_config['appName'] | e}} - Terminal
+ {% block favicon %}
+
+ {% endblock %} {% if custom_css %}
+
+ {% endif %}
+
+
+ {# Copy so we do not modify the page_config with updates. #} {% set
+ page_config_full = page_config.copy() %} {# Set a dummy variable - we just
+ want the side effect of the update. #} {% set _ =
+ page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value
+ to say that we are on the tree page #} {% set _ =
+ page_config_full.update(notebookPage='terminals') %}
+
+
+
+
+
+
diff --git a/app/templates/tree_template.html b/app/templates/tree_template.html
new file mode 100644
index 0000000000..01fb6169cc
--- /dev/null
+++ b/app/templates/tree_template.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+ Home
+ {% block favicon %}
+
+ {% endblock %} {% if custom_css %}
+
+ {% endif %}
+
+
+ {# Copy so we do not modify the page_config with updates. #} {% set
+ page_config_full = page_config.copy() %} {# Set a dummy variable - we just
+ want the side effect of the update. #} {% set _ =
+ page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value
+ to say that we are on the tree page #} {% set _ =
+ page_config_full.update(notebookPage='tree') %}
+
+
+
+
+
+
diff --git a/app/webpack.config.js b/app/webpack.config.js
index 4fdd9e5106..ed1c1386f5 100644
--- a/app/webpack.config.js
+++ b/app/webpack.config.js
@@ -15,6 +15,7 @@ const BundleAnalyzerPlugin =
const Build = require('@jupyterlab/builder').Build;
const WPPlugin = require('@jupyterlab/builder').WPPlugin;
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const baseConfig = require('@jupyterlab/builder/lib/webpack.config.base');
const data = require('./package.json');
@@ -204,22 +205,55 @@ if (process.argv.includes('--analyze')) {
extras.push(new BundleAnalyzerPlugin());
}
+const htmlPlugins = [];
+['consoles', 'edit', 'error', 'notebooks', 'terminals', 'tree'].forEach(
+ (name) => {
+ htmlPlugins.push(
+ new HtmlWebpackPlugin({
+ chunksSortMode: 'none',
+ template: path.join(
+ path.resolve('./templates'),
+ `${name}_template.html`
+ ),
+ title: name,
+ filename: path.join(
+ path.resolve(__dirname, '..', 'notebook/templates'),
+ `${name}.html`
+ ),
+ })
+ );
+ }
+);
+
module.exports = [
merge(baseConfig, {
mode: 'development',
entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)],
output: {
path: path.resolve(__dirname, '..', 'notebook/static/'),
+ publicPath: '{{page_config.fullStaticUrl}}/',
library: {
type: 'var',
name: ['_JUPYTERLAB', 'CORE_OUTPUT'],
},
- filename: 'bundle.js',
+ filename: '[name].[contenthash].js',
+ },
+ optimization: {
+ splitChunks: {
+ chunks: 'all',
+ cacheGroups: {
+ jlab_core: {
+ test: /[\\/]node_modules[\\/]@(jupyterlab|jupyter-notebook|lumino(?!\/datagrid))[\\/]/,
+ name: 'notebook_core',
+ },
+ },
+ },
},
resolve: {
fallback: { util: false },
},
plugins: [
+ ...htmlPlugins,
new WPPlugin.JSONLicenseWebpackPlugin({
excludedPackageTest: (packageName) =>
packageName === '@jupyter-notebook/app',
@@ -235,3 +269,6 @@ module.exports = [
],
}),
].concat(extras);
+
+const logPath = path.join(buildDir, 'build_log.json');
+fs.writeFileSync(logPath, JSON.stringify(module.exports, null, ' '));
diff --git a/app/webpack.prod.config.js b/app/webpack.prod.config.js
new file mode 100644
index 0000000000..db7e6dfdb5
--- /dev/null
+++ b/app/webpack.prod.config.js
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+const merge = require('webpack-merge').default;
+const config = require('./webpack.config');
+const WPPlugin = require('@jupyterlab/builder').WPPlugin;
+
+config[0] = merge(config[0], {
+ mode: 'production',
+ devtool: 'source-map',
+ output: {
+ // Add version argument when in production so the Jupyter server
+ // allows caching of files (i.e., does not set the CacheControl header to no-cache to prevent caching static files)
+ filename: '[name].[contenthash].js?v=[contenthash]',
+ },
+ optimization: {
+ minimize: false,
+ },
+ plugins: [
+ new WPPlugin.JSONLicenseWebpackPlugin({
+ excludedPackageTest: (packageName) =>
+ packageName === '@jupyter-notebook/app',
+ }),
+ ],
+});
+
+module.exports = config;
diff --git a/notebook/templates/consoles.html b/notebook/templates/consoles.html
deleted file mode 100644
index 67616dfd7c..0000000000
--- a/notebook/templates/consoles.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- {{page_config['appName'] | e}} - Console
- {% block favicon %}
-
- {% endblock %}
-
- {% if custom_css %}
-
- {% endif %}
-
-
-
- {# Copy so we do not modify the page_config with updates. #}
- {% set page_config_full = page_config.copy() %}
-
- {# Set a dummy variable - we just want the side effect of the update. #}
- {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}
-
- {# Sentinel value to say that we are on the tree page #}
- {% set _ = page_config_full.update(notebookPage='consoles') %}
-
-
-
-
-
-
-
-
diff --git a/notebook/templates/edit.html b/notebook/templates/edit.html
deleted file mode 100644
index ee45f02d11..0000000000
--- a/notebook/templates/edit.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
- {{page_config['appName'] | e}} - Edit
- {% block favicon %}
-
- {% endblock %}
-
-
-
- {# Copy so we do not modify the page_config with updates. #}
- {% set page_config_full = page_config.copy() %}
-
- {# Set a dummy variable - we just want the side effect of the update. #}
- {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}
-
- {# Sentinel value to say that we are on the tree page #}
- {% set _ = page_config_full.update(notebookPage='edit') %}
-
-
-
-
-
-
-
-
diff --git a/notebook/templates/notebooks.html b/notebook/templates/notebooks.html
deleted file mode 100644
index 9c0f5b2dae..0000000000
--- a/notebook/templates/notebooks.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- {{page_config['appName'] | e}} - Notebook
- {% block favicon %}
-
- {% endblock %}
-
- {% if custom_css %}
-
- {% endif %}
-
-
-
- {# Copy so we do not modify the page_config with updates. #}
- {% set page_config_full = page_config.copy() %}
-
- {# Set a dummy variable - we just want the side effect of the update. #}
- {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}
-
- {# Sentinel value to say that we are on the tree page #}
- {% set _ = page_config_full.update(notebookPage='notebooks') %}
-
-
-
-
-
-
-
-
diff --git a/notebook/templates/terminals.html b/notebook/templates/terminals.html
deleted file mode 100644
index 903bfe8e45..0000000000
--- a/notebook/templates/terminals.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- {{page_config['appName'] | e}} - Terminal
- {% block favicon %}
-
- {% endblock %}
-
- {% if custom_css %}
-
- {% endif %}
-
-
-
- {# Copy so we do not modify the page_config with updates. #}
- {% set page_config_full = page_config.copy() %}
-
- {# Set a dummy variable - we just want the side effect of the update. #}
- {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}
-
- {# Sentinel value to say that we are on the tree page #}
- {% set _ = page_config_full.update(notebookPage='terminals') %}
-
-
-
-
-
-
-
-
diff --git a/notebook/templates/tree.html b/notebook/templates/tree.html
deleted file mode 100644
index 54760e4f4c..0000000000
--- a/notebook/templates/tree.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- Home
- {% block favicon %}
-
- {% endblock %}
-
- {% if custom_css %}
-
- {% endif %}
-
-
-
- {# Copy so we do not modify the page_config with updates. #}
- {% set page_config_full = page_config.copy() %}
-
- {# Set a dummy variable - we just want the side effect of the update. #}
- {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}
-
- {# Sentinel value to say that we are on the tree page #}
- {% set _ = page_config_full.update(notebookPage='tree') %}
-
-
-
-
-
-
-
-
diff --git a/package.json b/package.json
index b4a5673514..66dffe8561 100644
--- a/package.json
+++ b/package.json
@@ -57,6 +57,7 @@
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2",
+ "html-webpack-plugin": "^5.6.3",
"lerna": "^6.6.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.8.5",
diff --git a/pyproject.toml b/pyproject.toml
index eaab213455..649e6a8d0f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -154,7 +154,6 @@ dependencies = ["hatch-jupyter-builder>=0.5"]
build-function = "hatch_jupyter_builder.npm_builder"
ensured-targets = [
"notebook/labextension/static/style.js",
- "notebook/static/bundle.js"
]
install-pre-commit-hook = true
diff --git a/yarn.lock b/yarn.lock
index c69036336b..aad236108f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2330,6 +2330,7 @@ __metadata:
eslint-plugin-jest: ^27.2.1
eslint-plugin-prettier: ^4.2.1
eslint-plugin-react: ^7.32.2
+ html-webpack-plugin: ^5.6.3
lerna: ^6.6.2
npm-run-all: ^4.1.5
prettier: ^2.8.5
@@ -5668,6 +5669,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/html-minifier-terser@npm:^6.0.0":
+ version: 6.1.0
+ resolution: "@types/html-minifier-terser@npm:6.1.0"
+ checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452
+ languageName: node
+ linkType: hard
+
"@types/http-cache-semantics@npm:*":
version: 4.0.2
resolution: "@types/http-cache-semantics@npm:4.0.2"
@@ -7327,6 +7335,13 @@ __metadata:
languageName: node
linkType: hard
+"boolbase@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "boolbase@npm:1.0.0"
+ checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0
+ languageName: node
+ linkType: hard
+
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
@@ -7543,6 +7558,16 @@ __metadata:
languageName: node
linkType: hard
+"camel-case@npm:^4.1.2":
+ version: 4.1.2
+ resolution: "camel-case@npm:4.1.2"
+ dependencies:
+ pascal-case: ^3.1.2
+ tslib: ^2.0.3
+ checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6
+ languageName: node
+ linkType: hard
+
"camelcase-keys@npm:^6.2.2":
version: 6.2.2
resolution: "camelcase-keys@npm:6.2.2"
@@ -7686,6 +7711,15 @@ __metadata:
languageName: node
linkType: hard
+"clean-css@npm:^5.2.2":
+ version: 5.3.3
+ resolution: "clean-css@npm:5.3.3"
+ dependencies:
+ source-map: ~0.6.0
+ checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc
+ languageName: node
+ linkType: hard
+
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -7953,6 +7987,13 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^8.3.0":
+ version: 8.3.0
+ resolution: "commander@npm:8.3.0"
+ checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0
+ languageName: node
+ linkType: hard
+
"commander@npm:^9.4.1":
version: 9.5.0
resolution: "commander@npm:9.5.0"
@@ -8382,6 +8423,26 @@ __metadata:
languageName: node
linkType: hard
+"css-select@npm:^4.1.3":
+ version: 4.3.0
+ resolution: "css-select@npm:4.3.0"
+ dependencies:
+ boolbase: ^1.0.0
+ css-what: ^6.0.1
+ domhandler: ^4.3.1
+ domutils: ^2.8.0
+ nth-check: ^2.0.1
+ checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0
+ languageName: node
+ linkType: hard
+
+"css-what@npm:^6.0.1":
+ version: 6.1.0
+ resolution: "css-what@npm:6.1.0"
+ checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe
+ languageName: node
+ linkType: hard
+
"cssesc@npm:^3.0.0":
version: 3.0.0
resolution: "cssesc@npm:3.0.0"
@@ -9169,6 +9230,26 @@ __metadata:
languageName: node
linkType: hard
+"dom-converter@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "dom-converter@npm:0.2.0"
+ dependencies:
+ utila: ~0.4
+ checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77
+ languageName: node
+ linkType: hard
+
+"dom-serializer@npm:^1.0.1":
+ version: 1.4.1
+ resolution: "dom-serializer@npm:1.4.1"
+ dependencies:
+ domelementtype: ^2.0.1
+ domhandler: ^4.2.0
+ entities: ^2.0.0
+ checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22
+ languageName: node
+ linkType: hard
+
"dom-serializer@npm:^2.0.0":
version: 2.0.0
resolution: "dom-serializer@npm:2.0.0"
@@ -9180,7 +9261,7 @@ __metadata:
languageName: node
linkType: hard
-"domelementtype@npm:^2.3.0":
+"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0":
version: 2.3.0
resolution: "domelementtype@npm:2.3.0"
checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
@@ -9196,6 +9277,15 @@ __metadata:
languageName: node
linkType: hard
+"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1":
+ version: 4.3.1
+ resolution: "domhandler@npm:4.3.1"
+ dependencies:
+ domelementtype: ^2.2.0
+ checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa
+ languageName: node
+ linkType: hard
+
"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
version: 5.0.3
resolution: "domhandler@npm:5.0.3"
@@ -9212,6 +9302,17 @@ __metadata:
languageName: node
linkType: hard
+"domutils@npm:^2.5.2, domutils@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "domutils@npm:2.8.0"
+ dependencies:
+ dom-serializer: ^1.0.1
+ domelementtype: ^2.2.0
+ domhandler: ^4.2.0
+ checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391
+ languageName: node
+ linkType: hard
+
"domutils@npm:^3.0.1":
version: 3.1.0
resolution: "domutils@npm:3.1.0"
@@ -9223,6 +9324,16 @@ __metadata:
languageName: node
linkType: hard
+"dot-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "dot-case@npm:3.0.4"
+ dependencies:
+ no-case: ^3.0.4
+ tslib: ^2.0.3
+ checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169
+ languageName: node
+ linkType: hard
+
"dot-prop@npm:6.0.1":
version: 6.0.1
resolution: "dot-prop@npm:6.0.1"
@@ -9416,6 +9527,13 @@ __metadata:
languageName: node
linkType: hard
+"entities@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "entities@npm:2.2.0"
+ checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3
+ languageName: node
+ linkType: hard
+
"entities@npm:^4.2.0, entities@npm:^4.4.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
@@ -10994,6 +11112,15 @@ __metadata:
languageName: node
linkType: hard
+"he@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "he@npm:1.2.0"
+ bin:
+ he: bin/he
+ checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7
+ languageName: node
+ linkType: hard
+
"heap@npm:^0.2.6":
version: 0.2.7
resolution: "heap@npm:0.2.7"
@@ -11067,6 +11194,56 @@ __metadata:
languageName: node
linkType: hard
+"html-minifier-terser@npm:^6.0.2":
+ version: 6.1.0
+ resolution: "html-minifier-terser@npm:6.1.0"
+ dependencies:
+ camel-case: ^4.1.2
+ clean-css: ^5.2.2
+ commander: ^8.3.0
+ he: ^1.2.0
+ param-case: ^3.0.4
+ relateurl: ^0.2.7
+ terser: ^5.10.0
+ bin:
+ html-minifier-terser: cli.js
+ checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93
+ languageName: node
+ linkType: hard
+
+"html-webpack-plugin@npm:^5.6.3":
+ version: 5.6.3
+ resolution: "html-webpack-plugin@npm:5.6.3"
+ dependencies:
+ "@types/html-minifier-terser": ^6.0.0
+ html-minifier-terser: ^6.0.2
+ lodash: ^4.17.21
+ pretty-error: ^4.0.0
+ tapable: ^2.0.0
+ peerDependencies:
+ "@rspack/core": 0.x || 1.x
+ webpack: ^5.20.0
+ peerDependenciesMeta:
+ "@rspack/core":
+ optional: true
+ webpack:
+ optional: true
+ checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270
+ languageName: node
+ linkType: hard
+
+"htmlparser2@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "htmlparser2@npm:6.1.0"
+ dependencies:
+ domelementtype: ^2.0.1
+ domhandler: ^4.0.0
+ domutils: ^2.5.2
+ entities: ^2.0.0
+ checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e
+ languageName: node
+ linkType: hard
+
"htmlparser2@npm:^8.0.0":
version: 8.0.2
resolution: "htmlparser2@npm:8.0.2"
@@ -13265,6 +13442,15 @@ __metadata:
languageName: node
linkType: hard
+"lower-case@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "lower-case@npm:2.0.2"
+ dependencies:
+ tslib: ^2.0.3
+ checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010
+ languageName: node
+ linkType: hard
+
"lowercase-keys@npm:^2.0.0":
version: 2.0.0
resolution: "lowercase-keys@npm:2.0.0"
@@ -14315,6 +14501,16 @@ __metadata:
languageName: node
linkType: hard
+"no-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "no-case@npm:3.0.4"
+ dependencies:
+ lower-case: ^2.0.2
+ tslib: ^2.0.3
+ checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c
+ languageName: node
+ linkType: hard
+
"node-addon-api@npm:^3.2.1":
version: 3.2.1
resolution: "node-addon-api@npm:3.2.1"
@@ -14682,6 +14878,15 @@ __metadata:
languageName: node
linkType: hard
+"nth-check@npm:^2.0.1":
+ version: 2.1.1
+ resolution: "nth-check@npm:2.1.1"
+ dependencies:
+ boolbase: ^1.0.0
+ checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3
+ languageName: node
+ linkType: hard
+
"nwsapi@npm:^2.2.2":
version: 2.2.7
resolution: "nwsapi@npm:2.2.7"
@@ -15139,6 +15344,16 @@ __metadata:
languageName: node
linkType: hard
+"param-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "param-case@npm:3.0.4"
+ dependencies:
+ dot-case: ^3.0.4
+ tslib: ^2.0.3
+ checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687
+ languageName: node
+ linkType: hard
+
"parent-module@npm:^1.0.0":
version: 1.0.1
resolution: "parent-module@npm:1.0.1"
@@ -15222,6 +15437,16 @@ __metadata:
languageName: node
linkType: hard
+"pascal-case@npm:^3.1.2":
+ version: 3.1.2
+ resolution: "pascal-case@npm:3.1.2"
+ dependencies:
+ no-case: ^3.0.4
+ tslib: ^2.0.3
+ checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e
+ languageName: node
+ linkType: hard
+
"path-browserify@npm:^1.0.0":
version: 1.0.1
resolution: "path-browserify@npm:1.0.1"
@@ -15546,6 +15771,16 @@ __metadata:
languageName: node
linkType: hard
+"pretty-error@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "pretty-error@npm:4.0.0"
+ dependencies:
+ lodash: ^4.17.20
+ renderkid: ^3.0.0
+ checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3
+ languageName: node
+ linkType: hard
+
"pretty-format@npm:29.4.3":
version: 29.4.3
resolution: "pretty-format@npm:29.4.3"
@@ -16237,6 +16472,26 @@ __metadata:
languageName: node
linkType: hard
+"relateurl@npm:^0.2.7":
+ version: 0.2.7
+ resolution: "relateurl@npm:0.2.7"
+ checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6
+ languageName: node
+ linkType: hard
+
+"renderkid@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "renderkid@npm:3.0.0"
+ dependencies:
+ css-select: ^4.1.3
+ dom-converter: ^0.2.0
+ htmlparser2: ^6.1.0
+ lodash: ^4.17.21
+ strip-ansi: ^6.0.1
+ checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41
+ languageName: node
+ linkType: hard
+
"request@npm:2.88.2":
version: 2.88.2
resolution: "request@npm:2.88.2"
@@ -17008,7 +17263,7 @@ __metadata:
languageName: node
linkType: hard
-"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1":
+"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
@@ -17453,7 +17708,7 @@ __metadata:
languageName: node
linkType: hard
-"tapable@npm:^2.1.1, tapable@npm:^2.2.0":
+"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0":
version: 2.2.1
resolution: "tapable@npm:2.2.1"
checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51
@@ -17536,6 +17791,20 @@ __metadata:
languageName: node
linkType: hard
+"terser@npm:^5.10.0":
+ version: 5.36.0
+ resolution: "terser@npm:5.36.0"
+ dependencies:
+ "@jridgewell/source-map": ^0.3.3
+ acorn: ^8.8.2
+ commander: ^2.20.0
+ source-map-support: ~0.5.20
+ bin:
+ terser: bin/terser
+ checksum: 489afd31901a2b170f7766948a3aa0e25da0acb41e9e35bd9f9b4751dfa2fc846e485f6fb9d34f0839a96af77f675b5fbf0a20c9aa54e0b8d7c219cf0b55e508
+ languageName: node
+ linkType: hard
+
"terser@npm:^5.16.8":
version: 5.21.0
resolution: "terser@npm:5.21.0"
@@ -17818,6 +18087,13 @@ __metadata:
languageName: node
linkType: hard
+"tslib@npm:^2.0.3":
+ version: 2.8.1
+ resolution: "tslib@npm:2.8.1"
+ checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a
+ languageName: node
+ linkType: hard
+
"tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.1, tslib@npm:~2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
@@ -18278,6 +18554,13 @@ __metadata:
languageName: node
linkType: hard
+"utila@npm:~0.4":
+ version: 0.4.0
+ resolution: "utila@npm:0.4.0"
+ checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4
+ languageName: node
+ linkType: hard
+
"utils-merge@npm:1.0.1":
version: 1.0.1
resolution: "utils-merge@npm:1.0.1"