From b6de488162c478c02085f083363d8ff48d659a71 Mon Sep 17 00:00:00 2001 From: Apostolos Tsakpinis Date: Fri, 6 Sep 2024 03:29:50 +0300 Subject: [PATCH] build: switch to rspack --- .browserslistrc | 3 +- README.md | 2 +- package.json | 15 +- pnpm-lock.yaml | 824 +++++++++++++++++++++++------------ rspack.config.js | 164 +++++++ scripts/build-production.mjs | 13 +- scripts/post-production.mjs | 2 +- webpack.config.js | 200 --------- 8 files changed, 726 insertions(+), 497 deletions(-) create mode 100644 rspack.config.js delete mode 100644 webpack.config.js diff --git a/.browserslistrc b/.browserslistrc index 7121132f..0f402df6 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -2,9 +2,9 @@ # Run `pnpm dlx autoprefixer --info` to view CSS properties that need polyfill # From: https://github.com/adobe/react-spectrum/blob/main/.browserslistrc chrome >= 79 +edge >= 88 firefox >= 85 safari >= 13 -edge >= 88 [legacy] # https://github.com/browserslist/browserslist @@ -16,3 +16,4 @@ not op_mini all [development] last 1 chrome version last 1 firefox version +last 1 safari version diff --git a/README.md b/README.md index 551a711c..f06de5be 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ The following debugging tips may come in handy: - Prevent Terser from dropping `console.log` or `debugger` by changing `terserOptions` in [terser-config.json](./scripts/terser-config.json) - Set `PROFILING=1` env variable to load React profiling builds - Output `named` module & chunk ids in [webpack.config.js](./webpack.config.js) -- Analyze build output with `npx webpack-bundle-analyzer public/js/webpack.manifest.json -h 0.0.0.0` (for full breakdown, change to `all: true` when writing `webpack.manifest.json` in [build-production.js](./scripts/build-production.mjs)) +- Analyze build output with `npx webpack-bundle-analyzer public/js/manifest.json -h 0.0.0.0` (for full breakdown, change to `all: true` when writing `manifest.json` in [build-production.js](./scripts/build-production.mjs)) ## Other LWJGL subdomains: diff --git a/package.json b/package.json index 09f78b6d..b97ef1e6 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,11 @@ "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", "@radix-ui/react-compose-refs": "1.1.0", "@react-aria/overlays": "3.23.2", + "@rspack/cli": "1.0.3", + "@rspack/core": "1.0.3", + "@rspack/plugin-react-refresh": "1.0.0", "@stitches/react": "1.2.8", + "@swc/helpers": "0.5.13", "@types/lodash-es": "4.17.12", "@types/react": "18.3.5", "@types/react-dom": "18.3.0", @@ -88,13 +92,8 @@ "reselect": "5.1.1", "scroll-into-view-if-needed": "3.1.0", "shiki": "1.16.2", - "source-map-loader": "5.0.0", - "terser-webpack-plugin": "5.3.10", "typescript": "5.5.4", "use-context-selector": "2.0.0", - "webpack": "5.94.0", - "webpack-cli": "5.1.4", - "webpack-dev-server": "5.1.0", "zustand": "4.5.5" }, "overrides": { @@ -106,11 +105,11 @@ "scripts": { "start": "run-p dev:js dev:server", "build:styles": "NODE_ENV=development node ./scripts/build-styles.mjs", - "dev:js": "WDS=1 webpack serve", + "dev:js": "WDS=1 rspack serve", "dev:server": "NODE_ENV=development AWS_PROFILE=lwjgl node --no-warnings --watch server/index.mjs", "dev:debug": "NODE_ENV=development AWS_PROFILE=lwjgl node --inspect --preserve-symlinks server/index.mjs", "dev:test-production": "NODE_ENV=production AWS_PROFILE=lwjgl node --no-warnings --max_old_space_size=384 server/index.mjs --test --s3proxy --nocache --pretty", - "production": "run-p production:*", + "production": "run-p production:* && run-s post-production", "production:styles": "NODE_ENV=production node ./scripts/build-styles.mjs", "production:js": "NODE_ENV=production node ./scripts/build-production.mjs", "post-production": "node --no-warnings ./scripts/post-production.mjs", @@ -119,5 +118,5 @@ "lint": "eslint --ext .ts,.js,.tsx client/", "prettier": "prettier --write \"{client,server,scripts}/**/*.{ts,tsx,js,mjs,md,css}\"" }, - "packageManager": "pnpm@9.8.0+sha512.8e4c3550fb500e808dbc30bb0ce4dd1eb614e30b1c55245f211591ec2cdf9c611cabd34e1364b42f564bd54b3945ed0f49d61d1bbf2ec9bd74b866fcdc723276" + "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a7f5005..c2dfd8a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,25 +59,37 @@ importers: version: 7.24.7(@babel/core@7.25.2) '@pmmmwh/react-refresh-webpack-plugin': specifier: 0.5.15 - version: 0.5.15(react-refresh@0.0.0-experimental-4c58fce7-20240904)(type-fest@0.20.2)(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4)) + version: 0.5.15(react-refresh@0.0.0-experimental-4c58fce7-20240904)(type-fest@0.20.2)(webpack-dev-server@5.1.0(webpack@5.94.0))(webpack@5.94.0) '@radix-ui/react-compose-refs': specifier: 1.1.0 - version: 1.1.0(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + version: 1.1.0(@types/react@18.3.5)(react@0.0.0-experimental-4c58fce7-20240904) '@react-aria/overlays': specifier: 3.23.2 version: 3.23.2(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904) + '@rspack/cli': + specifier: 1.0.3 + version: 1.0.3(@rspack/core@1.0.3(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0) + '@rspack/core': + specifier: 1.0.3 + version: 1.0.3(@swc/helpers@0.5.13) + '@rspack/plugin-react-refresh': + specifier: 1.0.0 + version: 1.0.0(react-refresh@0.0.0-experimental-4c58fce7-20240904) '@stitches/react': specifier: 1.2.8 version: 1.2.8(react@0.0.0-experimental-4c58fce7-20240904) + '@swc/helpers': + specifier: 0.5.13 + version: 0.5.13 '@types/lodash-es': specifier: 4.17.12 version: 4.17.12 '@types/react': - specifier: npm:types-react@19.0.0-rc.0 - version: types-react@19.0.0-rc.0 + specifier: 18.3.5 + version: 18.3.5 '@types/react-dom': - specifier: npm:types-react@19.0.0-rc.0 - version: types-react@19.0.0-rc.0 + specifier: 18.3.0 + version: 18.3.0 '@typescript-eslint/eslint-plugin': specifier: 8.4.0 version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@8.56.0)(typescript@5.5.4))(eslint@8.56.0)(typescript@5.5.4) @@ -89,7 +101,7 @@ importers: version: 10.4.20(postcss@8.4.45) babel-loader: specifier: 9.1.3 - version: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0) babel-plugin-polyfill-corejs3: specifier: 0.10.6 version: 0.10.6(@babel/core@7.25.2) @@ -104,7 +116,7 @@ importers: version: 0.3.11 click-to-react-component: specifier: 1.1.0 - version: 1.1.0(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + version: 1.1.0(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904) core-js: specifier: 3.38.1 version: 3.38.1 @@ -188,28 +200,16 @@ importers: version: 1.16.2 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.94.0(webpack-cli@5.1.4)) - terser-webpack-plugin: - specifier: 5.3.10 - version: 5.3.10(webpack@5.94.0(webpack-cli@5.1.4)) + version: 5.0.0(webpack@5.94.0) typescript: specifier: 5.5.4 version: 5.5.4 use-context-selector: specifier: 2.0.0 version: 2.0.0(react@0.0.0-experimental-4c58fce7-20240904)(scheduler@0.0.0-experimental-4c58fce7-20240904) - webpack: - specifier: 5.94.0 - version: 5.94.0(webpack-cli@5.1.4) - webpack-cli: - specifier: 5.1.4 - version: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - webpack-dev-server: - specifier: 5.1.0 - version: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) zustand: specifier: 4.5.5 - version: 4.5.5(immer@10.1.1)(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + version: 4.5.5(@types/react@18.3.5)(immer@10.1.1)(react@0.0.0-experimental-4c58fce7-20240904) packages: @@ -1436,6 +1436,18 @@ packages: resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} engines: {node: '>=8'} + '@module-federation/runtime-tools@0.5.1': + resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} + + '@module-federation/runtime@0.5.1': + resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} + + '@module-federation/sdk@0.5.1': + resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} + + '@module-federation/webpack-bundler-runtime@0.5.1': + resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1478,6 +1490,9 @@ packages: webpack-plugin-serve: optional: true + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@radix-ui/react-compose-refs@1.1.0': resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: @@ -1549,6 +1564,86 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@rspack/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-MZlQpDRJkjIJJqmYMiziwz9vLXi1KjORYW6hemC2umDfOzUmlkRPBUF8oEqXaUQ+zYLbjhk4iTSbFdrlqUR+6w==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-Ke8Tw3+j5YFFIHjlqrEDnW5fbZU14s+l5LhLVaw6gVXH4yAAyFaZejaIViGi5fhKkdKmCXm0nVTK1KhhASZxAw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-Ydm6rsBnPYlKfWtz6sPRgAgJ5fQ+zFSHplR4bFlARIOXeWPn7ckQvFZrmKexuR0ULjG3Z4sbfrU6udc2MAWvig==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-2aS65Xne3W6qJJ5PN5oL/bMbkUeYpsQduT+ML6vY6hqvi6W6wYtkvHwscQ4HisxKQFWdB2bsE1+UT34XgHpijw==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-6UWii/GBkV0B98RSjJr9Za5Y8rvU1vQpE5+8vb26pvo3Sh3kvRfOmSeIFyqR3I92er5SQKmEp8uggb74st6QGQ==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-tpKGPJEe6vkkH3bsDz+l7xndNrOGxDvbDVOXV0uSESnRr6Pef5253Bi5PNooGLSaWQlXVDdazhi6x1beVHI2eg==} + cpu: [x64] + os: [linux] + + '@rspack/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-9FwP64T6yeq3cG1JQG0VagTMuJxJCT45G9LN5RTJ2kxJ4T28vL7uEc9usPpXOyd6xpbzTKXX0mVxL+c8x0EhZQ==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.0.3': + resolution: {integrity: sha512-nXbeh0206bGiwV1vgY8UDk92sZ2yMvJenevnnLtGFSMTRQ46Z2f9n+mUO1GlvpanR1HAfhgPddlKasIncTJmPQ==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-htBi4xt+iXD/NCEo/q4fYSg5YfXymK9P9zI36NFvfguQbhwqy4JgBx0IorjDFl5qvG70sdUzY7x98DJEseGScQ==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.0.3': + resolution: {integrity: sha512-wRLUDyi/6jFDDZJIov4uh9H9hJNk7JKDEhaMLM/5lJzzWsTLBB/q6JB1VAdIzOzBhYsU8iIMEVuG3Uih1H43uw==} + + '@rspack/cli@1.0.3': + resolution: {integrity: sha512-W/msqOXg93FXwq/Rxk6vkrdO3vHovxe22PMNauY6L1TQM6EpzyoBRoLfjuk+ONyEXpoLttYZF5YUWzAHNtRJoA==} + hasBin: true + peerDependencies: + '@rspack/core': ^1.0.0-alpha || ^1.x + + '@rspack/core@1.0.3': + resolution: {integrity: sha512-BqyBSrcTtsm1EDI10TrK6tEfNsy5vEnVDnbI0HBuQBH1zhKblnvsu6Y2bbS9+OGmB+OPEr76CmuZtzb+7V3wrQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/dev-server@1.0.3': + resolution: {integrity: sha512-l+hT6XN+DFlAsy8LjDmuVrYaw1KI/4BTANBcaLj/bpb5OIzTUSGcue7AUEqMrAJAgFqG1zYfP4Uvf7lG7WWfgw==} + peerDependencies: + '@rspack/core': '*' + + '@rspack/lite-tapable@1.0.0': + resolution: {integrity: sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==} + engines: {node: '>=16.0.0'} + + '@rspack/plugin-react-refresh@1.0.0': + resolution: {integrity: sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true + '@shikijs/core@1.16.2': resolution: {integrity: sha512-XSVH5OZCvE4WLMgdoBqfPMYmGHGmCC3OgZhw0S7KcSi2XKZ+5oHGe71GFnTljgdOxvxx5WrRks6QoTLKrl1eAA==} @@ -1827,12 +1922,21 @@ packages: '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + '@types/qs@6.9.15': resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react@18.3.5': + resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} + '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} @@ -1965,31 +2069,6 @@ packages: '@webassemblyjs/wast-printer@1.12.1': resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - '@webpack-cli/configtest@2.1.1': - resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/info@2.0.2': - resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/serve@2.0.5': - resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -2017,6 +2096,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -2276,9 +2359,9 @@ packages: peerDependencies: react: '>=16.8.0' - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} @@ -2300,6 +2383,9 @@ packages: colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2307,10 +2393,6 @@ packages: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2492,6 +2574,10 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2580,11 +2666,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2710,6 +2791,14 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit-hook@3.2.0: + resolution: {integrity: sha512-aIQN7Q04HGAV/I5BszisuHTZHXNoC23WtLkxdCLuYZMdWviRD0TMIt2bnUBi9MrHaF/hH8b3gwG9iaAUHKnJGA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} @@ -2753,10 +2842,6 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true - fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} @@ -2790,10 +2875,6 @@ packages: resolution: {integrity: sha512-HdWXgFYc6b1BJcOBDBwjqWuHJj1WYiqrxSh25qtU4DabpMFdj/gSunNBQb83t+8Zt67D7CXEzJWTkxaShMTMOA==} engines: {node: '>=14'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2806,10 +2887,6 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -2876,10 +2953,18 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -2924,6 +3009,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + gzip-size@7.0.0: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3013,6 +3102,10 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + hyperdyperid@1.2.0: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} @@ -3042,11 +3135,6 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3166,10 +3254,6 @@ packages: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} @@ -3181,6 +3265,10 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -3209,10 +3297,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -3274,10 +3358,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - launch-editor@2.9.1: resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} @@ -3307,10 +3387,6 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3410,6 +3486,10 @@ packages: engines: {node: '>=16'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -3428,6 +3508,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -3482,6 +3566,10 @@ packages: engines: {node: '>= 4'} hasBin: true + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -3519,18 +3607,22 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -3539,10 +3631,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -3555,10 +3643,6 @@ packages: resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} engines: {node: '>=16.17'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} @@ -3641,10 +3725,6 @@ packages: resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} hasBin: true - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -4173,6 +4253,10 @@ packages: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -4183,18 +4267,10 @@ packages: reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4219,6 +4295,10 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -4322,10 +4402,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -4352,10 +4428,17 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -4462,6 +4545,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4555,6 +4642,10 @@ packages: token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + tree-dump@1.0.2: resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} @@ -4602,9 +4693,6 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - types-react@19.0.0-rc.0: - resolution: {integrity: sha512-JFd3qtgXZ+EdHht8WXMPSF231brd6Bu4yLKqyo0JjpzhmjYxJptT6TBh/xFqOhx+ee2Nagj7Ttkh5F/jc49TVQ==} - typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} @@ -4702,31 +4790,32 @@ packages: wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - webpack-cli@5.1.4: - resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} - engines: {node: '>=14.15.0'} + webpack-bundle-analyzer@4.6.1: + resolution: {integrity: sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==} + engines: {node: '>= 10.13.0'} hasBin: true + + webpack-dev-middleware@7.4.2: + resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + engines: {node: '>= 18.12.0'} peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' + webpack: ^5.0.0 peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: + webpack: optional: true - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} engines: {node: '>= 18.12.0'} + hasBin: true peerDependencies: webpack: ^5.0.0 + webpack-cli: '*' peerDependenciesMeta: webpack: optional: true + webpack-cli: + optional: true webpack-dev-server@5.1.0: resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} @@ -4741,10 +4830,6 @@ packages: webpack-cli: optional: true - webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -4783,9 +4868,6 @@ packages: engines: {node: '>= 8'} hasBin: true - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - with@7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} @@ -4805,6 +4887,18 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -4817,9 +4911,21 @@ packages: utf-8-validate: optional: true + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -6601,23 +6707,23 @@ snapshots: dependencies: '@floating-ui/core': 0.6.2 - '@floating-ui/react-dom-interactions@0.3.1(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0)': + '@floating-ui/react-dom-interactions@0.3.1(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)': dependencies: - '@floating-ui/react-dom': 0.6.3(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + '@floating-ui/react-dom': 0.6.3(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904) aria-hidden: 1.2.4 point-in-polygon: 1.1.0 - use-isomorphic-layout-effect: 1.1.2(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.5)(react@0.0.0-experimental-4c58fce7-20240904) transitivePeerDependencies: - '@types/react' - react - react-dom - '@floating-ui/react-dom@0.6.3(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0)': + '@floating-ui/react-dom@0.6.3(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)': dependencies: '@floating-ui/dom': 0.4.5 react: 0.0.0-experimental-4c58fce7-20240904 react-dom: 0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904) - use-isomorphic-layout-effect: 1.1.2(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.5)(react@0.0.0-experimental-4c58fce7-20240904) transitivePeerDependencies: - '@types/react' @@ -6731,6 +6837,22 @@ snapshots: '@lukeed/ms@2.0.2': {} + '@module-federation/runtime-tools@0.5.1': + dependencies: + '@module-federation/runtime': 0.5.1 + '@module-federation/webpack-bundler-runtime': 0.5.1 + + '@module-federation/runtime@0.5.1': + dependencies: + '@module-federation/sdk': 0.5.1 + + '@module-federation/sdk@0.5.1': {} + + '@module-federation/webpack-bundler-runtime@0.5.1': + dependencies: + '@module-federation/runtime': 0.5.1 + '@module-federation/sdk': 0.5.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6746,7 +6868,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.0.0-experimental-4c58fce7-20240904)(type-fest@0.20.2)(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.0.0-experimental-4c58fce7-20240904)(type-fest@0.20.2)(webpack-dev-server@5.1.0(webpack@5.94.0))(webpack@5.94.0)': dependencies: ansi-html: 0.0.9 core-js-pure: 3.38.1 @@ -6756,16 +6878,18 @@ snapshots: react-refresh: 0.0.0-experimental-4c58fce7-20240904 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.94.0(webpack-cli@5.1.4) + webpack: 5.94.0 optionalDependencies: type-fest: 0.20.2 - webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) + webpack-dev-server: 5.1.0(webpack@5.94.0) + + '@polka/url@1.0.0-next.25': {} - '@radix-ui/react-compose-refs@1.1.0(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@0.0.0-experimental-4c58fce7-20240904)': dependencies: react: 0.0.0-experimental-4c58fce7-20240904 optionalDependencies: - '@types/react': types-react@19.0.0-rc.0 + '@types/react': 18.3.5 '@react-aria/focus@3.18.2(react@0.0.0-experimental-4c58fce7-20240904)': dependencies: @@ -6860,6 +6984,104 @@ snapshots: dependencies: react: 0.0.0-experimental-4c58fce7-20240904 + '@rspack/binding-darwin-arm64@1.0.3': + optional: true + + '@rspack/binding-darwin-x64@1.0.3': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.0.3': + optional: true + + '@rspack/binding-linux-arm64-musl@1.0.3': + optional: true + + '@rspack/binding-linux-x64-gnu@1.0.3': + optional: true + + '@rspack/binding-linux-x64-musl@1.0.3': + optional: true + + '@rspack/binding-win32-arm64-msvc@1.0.3': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.0.3': + optional: true + + '@rspack/binding-win32-x64-msvc@1.0.3': + optional: true + + '@rspack/binding@1.0.3': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.0.3 + '@rspack/binding-darwin-x64': 1.0.3 + '@rspack/binding-linux-arm64-gnu': 1.0.3 + '@rspack/binding-linux-arm64-musl': 1.0.3 + '@rspack/binding-linux-x64-gnu': 1.0.3 + '@rspack/binding-linux-x64-musl': 1.0.3 + '@rspack/binding-win32-arm64-msvc': 1.0.3 + '@rspack/binding-win32-ia32-msvc': 1.0.3 + '@rspack/binding-win32-x64-msvc': 1.0.3 + + '@rspack/cli@1.0.3(@rspack/core@1.0.3(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)': + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@rspack/core': 1.0.3(@swc/helpers@0.5.13) + '@rspack/dev-server': 1.0.3(@rspack/core@1.0.3(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0) + colorette: 2.0.19 + exit-hook: 3.2.0 + interpret: 3.1.1 + rechoir: 0.8.0 + semver: 7.6.3 + webpack-bundle-analyzer: 4.6.1 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/core@1.0.3(@swc/helpers@0.5.13)': + dependencies: + '@module-federation/runtime-tools': 0.5.1 + '@rspack/binding': 1.0.3 + '@rspack/lite-tapable': 1.0.0 + caniuse-lite: 1.0.30001657 + optionalDependencies: + '@swc/helpers': 0.5.13 + + '@rspack/dev-server@1.0.3(@rspack/core@1.0.3(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)': + dependencies: + '@rspack/core': 1.0.3(@swc/helpers@0.5.13) + chokidar: 3.6.0 + connect-history-api-fallback: 2.0.0 + express: 4.19.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + mime-types: 2.1.35 + webpack-dev-middleware: 7.4.2(webpack@5.94.0) + webpack-dev-server: 5.0.4(webpack@5.94.0) + ws: 8.18.0 + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/lite-tapable@1.0.0': {} + + '@rspack/plugin-react-refresh@1.0.0(react-refresh@0.0.0-experimental-4c58fce7-20240904)': + dependencies: + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + optionalDependencies: + react-refresh: 0.0.0-experimental-4c58fce7-20240904 + '@shikijs/core@1.16.2': dependencies: '@shikijs/vscode-textmate': 9.2.0 @@ -7281,10 +7503,21 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/prop-types@15.7.12': {} + '@types/qs@6.9.15': {} '@types/range-parser@1.2.7': {} + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.5 + + '@types/react@18.3.5': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + '@types/retry@0.12.2': {} '@types/send@0.17.4': @@ -7477,23 +7710,6 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))': - dependencies: - webpack: 5.94.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))': - dependencies: - webpack: 5.94.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4))': - dependencies: - webpack: 5.94.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - optionalDependencies: - webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) - '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -7517,6 +7733,10 @@ snapshots: dependencies: acorn: 8.12.1 + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.1 + acorn@7.4.1: {} acorn@8.12.1: {} @@ -7626,12 +7846,12 @@ snapshots: '@fastify/error': 3.4.1 fastq: 1.17.1 - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(webpack-cli@5.1.4) + webpack: 5.94.0 babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): dependencies: @@ -7796,9 +8016,9 @@ snapshots: dependencies: colors: 1.0.3 - click-to-react-component@1.1.0(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0): + click-to-react-component@1.1.0(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904): dependencies: - '@floating-ui/react-dom-interactions': 0.3.1(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0) + '@floating-ui/react-dom-interactions': 0.3.1(@types/react@18.3.5)(react-dom@0.0.0-experimental-4c58fce7-20240904(react@0.0.0-experimental-4c58fce7-20240904))(react@0.0.0-experimental-4c58fce7-20240904) htm: 3.1.1 react: 0.0.0-experimental-4c58fce7-20240904 react-merge-refs: 1.1.0 @@ -7806,11 +8026,11 @@ snapshots: - '@types/react' - react-dom - clone-deep@4.0.1: + cliui@8.0.1: dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 clsx@2.1.1: {} @@ -7828,12 +8048,12 @@ snapshots: colord@2.9.3: {} + colorette@2.0.19: {} + colorette@2.0.20: {} colors@1.0.3: {} - commander@10.0.1: {} - commander@2.20.3: {} commander@7.2.0: {} @@ -8032,6 +8252,10 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -8109,8 +8333,6 @@ snapshots: entities@4.5.0: {} - envinfo@7.13.0: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -8305,6 +8527,20 @@ snapshots: events@3.3.0: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit-hook@3.2.0: {} + express@4.19.2: dependencies: accepts: 1.3.8 @@ -8383,8 +8619,6 @@ snapshots: dependencies: strnum: 1.0.5 - fastest-levenshtein@1.0.16: {} - fastify-plugin@4.5.1: {} fastify@4.28.1: @@ -8445,11 +8679,6 @@ snapshots: fast-querystring: 1.1.2 safe-regex2: 3.1.0 - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -8466,8 +8695,6 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat@5.0.2: {} - flatted@3.3.1: {} follow-redirects@1.15.8: {} @@ -8512,6 +8739,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -8520,6 +8749,8 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-stream@6.0.1: {} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -8573,6 +8804,10 @@ snapshots: graphemer@1.4.0: {} + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + gzip-size@7.0.0: dependencies: duplexer: 0.1.2 @@ -8665,6 +8900,8 @@ snapshots: transitivePeerDependencies: - debug + human-signals@2.1.0: {} + hyperdyperid@1.2.0: {} iconv-lite@0.4.24: @@ -8688,11 +8925,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -8794,10 +9026,6 @@ snapshots: is-plain-obj@3.0.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-promise@2.2.2: {} is-regex@1.1.4: @@ -8809,6 +9037,8 @@ snapshots: dependencies: call-bind: 1.0.7 + is-stream@2.0.1: {} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -8835,8 +9065,6 @@ snapshots: isexe@2.0.0: {} - isobject@3.0.1: {} - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -8895,8 +9123,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} - launch-editor@2.9.1: dependencies: picocolors: 1.1.0 @@ -8934,10 +9160,6 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -9010,6 +9232,8 @@ snapshots: mime@4.0.4: {} + mimic-fn@2.1.0: {} + minimalistic-assert@1.0.1: {} minimatch@10.0.1: @@ -9026,6 +9250,8 @@ snapshots: minipass@7.1.2: {} + mrmime@1.0.1: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -9074,6 +9300,10 @@ snapshots: shell-quote: 1.8.1 string.prototype.padend: 3.1.6 + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -9105,6 +9335,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + open@10.1.0: dependencies: default-browser: 5.2.1 @@ -9112,6 +9346,8 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 + opener@1.5.2: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -9121,10 +9357,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -9133,10 +9365,6 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -9151,8 +9379,6 @@ snapshots: is-network-error: 1.1.0 retry: 0.13.1 - p-try@2.2.0: {} - package-json-from-dist@1.0.0: {} pako@1.0.11: {} @@ -9222,10 +9448,6 @@ snapshots: sonic-boom: 4.1.0 thread-stream: 3.1.0 - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -9833,20 +10055,16 @@ snapshots: dependencies: jsesc: 0.5.0 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} requires-port@1.0.0: {} reselect@5.1.1: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -9865,6 +10083,10 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + run-applescript@7.0.0: {} run-parallel@1.2.0: @@ -9997,10 +10219,6 @@ snapshots: setprototypeof@1.2.0: {} - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -10028,8 +10246,16 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.2 + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + sirv@1.0.19: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 1.0.1 + totalist: 1.1.0 + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -10042,11 +10268,11 @@ snapshots: source-map-js@1.2.0: {} - source-map-loader@5.0.0(webpack@5.94.0(webpack-cli@5.1.4)): + source-map-loader@5.0.0(webpack@5.94.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.0 - webpack: 5.94.0(webpack-cli@5.1.4) + webpack: 5.94.0 source-map-support@0.5.21: dependencies: @@ -10158,6 +10384,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-json-comments@3.1.1: {} strnum@1.0.5: {} @@ -10194,14 +10422,14 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.10(webpack@5.94.0(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.6 - webpack: 5.94.0(webpack-cli@5.1.4) + webpack: 5.94.0 terser@5.31.6: dependencies: @@ -10234,6 +10462,8 @@ snapshots: token-stream@1.0.0: {} + totalist@1.1.0: {} + tree-dump@1.0.2(tslib@2.7.0): dependencies: tslib: 2.7.0 @@ -10289,10 +10519,6 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - types-react@19.0.0-rc.0: - dependencies: - csstype: 3.1.3 - typescript@5.5.4: {} unbox-primitive@1.0.2: @@ -10336,11 +10562,11 @@ snapshots: react: 0.0.0-experimental-4c58fce7-20240904 scheduler: 0.0.0-experimental-4c58fce7-20240904 - use-isomorphic-layout-effect@1.1.2(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0): + use-isomorphic-layout-effect@1.1.2(@types/react@18.3.5)(react@0.0.0-experimental-4c58fce7-20240904): dependencies: react: 0.0.0-experimental-4c58fce7-20240904 optionalDependencies: - '@types/react': types-react@19.0.0-rc.0 + '@types/react': 18.3.5 use-sync-external-store@1.2.2(react@0.0.0-experimental-4c58fce7-20240904): dependencies: @@ -10372,26 +10598,22 @@ snapshots: dependencies: minimalistic-assert: 1.0.1 - webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0): + webpack-bundle-analyzer@4.6.1: dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@5.1.4)) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.3 - envinfo: 7.13.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.94.0(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) + acorn: 8.12.1 + acorn-walk: 8.3.3 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate - webpack-dev-middleware@7.4.2(webpack@5.94.0(webpack-cli@5.1.4)): + webpack-dev-middleware@7.4.2(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 4.11.1 @@ -10400,9 +10622,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.94.0(webpack-cli@5.1.4) + webpack: 5.94.0 - webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0): + webpack-dev-server@5.0.4(webpack@5.94.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -10417,6 +10639,7 @@ snapshots: colorette: 2.0.20 compression: 1.7.4 connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 express: 4.19.2 graceful-fs: 4.2.11 html-entities: 2.5.2 @@ -10425,31 +10648,64 @@ snapshots: launch-editor: 2.9.1 open: 10.1.0 p-retry: 6.2.0 + rimraf: 5.0.10 schema-utils: 4.2.0 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.94.0(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.4.2(webpack@5.94.0) ws: 8.18.0 optionalDependencies: - webpack: 5.94.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) + webpack: 5.94.0 transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-merge@5.10.0: + webpack-dev-server@5.1.0(webpack@5.94.0): dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.12 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.9.1 + open: 10.1.0 + p-retry: 6.2.0 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.94.0) + ws: 8.18.0 + optionalDependencies: + webpack: 5.94.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + optional: true webpack-sources@3.2.3: {} - webpack@5.94.0(webpack-cli@5.1.4): + webpack@5.94.0: dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -10471,11 +10727,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -10513,8 +10767,6 @@ snapshots: dependencies: isexe: 2.0.0 - wildcard@2.0.1: {} - with@7.0.2: dependencies: '@babel/parser': 7.25.6 @@ -10538,10 +10790,26 @@ snapshots: wrappy@1.0.2: {} + ws@7.5.10: {} + ws@8.18.0: {} + y18n@5.0.8: {} + yallist@3.1.1: {} + yargs-parser@21.1.1: {} + + yargs@17.6.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} @@ -10556,10 +10824,10 @@ snapshots: zod@3.23.8: {} - zustand@4.5.5(immer@10.1.1)(react@0.0.0-experimental-4c58fce7-20240904)(types-react@19.0.0-rc.0): + zustand@4.5.5(@types/react@18.3.5)(immer@10.1.1)(react@0.0.0-experimental-4c58fce7-20240904): dependencies: use-sync-external-store: 1.2.2(react@0.0.0-experimental-4c58fce7-20240904) optionalDependencies: - '@types/react': types-react@19.0.0-rc.0 + '@types/react': 18.3.5 immer: 10.1.1 react: 0.0.0-experimental-4c58fce7-20240904 diff --git a/rspack.config.js b/rspack.config.js new file mode 100644 index 00000000..d3a1582a --- /dev/null +++ b/rspack.config.js @@ -0,0 +1,164 @@ +// @ts-check +'use strict'; +const path = require('node:path'); +const rspack = require('@rspack/core'); +const ReactRefreshPlugin = require('@rspack/plugin-react-refresh'); + +const PRODUCTION = process.env.NODE_ENV === 'production'; +const DEV = !PRODUCTION; +const WDS = process.env.WDS !== undefined; +const SOURCEMAP = process.env.SOURCEMAP !== undefined; +const ENABLE_PROFILING = process.env.PROFILING !== undefined; + +const env = { + ANALYTICS_TRACKING_ID: JSON.stringify('UA-83518-1'), + FLAG_PRODUCTION: String(PRODUCTION), + HOSTNAME_PRODUCTION: JSON.stringify('www.lwjgl.org'), +}; + +const browserslistConfig = PRODUCTION + ? { + targets: { chrome: '79', edge: '88', firefox: '85', safari: '13' }, + entry: 'usage', + coreJs: '3.38', + loose: true, + shippedProposals: true, + // forceAllTransforms: true, + } + : { + targets: 'last 1 chrome version, last 1 firefox version, last 1 safari version', + entry: 'usage', + coreJs: '3.38', + loose: true, + shippedProposals: true, + }; + +function buildConfiguration() { + /** @type {import('@rspack/cli').Configuration} */ + const config = { + experiments: { + futureDefaults: true, + }, + mode: PRODUCTION ? 'production' : 'development', + target: PRODUCTION ? 'browserslist' : 'web', + devtool: false, + entry: { + main: { + import: ['./client/main.tsx'], + }, + }, + output: { + path: path.resolve(__dirname, 'public/js'), + filename: PRODUCTION ? '[name].[contenthash].js' : '[name].js', + publicPath: '/js/', + chunkLoadTimeout: 30 * 1000, // 30sec instead of 2min + }, + resolve: { + extensions: ['.tsx', '.jsx', '.ts', '.wasm', '.js', '.mjs', '.json'], + alias: { + '~': path.resolve(__dirname, './client'), + }, + }, + module: { + rules: [ + { + test: /\.(j|t)s$/, + exclude: [/[\\/]node_modules[\\/]/], + loader: 'builtin:swc-loader', + options: { + jsc: { + externalHelpers: true, + parser: { + syntax: 'typescript', + }, + transform: { + react: { + runtime: 'automatic', + development: !PRODUCTION, + refresh: !PRODUCTION, + }, + }, + }, + env: browserslistConfig, + }, + }, + { + test: /\.(j|t)sx$/, + loader: 'builtin:swc-loader', + exclude: [/[\\/]node_modules[\\/]/], + options: { + jsc: { + externalHelpers: true, + parser: { + syntax: 'typescript', + tsx: true, + }, + transform: { + react: { + runtime: 'automatic', + development: !PRODUCTION, + refresh: !PRODUCTION, + }, + }, + }, + env: browserslistConfig, + }, + }, + ], + }, + plugins: [new rspack.DefinePlugin(env)], + }; + + if (DEV) { + if (!config.plugins) { + config.plugins = []; + } + config.plugins.push(new ReactRefreshPlugin()); + + if (!config.output) { + config.output = {}; + } + config.output.crossOriginLoading = 'anonymous'; + + // Enable source maps + config.devtool = SOURCEMAP ? 'inline-source-map' : 'cheap-module-source-map'; + + if (WDS) { + config.devServer = { + host: '0.0.0.0', + port: 8089, + static: false, + compress: false, + allowedHosts: 'all', + devMiddleware: { + index: false, + }, + }; + + if (process.env.WSL_DISTRO_NAME !== undefined) { + config.devServer.open = { + target: ['http://www.lwjgl.localhost/'], + app: { + name: 'explorer.exe', + }, + }; + } + } + } else { + if (ENABLE_PROFILING) { + if (!config.resolve) { + config.resolve = {}; + } + if (!config.resolve.alias) { + config.resolve.alias = {}; + } + + config.resolve.alias['react-dom'] = 'react-dom/profiling'; + config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling'; + } + } + + return config; +} + +module.exports = buildConfiguration(); diff --git a/scripts/build-production.mjs b/scripts/build-production.mjs index ee076894..46d8037d 100644 --- a/scripts/build-production.mjs +++ b/scripts/build-production.mjs @@ -1,7 +1,7 @@ import path from 'node:path'; import { opendir, unlink, writeFile } from 'node:fs/promises'; -import webpack from 'webpack'; -import config from '../webpack.config.js'; +import { rspack } from '@rspack/core'; +import config from '../rspack.config.js'; const buildPath = path.resolve(import.meta.dirname, '../public/js'); @@ -10,16 +10,13 @@ const buildDir = await opendir(buildPath); for await (const entry of buildDir) { const ext = path.extname(entry.name); // Remove all JS files and webpack manifest. Keep everything else, including deploy.json - if (ext === '.js' || (ext === '.json' && entry.name === 'webpack.manifest.json')) { + if (ext === '.js' || (ext === '.json' && entry.name === 'compiler.manifest.json')) { await unlink(path.resolve(buildPath, entry.name)); } } -// console.log(`Compiling JS in ${process.env.NODE_ENV === 'production' ? 'production' : 'development'} mode...`); - // Build with webpack -config.plugins.push(new webpack.ProgressPlugin()); -const compiler = webpack(config); +const compiler = rspack(config); compiler.run((err, stats) => { compiler.close(async () => { if (err) { @@ -56,7 +53,7 @@ compiler.run((err, stats) => { } await writeFile( - path.resolve(import.meta.dirname, '../public/js/webpack.manifest.json'), + path.resolve(import.meta.dirname, '../public/js/compiler.manifest.json'), JSON.stringify( stats.toJson({ colors: false, diff --git a/scripts/post-production.mjs b/scripts/post-production.mjs index c389407e..dbdd1d04 100644 --- a/scripts/post-production.mjs +++ b/scripts/post-production.mjs @@ -10,7 +10,7 @@ import prettyBytes from './lib/prettyBytes.mjs'; import formatSize from './lib/formatSize.mjs'; import ellipsis from './lib/ellipsis.mjs'; -import manifest from '../public/js/webpack.manifest.json' with { type: 'json' }; +import manifest from '../public/js/compiler.manifest.json' with { type: 'json' }; /* POST PRODUCTION: diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 9f5c2117..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,200 +0,0 @@ -'use strict'; -const path = require('node:path'); -const webpack = require('webpack'); -const TerserPlugin = require('terser-webpack-plugin'); -const terserOptions = require('./scripts/terser-config.json'); - -const PRODUCTION = process.env.NODE_ENV === 'production'; -const DEV = !PRODUCTION; -const WDS = process.env.WDS !== undefined; -const SOURCEMAP = process.env.SOURCEMAP !== undefined; -const ENABLE_PROFILING = process.env.PROFILING !== undefined; - -const env = { - ANALYTICS_TRACKING_ID: JSON.stringify('UA-83518-1'), - FLAG_PRODUCTION: String(PRODUCTION), - HOSTNAME_PRODUCTION: JSON.stringify('www.lwjgl.org'), -}; - -function buildConfiguration() { - const config = { - mode: PRODUCTION ? 'production' : 'development', - target: PRODUCTION ? 'browserslist' : 'web', - // cache: false, - // cache: true, // in-memory cache - cache: { - type: 'filesystem', - }, - infrastructureLogging: { - level: 'warn', - }, - optimization: { - chunkIds: PRODUCTION ? 'deterministic' : 'named', - minimize: PRODUCTION, - minimizer: [ - new TerserPlugin({ - parallel: true, - extractComments: false, - terserOptions, - }), - ], - emitOnErrors: false, - moduleIds: PRODUCTION ? 'deterministic' : 'named', - removeEmptyChunks: PRODUCTION, - removeAvailableModules: PRODUCTION, - mergeDuplicateChunks: PRODUCTION, - providedExports: PRODUCTION, - sideEffects: PRODUCTION, - innerGraph: PRODUCTION, - }, - performance: { hints: false }, - devtool: false, - entry: { - main: { - import: ['./client/main.tsx'], - }, - }, - output: { - path: path.resolve(__dirname, 'public/js'), - filename: PRODUCTION ? '[name].[contenthash].js' : '[name].js', - chunkFilename: PRODUCTION ? '[name].[contenthash].js' : '[name].js', - publicPath: '/js/', - chunkLoadTimeout: 30 * 1000, // 30sec instead of 2min - crossOriginLoading: false, // false | 'anonymous' | 'use-credentials' - hashFunction: 'xxhash64', - // environment: { - // arrowFunction: DEV, - // bigIntLiteral: DEV, - // const: DEV, - // destructuring: DEV, - // dynamicImport: DEV, - // forOf: DEV, - // module: DEV, - // }, - }, - resolve: { - extensions: ['.tsx', '.jsx', '.ts', '.wasm', '.js', '.mjs', '.json'], - alias: { - '~': path.resolve(__dirname, './client'), - }, - }, - module: { - rules: [ - { - test: /\.(mjs|js|ts|tsx)$/, - include: [path.resolve(__dirname, 'client')], - use: [ - { - loader: 'babel-loader', - options: { - cacheDirectory: true, - }, - }, - ], - }, - { - test: /\.css?$/, - use: [ - { - loader: 'style-loader', - options: { - injectType: 'lazyStyleTag', - }, - }, - { - loader: 'css-loader', - options: { - url: false, - import: false, - }, - }, - ], - }, - ], - }, - plugins: [new webpack.DefinePlugin(env)], - experiments: { - // futureDefaults: true, - cacheUnaffected: true, - backCompat: false, - }, - }; - - if (DEV) { - config.output.crossOriginLoading = 'anonymous'; - // config.output.chunkLoading = 'import'; - // config.output.chunkFormat = 'module'; - // config.externalsType = 'module'; - - config.experiments.lazyCompilation = { - entries: false, - imports: true, - }; - config.experiments.outputModule = true; - - // Disable chunks - config.optimization.splitChunks = false; - - // Enable source maps - config.devtool = SOURCEMAP ? 'inline-source-map' : 'cheap-module-source-map'; - - if (WDS) { - config.devServer = { - host: '0.0.0.0', - port: 8089, - hot: true, - static: false, - compress: false, - allowedHosts: 'all', - client: { - overlay: false, - }, - devMiddleware: { - index: false, - }, - }; - - if (process.env.WSL_DISTRO_NAME !== undefined) { - config.devServer.open = { - target: ['http://www.lwjgl.localhost/'], - app: { - name: 'explorer.exe', - }, - }; - } - - // React Refresh - const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); - config.plugins.push(new ReactRefreshWebpackPlugin({ overlay: false })); - } - } else { - // // Debug output - // config.optimization.moduleIds = 'named'; - // config.optimization.chunkIds = 'named'; - - // Use pre-built modules to avoid breaking legacy browsers - // config.resolve.alias.three = path.resolve(__dirname, `./node_modules/three/build/three.min.js`); - // config.resolve.alias.jszip = path.resolve(__dirname, `./node_modules/jszip/dist/jszip.min.js`); - - // Transpile modules that are shipped as ESNext - // config.module.rules[0].include.push(path.resolve(__dirname, 'node_modules/recoil')); - - if (ENABLE_PROFILING) { - config.resolve.alias['react-dom'] = 'react-dom/profiling'; - config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling'; - } - } - - if (DEV || SOURCEMAP) { - config.module.rules.unshift({ - enforce: 'pre', - exclude: /@babel(?:\/|\\{1,2})runtime/, - test: /\.(js|mjs|jsx|ts|tsx|css)$/, - use: 'source-map-loader', - }); - } - - return config; -} - -module.exports = buildConfiguration();