From c09c7125e525526b1fddcb04670b9e22684e62ba Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Wed, 22 Feb 2023 12:28:07 +0200 Subject: [PATCH] Add package for sharing webpack configurations for upcoming Features (#7199) * Add package for shared webpack configurations for Lens applications, Features and libraries Signed-off-by: Janne Savolainen * Remove duplication from gitignores Signed-off-by: Janne Savolainen --------- Signed-off-by: Janne Savolainen --- .gitignore | 2 + package-lock.json | 180 ++++++++--------- packages/bump-version-for-cron/.gitignore | 2 - packages/core/.gitignore | 2 - packages/ensure-binaries/.gitignore | 2 - packages/extension-api/.gitignore | 2 - packages/generate-tray-icons/.gitignore | 2 - packages/infrastructure/webpack/README.md | 76 ++++++++ packages/infrastructure/webpack/bin/build.sh | 2 + .../webpack/bin/remove-build.sh | 1 + packages/infrastructure/webpack/index.js | 5 + .../infrastructure/webpack/jest.config.js | 8 + packages/infrastructure/webpack/package.json | 36 ++++ .../webpack/src/get-multi-export-config.js | 120 ++++++++++++ .../src/get-multi-export-config.test.js | 184 ++++++++++++++++++ .../infrastructure/webpack/src/node-config.js | 68 +++++++ .../webpack/src/react-config.js | 44 +++++ packages/node-fetch/.gitignore | 2 - packages/open-lens/.gitignore | 2 - packages/release-tool/.gitignore | 2 - packages/semver/.gitignore | 2 - 21 files changed, 624 insertions(+), 120 deletions(-) delete mode 100644 packages/bump-version-for-cron/.gitignore delete mode 100644 packages/ensure-binaries/.gitignore delete mode 100644 packages/extension-api/.gitignore delete mode 100644 packages/generate-tray-icons/.gitignore create mode 100644 packages/infrastructure/webpack/README.md create mode 100755 packages/infrastructure/webpack/bin/build.sh create mode 100755 packages/infrastructure/webpack/bin/remove-build.sh create mode 100644 packages/infrastructure/webpack/index.js create mode 100644 packages/infrastructure/webpack/jest.config.js create mode 100644 packages/infrastructure/webpack/package.json create mode 100644 packages/infrastructure/webpack/src/get-multi-export-config.js create mode 100644 packages/infrastructure/webpack/src/get-multi-export-config.test.js create mode 100644 packages/infrastructure/webpack/src/node-config.js create mode 100644 packages/infrastructure/webpack/src/react-config.js delete mode 100644 packages/node-fetch/.gitignore delete mode 100644 packages/release-tool/.gitignore delete mode 100644 packages/semver/.gitignore diff --git a/.gitignore b/.gitignore index 1a58da28c9..77a4d62e58 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ docs/extensions/api site/ lerna-debug.log coverage +dist +node_modules diff --git a/package-lock.json b/package-lock.json index 8cb30f8b17..ea90dd7e37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -680,7 +680,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, "engines": { "node": ">=10.0.0" } @@ -3250,7 +3249,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -3260,7 +3258,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3324,6 +3321,10 @@ "resolved": "packages/infrastructure/typescript", "link": true }, + "node_modules/@k8slens/webpack": { + "resolved": "packages/infrastructure/webpack", + "link": true + }, "node_modules/@kubernetes/client-node": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.18.1.tgz", @@ -5703,7 +5704,6 @@ "version": "8.21.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", - "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5713,7 +5713,6 @@ "version": "3.7.4", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -5945,8 +5944,7 @@ "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -6437,8 +6435,7 @@ "node_modules/@types/webpack-env": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", - "dev": true + "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" }, "node_modules/@types/webpack-node-externals": { "version": "2.5.3", @@ -6663,7 +6660,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -6672,26 +6668,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -6701,14 +6693,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6720,7 +6710,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -6729,7 +6718,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -6737,14 +6725,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6760,7 +6746,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -6773,7 +6758,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -6785,7 +6769,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -6799,7 +6782,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -6809,7 +6791,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -6819,7 +6800,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, "dependencies": { "envinfo": "^7.7.3" }, @@ -6831,7 +6811,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -6844,14 +6823,12 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@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==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", @@ -6990,7 +6967,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -7136,7 +7112,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, "dependencies": { "ajv": "^8.0.0" }, @@ -7153,7 +7128,6 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -7168,14 +7142,12 @@ "node_modules/ajv-formats/node_modules/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 + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -8946,7 +8918,6 @@ "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==", - "dev": true, "engines": { "node": ">=6.0" } @@ -9178,7 +9149,6 @@ "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", @@ -9192,7 +9162,6 @@ "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" }, @@ -9318,8 +9287,7 @@ "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "node_modules/colors": { "version": "1.4.0", @@ -10103,7 +10071,6 @@ "version": "6.7.3", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.19", @@ -11484,7 +11451,6 @@ "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -11534,7 +11500,6 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, "bin": { "envinfo": "dist/cli.js" }, @@ -11646,8 +11611,7 @@ "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -12596,7 +12560,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -12609,7 +12572,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -12747,7 +12709,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -13295,7 +13256,6 @@ "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, "engines": { "node": ">= 4.9.1" } @@ -15425,7 +15385,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, "engines": { "node": ">= 0.10" } @@ -15999,7 +15958,6 @@ "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" } @@ -19415,7 +19373,6 @@ "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" } @@ -19432,7 +19389,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, "engines": { "node": ">= 8" } @@ -20188,7 +20144,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, "engines": { "node": ">=6.11.5" } @@ -21109,7 +21064,6 @@ "version": "2.7.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==", - "dev": true, "dependencies": { "schema-utils": "^4.0.0" }, @@ -21128,7 +21082,6 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -21144,7 +21097,6 @@ "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, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -21155,14 +21107,12 @@ "node_modules/mini-css-extract-plugin/node_modules/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 + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -26538,7 +26488,6 @@ "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, "engines": { "node": "^10 || ^12 || >= 14" }, @@ -26550,7 +26499,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -26567,7 +26515,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -26582,7 +26529,6 @@ "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, "dependencies": { "icss-utils": "^5.0.0" }, @@ -26616,7 +26562,6 @@ "version": "6.0.11", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -26628,8 +26573,7 @@ "node_modules/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 + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prebuild-install": { "version": "7.1.1", @@ -27046,7 +26990,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -27809,7 +27752,6 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, "dependencies": { "resolve": "^1.9.0" }, @@ -28019,7 +27961,6 @@ "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, "engines": { "node": ">=0.10.0" } @@ -28350,7 +28291,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -28550,7 +28490,6 @@ "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==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -28672,7 +28611,6 @@ "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" }, @@ -28997,7 +28935,6 @@ "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==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -29007,7 +28944,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -29590,7 +29526,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, "engines": { "node": ">= 12.13.0" }, @@ -29898,7 +29833,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -30146,7 +30080,6 @@ "version": "5.16.4", "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.4.tgz", "integrity": "sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==", - "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -30164,7 +30097,6 @@ "version": "5.3.6", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -30198,7 +30130,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -30212,7 +30143,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -30226,8 +30156,7 @@ "node_modules/terser/node_modules/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==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -30615,7 +30544,6 @@ "version": "9.4.2", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -31351,7 +31279,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -31398,7 +31325,6 @@ "version": "5.75.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -31445,7 +31371,6 @@ "version": "4.10.0", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -31492,7 +31417,6 @@ "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, "engines": { "node": ">= 10" } @@ -31700,7 +31624,6 @@ "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -31713,7 +31636,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "dev": true, "engines": { "node": ">=6" } @@ -31740,14 +31662,12 @@ "node_modules/webpack/node_modules/@types/estree": { "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/webpack/node_modules/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==", - "dev": true, "engines": { "node": ">=10.13.0" } @@ -31880,8 +31800,7 @@ "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" }, "node_modules/win-ca": { "version": "3.5.0", @@ -32893,6 +32812,7 @@ } }, "packages/infrastructure/jest": { + "name": "@k8slens/jest", "version": "0.0.1", "license": "MIT", "dependencies": { @@ -34174,6 +34094,62 @@ "typescript-plugin-css-modules": "^3.4.0" } }, + "packages/infrastructure/webpack": { + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "@types/webpack-env": "^1.18.0", + "css-loader": "^6.7.2", + "mini-css-extract-plugin": "^2.7.0", + "sass-loader": "^13.2.0", + "style-loader": "^3.3.1", + "ts-loader": "^9.4.1", + "webpack": "^5.75.0", + "webpack-cli": "^4.10.0", + "webpack-node-externals": "^3.0.0" + }, + "bin": { + "lens-build": "bin/build.sh", + "lens-remove-build": "bin/remove-build.sh" + } + }, + "packages/infrastructure/webpack/node_modules/sass-loader": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz", + "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, "packages/node-fetch": { "name": "@k8slens/node-fetch", "version": "6.4.0-beta.13", diff --git a/packages/bump-version-for-cron/.gitignore b/packages/bump-version-for-cron/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/bump-version-for-cron/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ diff --git a/packages/core/.gitignore b/packages/core/.gitignore index 81f59a8598..2ac9023ff1 100644 --- a/packages/core/.gitignore +++ b/packages/core/.gitignore @@ -1,5 +1,3 @@ static/build/ build/webpack/ binaries/ -dist/ -node_modules/ \ No newline at end of file diff --git a/packages/ensure-binaries/.gitignore b/packages/ensure-binaries/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/ensure-binaries/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ diff --git a/packages/extension-api/.gitignore b/packages/extension-api/.gitignore deleted file mode 100644 index 763301fc00..0000000000 --- a/packages/extension-api/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ \ No newline at end of file diff --git a/packages/generate-tray-icons/.gitignore b/packages/generate-tray-icons/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/generate-tray-icons/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ diff --git a/packages/infrastructure/webpack/README.md b/packages/infrastructure/webpack/README.md new file mode 100644 index 0000000000..6222bd7176 --- /dev/null +++ b/packages/infrastructure/webpack/README.md @@ -0,0 +1,76 @@ +# @k8slens/webpack + +This package contains webpack configurations for Lens packages. + +## Install + +``` +$ npm install @k8slens/webpack +``` + +## Features + +### Configurations + +### Node package +This configuration should be used when creating package that will be executed within **Node** environment. + +**webpack.config.js** +```javascript +module.exports = require("@k8slens/webpack").configForNode; +``` +### React package +This configuration should be used when creating package tha will be executed within **Browser** environment. + +**webpack.config.js** +```javascript +module.exports = require("@k8slens/webpack").configForReact; +``` + +### Multi export package + +This configuration should be used when package contains **multiple entrypoint** e.g. for different environments. You need to add `lensMultiExportConfig` to `package.json` with configuration. Note that also `exports` property needs to be set, but the correct values are generated from `lensMultiExportConfig` when using `lens-build` -script. + +**webpack.config.js** +```javascript +const packageJson = require("./package.json"); + +module.exports = require("@k8slens/webpack").getMultiExportConfig(packageJson); +``` + +**package.json** +```json +{ + "lensMultiExportConfig": { + "./main": { + "buildType": "node", + "entrypoint": "./src/main/index.ts" + }, + "./renderer": { + "buildType": "react", + "entrypoint": "./src/renderer/index.ts" + } + }, + + "exports": { + "./main": { + "types": "./dist/main/index.d.ts", + "require": "./dist/main/index.js", + "import": "./dist/main/index.js", + "default": "./dist/main/index.js" + }, + "./renderer": { + "types": "./dist/renderer/index.d.ts", + "require": "./dist/renderer/index.js", + "import": "./dist/renderer/index.js", + "default": "./dist/renderer/index.js" + } + } +} +``` + +## Scripts + +1. `lens-build` which builds the packages +2. `lens-remove-build` which removes the build directory from packages. It's useful for cleaning up. + diff --git a/packages/infrastructure/webpack/bin/build.sh b/packages/infrastructure/webpack/bin/build.sh new file mode 100755 index 0000000000..589acdeab2 --- /dev/null +++ b/packages/infrastructure/webpack/bin/build.sh @@ -0,0 +1,2 @@ +set -e +webpack $@ diff --git a/packages/infrastructure/webpack/bin/remove-build.sh b/packages/infrastructure/webpack/bin/remove-build.sh new file mode 100755 index 0000000000..f2421c500d --- /dev/null +++ b/packages/infrastructure/webpack/bin/remove-build.sh @@ -0,0 +1 @@ +rm -rfv build diff --git a/packages/infrastructure/webpack/index.js b/packages/infrastructure/webpack/index.js new file mode 100644 index 0000000000..978c6b1526 --- /dev/null +++ b/packages/infrastructure/webpack/index.js @@ -0,0 +1,5 @@ +module.exports = { + configForNode: require("./src/node-config"), + configForReact: require("./src/react-config"), + getMultiExportConfig: require("./src/get-multi-export-config"), +}; diff --git a/packages/infrastructure/webpack/jest.config.js b/packages/infrastructure/webpack/jest.config.js new file mode 100644 index 0000000000..89c15cd6f4 --- /dev/null +++ b/packages/infrastructure/webpack/jest.config.js @@ -0,0 +1,8 @@ +const { configForNode } = + require("@k8slens/jest").monorepoPackageConfig(__dirname); + +module.exports = { + ...configForNode, + + collectCoverageFrom: [...configForNode.collectCoverageFrom], +}; diff --git a/packages/infrastructure/webpack/package.json b/packages/infrastructure/webpack/package.json new file mode 100644 index 0000000000..35df41519c --- /dev/null +++ b/packages/infrastructure/webpack/package.json @@ -0,0 +1,36 @@ +{ + "name": "@k8slens/webpack", + "private": false, + "version": "0.0.1", + "description": "Webpack configurations and scripts for Lens packages.", + "type": "commonjs", + "repository": { + "type": "git", + "url": "git+https://github.com/lensapp/lens.git" + }, + "main": "index.js", + "author": { + "name": "OpenLens Authors", + "email": "info@k8slens.dev" + }, + "license": "MIT", + "homepage": "https://github.com/lensapp/lens", + "bin": { + "lens-build": "bin/build.sh", + "lens-remove-build": "bin/remove-build.sh" + }, + "scripts": { + "test:unit": "lens-test" + }, + "dependencies": { + "@types/webpack-env": "^1.18.0", + "css-loader": "^6.7.2", + "mini-css-extract-plugin": "^2.7.0", + "sass-loader": "^13.2.0", + "style-loader": "^3.3.1", + "ts-loader": "^9.4.1", + "webpack": "^5.75.0", + "webpack-cli": "^4.10.0", + "webpack-node-externals": "^3.0.0" + } +} diff --git a/packages/infrastructure/webpack/src/get-multi-export-config.js b/packages/infrastructure/webpack/src/get-multi-export-config.js new file mode 100644 index 0000000000..02944c25d3 --- /dev/null +++ b/packages/infrastructure/webpack/src/get-multi-export-config.js @@ -0,0 +1,120 @@ +const nodeConfig = require("./node-config"); +const reactConfig = require("./react-config"); +const path = require("path"); +const { + map, + isEqual, + keys, + fromPairs, + toPairs, + reject, + values, + nth, + filter, +} = require("lodash/fp"); +const { pipeline } = require("@ogre-tools/fp"); + +module.exports = (packageJson, dependencies = { nodeConfig, reactConfig }) => { + if (!packageJson.lensMultiExportConfig) { + throw new Error( + `Tried to get multi export config for package "${packageJson.name}" but configuration is missing.` + ); + } + + const validBuildTypes = ["node", "react"]; + + const invalidBuildTypes = pipeline( + packageJson.lensMultiExportConfig, + values, + map((config) => config.buildType), + reject((buildType) => validBuildTypes.includes(buildType)) + ); + + if (invalidBuildTypes.length > 0) { + throw new Error( + `Tried to get multi export config for package "${ + packageJson.name + }" but build types "${invalidBuildTypes.join( + '", "' + )}" were not any of "${validBuildTypes.join('", "')}".` + ); + } + + const exportsWithMissingEntrypoint = pipeline( + packageJson.lensMultiExportConfig, + toPairs, + filter(([, config]) => !config.entrypoint), + map(nth(0)) + ); + + if (exportsWithMissingEntrypoint.length > 0) { + throw new Error( + `Tried to get multi export config for package "${ + packageJson.name + }" but entrypoint was missing for "${exportsWithMissingEntrypoint.join( + '", "' + )}".` + ); + } + + const expectedExports = pipeline( + packageJson.lensMultiExportConfig, + keys, + map(toExpectedExport), + fromPairs + ); + + if (!isEqual(expectedExports, packageJson.exports)) { + throw new Error( + `Tried to get multi export config but exports of package.json for "${ + packageJson.name + }" did not match exactly:\n\n${JSON.stringify(expectedExports, null, 2)}` + ); + } + + return pipeline( + packageJson.lensMultiExportConfig, + toPairs, + map(toExportSpecificWebpackConfigFor(dependencies)) + ); +}; + +const toExpectedExport = (externalImportPath) => { + const entrypointPath = `./${path.join( + "./dist", + externalImportPath, + "index.js" + )}`; + + return [ + externalImportPath, + { + types: `./${path.join("./dist", externalImportPath, "index.d.ts")}`, + + default: entrypointPath, + import: entrypointPath, + require: entrypointPath, + }, + ]; +}; + +const toExportSpecificWebpackConfigFor = + (dependencies) => + ([externalImportPath, { buildType, entrypoint }]) => { + const baseConfig = + buildType === "node" ? dependencies.nodeConfig : dependencies.reactConfig; + + return { + ...baseConfig, + name: entrypoint, + + entry: { + index: entrypoint, + }, + + output: { + ...baseConfig.output, + path: path.join(baseConfig.output.path, externalImportPath), + }, + }; + }; diff --git a/packages/infrastructure/webpack/src/get-multi-export-config.test.js b/packages/infrastructure/webpack/src/get-multi-export-config.test.js new file mode 100644 index 0000000000..6cad83919f --- /dev/null +++ b/packages/infrastructure/webpack/src/get-multi-export-config.test.js @@ -0,0 +1,184 @@ +import getMultiExportConfig from "./get-multi-export-config"; + +describe("get-multi-export-config", () => { + let actual; + let maximalPackageJson; + + beforeEach(() => { + maximalPackageJson = { + name: "some-name", + + lensMultiExportConfig: { + ".": { + buildType: "node", + entrypoint: "./index.ts", + }, + + "./some-entrypoint": { + buildType: "node", + entrypoint: "./some-entrypoint/index.ts", + }, + + "./some-other-entrypoint": { + buildType: "react", + entrypoint: "./some-other-entrypoint/index.ts", + }, + }, + + exports: { + ".": { + types: "./dist/index.d.ts", + require: "./dist/index.js", + import: "./dist/index.js", + default: "./dist/index.js", + }, + "./some-entrypoint": { + types: "./dist/some-entrypoint/index.d.ts", + require: "./dist/some-entrypoint/index.js", + import: "./dist/some-entrypoint/index.js", + default: "./dist/some-entrypoint/index.js", + }, + "./some-other-entrypoint": { + types: "./dist/some-other-entrypoint/index.d.ts", + require: "./dist/some-other-entrypoint/index.js", + import: "./dist/some-other-entrypoint/index.js", + default: "./dist/some-other-entrypoint/index.js", + }, + }, + }; + }); + + it("given maximal package.json, when creating configuration, works", () => { + actual = getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + + expect(actual).toEqual([ + { + name: "./index.ts", + stub: "node", + entry: { index: "./index.ts" }, + output: { some: "value", path: "/some-build-directory" }, + }, + + { + name: "./some-entrypoint/index.ts", + stub: "node", + entry: { index: "./some-entrypoint/index.ts" }, + + output: { + some: "value", + path: "/some-build-directory/some-entrypoint", + }, + }, + + { + name: "./some-other-entrypoint/index.ts", + stub: "react", + entry: { index: "./some-other-entrypoint/index.ts" }, + + output: { + some: "other-value", + path: "/some-build-directory/some-other-entrypoint", + }, + }, + ]); + }); + + it("given maximal package.json but path for entrypoint in exports do not match output, when creating configuration, throws", () => { + maximalPackageJson.exports["./some-entrypoint"].default = "wrong-path"; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config but exports of package.json for "some-name" did not match exactly:' + ); + }); + + it("given maximal package.json but exports do not match lens multi export config, when creating configuration, throws", () => { + maximalPackageJson.exports = {}; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config but exports of package.json for "some-name" did not match exactly:' + ); + }); + + it("given maximal package.json but exports are missing, when creating configuration, throws", () => { + delete maximalPackageJson.exports; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config but exports of package.json for "some-name" did not match exactly:' + ); + }); + + it("given maximal package.json but lens multi export config is missing, when creating configuration, throws", () => { + delete maximalPackageJson.lensMultiExportConfig; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config for package "some-name" but configuration is missing.' + ); + }); + + it("given maximal package.json but a build type is incorrect, when creating configuration, throws", () => { + maximalPackageJson.lensMultiExportConfig["."].buildType = "some-invalid"; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config for package "some-name" but build types "some-invalid" were not any of "node", "react".' + ); + }); + + it("given maximal package.json but entrypoint is missing, when creating configuration, throws", () => { + delete maximalPackageJson.lensMultiExportConfig["./some-entrypoint"] + .entrypoint; + + expect(() => { + getMultiExportConfig(maximalPackageJson, { + nodeConfig: nodeConfigStub, + reactConfig: reactConfigStub, + }); + }).toThrow( + 'Tried to get multi export config for package "some-name" but entrypoint was missing for "./some-entrypoint".' + ); + }); +}); + +const nodeConfigStub = { + stub: "node", + output: { + some: "value", + path: "/some-build-directory", + }, +}; + +const reactConfigStub = { + stub: "react", + + output: { + some: "other-value", + path: "/some-build-directory", + }, +}; diff --git a/packages/infrastructure/webpack/src/node-config.js b/packages/infrastructure/webpack/src/node-config.js new file mode 100644 index 0000000000..d01f58b882 --- /dev/null +++ b/packages/infrastructure/webpack/src/node-config.js @@ -0,0 +1,68 @@ +const nodeExternals = require("webpack-node-externals"); +const path = require("path"); + +const buildDirectory = path.resolve(process.cwd(), "dist"); + +module.exports = { + entry: { index: "./index.ts" }, + target: "node", + mode: "production", + + performance: { + maxEntrypointSize: 100000, + hints: "error", + }, + + resolve: { + extensions: [".ts", ".tsx"], + }, + + output: { + path: buildDirectory, + + filename: (pathData) => + pathData.chunk.name === "index" + ? "index.js" + : `${pathData.chunk.name}/index.js`, + + libraryTarget: "commonjs2", + }, + + externals: [ + nodeExternals({ modulesFromFile: true }), + + nodeExternals({ + modulesDir: path.resolve( + __dirname, + "..", + "..", + "..", + "..", + "node_modules" + ), + }), + ], + + externalsPresets: { node: true }, + + node: { + __dirname: true, + __filename: true, + }, + + module: { + rules: [ + { + test: /\.ts(x)?$/, + loader: "ts-loader", + + options: { + compilerOptions: { + declaration: true, + declarationDir: "./dist", + }, + }, + }, + ], + }, +}; diff --git a/packages/infrastructure/webpack/src/react-config.js b/packages/infrastructure/webpack/src/react-config.js new file mode 100644 index 0000000000..36ad7cca46 --- /dev/null +++ b/packages/infrastructure/webpack/src/react-config.js @@ -0,0 +1,44 @@ +const nodeConfig = require("./node-config"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); + +module.exports = { + ...nodeConfig, + + plugins: [ + new MiniCssExtractPlugin({ + filename: "[name].css", + }), + ], + + module: { + ...nodeConfig.module, + rules: [ + ...nodeConfig.module.rules, + + { + test: /\.s?css$/, + + use: [ + MiniCssExtractPlugin.loader, + { + loader: "css-loader", + options: { + sourceMap: false, + modules: { + auto: /\.module\./i, // https://github.com/webpack-contrib/css-loader#auto + mode: "local", // :local(.selector) by default + localIdentName: "[name]__[local]--[hash:base64:5]", + }, + }, + }, + { + loader: "sass-loader", + options: { + sourceMap: false, + }, + }, + ], + }, + ], + }, +}; diff --git a/packages/node-fetch/.gitignore b/packages/node-fetch/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/node-fetch/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ diff --git a/packages/open-lens/.gitignore b/packages/open-lens/.gitignore index 32589ce2ce..c465bfc76f 100644 --- a/packages/open-lens/.gitignore +++ b/packages/open-lens/.gitignore @@ -1,6 +1,4 @@ static/build binaries/ -dist/ -node_modules/ *.mjs *.mjs.map diff --git a/packages/release-tool/.gitignore b/packages/release-tool/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/release-tool/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/ diff --git a/packages/semver/.gitignore b/packages/semver/.gitignore deleted file mode 100644 index 1eae0cf670..0000000000 --- a/packages/semver/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -node_modules/