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"