From 62adb609f2c1e4934ad6bd52ad485c0170f35d63 Mon Sep 17 00:00:00 2001 From: Kawanaao Date: Thu, 7 Dec 2023 11:51:06 +0200 Subject: [PATCH] Removed preprocessor, added statoscope plugin --- client/src/api/index.jsx | 32 +-- client/src/utils/hooks.js | 11 +- client/src/utils/routes.jsx | 10 +- dockerfile.local | 2 +- package-lock.json | 558 +++++++++++++++++++++++++++++++++--- package.json | 12 +- webpack.common.js | 20 +- webpack.dev.js | 8 +- 8 files changed, 560 insertions(+), 93 deletions(-) diff --git a/client/src/api/index.jsx b/client/src/api/index.jsx index a0de82e..987e265 100644 --- a/client/src/api/index.jsx +++ b/client/src/api/index.jsx @@ -6,7 +6,6 @@ import * as _market from './market'; import * as _constellation from './constellation'; import * as _metrics from './metrics'; -/// #if ENV == "demo" import * as authDemo from './authentication.demo'; import * as usersDemo from './users.demo'; import * as configDemo from './config.demo'; @@ -15,7 +14,6 @@ import * as indexDemo from './index.demo'; import * as marketDemo from './market.demo'; import * as constellationDemo from './constellation.demo'; import * as metricsDemo from './metrics.demo'; -/// #endif import wrap from './wrap'; import { redirectToLocal } from '../utils/indexs'; @@ -218,21 +216,21 @@ let market = _market; let constellation = _constellation; let metrics = _metrics; -/// #if ENV == "demo" -auth = authDemo; -users = usersDemo; -config = configDemo; -docker = dockerDemo; -market = marketDemo; -getStatus = indexDemo.getStatus; -newInstall = indexDemo.newInstall; -isOnline = indexDemo.isOnline; -checkHost = indexDemo.checkHost; -getDNS = indexDemo.getDNS; -uploadImage = indexDemo.uploadImage; -constellation = constellationDemo; -metrics = metricsDemo; -/// #endif +if(process.env.MODE === 'demo') { + auth = authDemo; + users = usersDemo; + config = configDemo; + docker = dockerDemo; + market = marketDemo; + getStatus = indexDemo.getStatus; + newInstall = indexDemo.newInstall; + isOnline = indexDemo.isOnline; + checkHost = indexDemo.checkHost; + getDNS = indexDemo.getDNS; + uploadImage = indexDemo.uploadImage; + constellation = constellationDemo; + metrics = metricsDemo; +} export { diff --git a/client/src/utils/hooks.js b/client/src/utils/hooks.js index 593fef6..8d6deff 100644 --- a/client/src/utils/hooks.js +++ b/client/src/utils/hooks.js @@ -1,18 +1,15 @@ import { useCookies } from 'react-cookie'; import { logout } from '../api/authentication'; +const isDemo = process.env.MODE === 'demo'; + function useClientInfos() { const [cookies] = useCookies(['client-infos']); - /// #if ENV == "demo" - const demoReturn = { + if(isDemo) return { nickname: "Demo", role: "2" - } - - if (demoReturn) - return demoReturn - /// #endif + }; let clientInfos = null; diff --git a/client/src/utils/routes.jsx b/client/src/utils/routes.jsx index 3b6e50d..c81a4ba 100644 --- a/client/src/utils/routes.jsx +++ b/client/src/utils/routes.jsx @@ -8,9 +8,7 @@ import { debounce, isDomain } from './indexs'; import * as API from '../api'; import { useEffect, useState } from 'react'; -/// #if ENV == "demo" import demoicons from './icons.demo.json'; -/// #endif export const sanitizeRoute = (_route) => { let route = { ..._route }; @@ -56,12 +54,8 @@ export const getFullOrigin = (route) => { } export const getFaviconURL = (route) => { - /// #if ENV == "demo" - const demoReturn = route.Mode == "STATIC" ? Folder : demoicons[route.Name] || logogray; - - if (demoReturn) - return demoReturn; - /// #endif + if (process.env.MODE === 'demo') + return route.Mode == "STATIC" ? Folder : demoicons[route.Name] || logogray; if (!route) { return logogray; diff --git a/dockerfile.local b/dockerfile.local index c1019cf..06b837f 100644 --- a/dockerfile.local +++ b/dockerfile.local @@ -30,7 +30,7 @@ COPY package-lock.json ./ RUN npm install COPY . . -RUN npm run client-build && \ +RUN npm run webpack:build && \ chmod +x build.sh && \ ./build.sh && \ rm -rf /usr/local/go \ diff --git a/package-lock.json b/package-lock.json index e2b93b0..312292e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,6 +64,7 @@ "@babel/preset-flow": "^7.23.3", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", + "@statoscope/webpack-plugin": "^5.28.2", "@swc/core": "^1.3.100", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", @@ -79,6 +80,7 @@ "babel-plugin-import": "^1.13.8", "babel-plugin-transform-runtime": "^6.23.0", "buffer": "^6.0.3", + "concurrently": "^8.2.2", "cross-env": "^7.0.3", "cross-var": "^1.1.0", "crypto-browserify": "^3.12.0", @@ -87,7 +89,6 @@ "file-loader": "^6.2.0", "html-loader": "^4.2.0", "html-webpack-plugin": "^5.5.3", - "ifdef-loader": "^2.3.2", "image-minimizer-webpack-plugin": "^3.8.3", "imagemin": "^8.0.1", "imagemin-gifsicle": "^7.0.0", @@ -105,6 +106,7 @@ "stream-browserify": "^3.0.0", "style-loader": "^3.3.3", "svgo": "^3.0.5", + "uglify-js": "^3.17.4", "util": "^0.12.5", "webpack": "^5.89.0", "webpack-bundle-analyzer": "^4.10.1", @@ -2127,6 +2129,15 @@ "node": ">=10.0.0" } }, + "node_modules/@discoveryjs/natural-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discoveryjs/natural-compare/-/natural-compare-1.1.0.tgz", + "integrity": "sha512-yuctPJs5lRXoI8LkpVZGAV6n+DKOuEsfpfcIDQ8ZjWHwazqk1QjBc4jMlof0UlZHyUqv4dwsOTooMiAmtzvwXA==", + "dev": true, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", @@ -2947,6 +2958,233 @@ "node": ">=4" } }, + "node_modules/@statoscope/extensions": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/extensions/-/extensions-5.28.1.tgz", + "integrity": "sha512-jxkHSNfr7KJOfxlueCtahv1LqscTALLkcGSrYCU71C4tR9GVYoVCUMOrhAFJr6ia+GlPhSaxOSk/j+Ay+ZN9vg==", + "dev": true + }, + "node_modules/@statoscope/helpers": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/helpers/-/helpers-5.28.1.tgz", + "integrity": "sha512-G+o+wCYsuc8+0OdY+kyrTOzm5A6X3yp8ArGTWjr9TCllqDk4LzBlHBmWo7z4SPigjNeY/i38sqi1PeWztW+rWA==", + "dev": true, + "dependencies": { + "@types/archy": "^0.0.32", + "@types/semver": "^7.5.1", + "archy": "~1.0.0", + "jora": "1.0.0-beta.8", + "semver": "^7.5.4" + } + }, + "node_modules/@statoscope/helpers/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@statoscope/helpers/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@statoscope/helpers/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@statoscope/report-writer": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/report-writer/-/report-writer-5.28.1.tgz", + "integrity": "sha512-BjZVdZa7XWkK+zUnFLFWp8yNgmis0DTaPiy/QyU56iWuW+DcF/un1wkvt8ha0jxlXRDbBOfezAztdLNx4U5mxw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.7", + "@types/node": "^18.0.0", + "@types/pako": "^2.0.0", + "pako": "^2.1.0" + } + }, + "node_modules/@statoscope/report-writer/node_modules/@types/node": { + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@statoscope/stats": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats/-/stats-5.28.1.tgz", + "integrity": "sha512-BB9IZQcBo9I0FFL5sHttF5ubhfE3HkbDMPw5MqEBCee7m6NrlrRe8dxLpPsCUkeFytTWjRLKrY1JOgQq/iE4Fg==", + "dev": true + }, + "node_modules/@statoscope/stats-extension-compressed": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.28.1.tgz", + "integrity": "sha512-tmmKbQwibSaRpWv+p8Tb7BxhMNuSGS28NJeN1t2byzakz/FLCzvkT9tj/aBxfQqEIOGusmN+8znz6XSmJ0cbew==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.28.1", + "@statoscope/helpers": "5.28.1", + "@statoscope/stats": "5.28.1", + "gzip-size": "^6.0.0" + } + }, + "node_modules/@statoscope/stats-extension-custom-reports": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.28.1.tgz", + "integrity": "sha512-f527f6bjl+6iJow+zQFw+hZxGR2hY/FIuFTxhrcbrDXqXu7ApK0e0azJJxAQs0eO1WPMSduXt2k/5kSFecC/kA==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.28.1", + "@statoscope/helpers": "5.28.1", + "@statoscope/stats": "5.28.1", + "@statoscope/types": "5.28.1" + } + }, + "node_modules/@statoscope/stats-extension-package-info": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.28.1.tgz", + "integrity": "sha512-HvwlMfFVSx91KmwUmeIcJZS/0rVbNTRvMEBHzPsZ1Y5BIqZlH/bk/HK8nWYjptUaNkpmcxewp5xO9FtpMaSNVA==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.28.1", + "@statoscope/helpers": "5.28.1", + "@statoscope/stats": "5.28.1" + } + }, + "node_modules/@statoscope/stats-extension-stats-validation-result": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.28.1.tgz", + "integrity": "sha512-vekMnWXVikWo2c4IzmjqKkHGxBTE9RNpTxnD5t5qGz2wx3IHuosV8kp4yaUlD/Atv8C+aLoF0Jg0Q4eB7IYWEA==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.28.1", + "@statoscope/helpers": "5.28.1", + "@statoscope/stats": "5.28.1", + "@statoscope/types": "5.28.1" + } + }, + "node_modules/@statoscope/types": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@statoscope/types/-/types-5.28.1.tgz", + "integrity": "sha512-PLcSaRQvGkKhjVLU3YbjFDfZN6H2WF0vp0QqQOOh6qvxRhlOc14ckyou04bnvEqsSWXpvkMPJhOLue+YdIFI9A==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.28.1" + } + }, + "node_modules/@statoscope/webpack-model": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-model/-/webpack-model-5.28.2.tgz", + "integrity": "sha512-q+AVtXBNyRRDh4prEfVVsZKdrgn0GFb5P3xIwFFvf832I/Tk9rn/fMk9v0+PqwXRYl6vxfrKHqrA8lJiRLh/6Q==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.28.1", + "@statoscope/helpers": "5.28.1", + "@statoscope/stats": "5.28.1", + "@statoscope/stats-extension-compressed": "5.28.1", + "@statoscope/stats-extension-custom-reports": "5.28.1", + "@statoscope/stats-extension-package-info": "5.28.1", + "@statoscope/stats-extension-stats-validation-result": "5.28.1", + "@statoscope/types": "5.28.1", + "@types/md5": "^2.3.2", + "@types/webpack": "^5.0.0", + "md5": "^2.3.0" + } + }, + "node_modules/@statoscope/webpack-plugin": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-plugin/-/webpack-plugin-5.28.2.tgz", + "integrity": "sha512-vFzZw/THVtLeat7+LYbhJhbNYBmHODXiPa1fiqsNQtmNexOTxa9SujrvMkqiVYCKX1elUHVm/UE1JGDmQIcuAA==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.7", + "@statoscope/report-writer": "5.28.1", + "@statoscope/stats": "5.28.1", + "@statoscope/stats-extension-compressed": "5.28.1", + "@statoscope/stats-extension-custom-reports": "5.28.1", + "@statoscope/types": "5.28.1", + "@statoscope/webpack-model": "5.28.2", + "@statoscope/webpack-stats-extension-compressed": "5.28.2", + "@statoscope/webpack-stats-extension-package-info": "5.28.2", + "@statoscope/webpack-ui": "5.28.2", + "@types/node": "^18.0.0", + "@types/webpack": "^5.0.0", + "open": "~8.4.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-plugin/node_modules/@types/node": { + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@statoscope/webpack-stats-extension-compressed": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.28.2.tgz", + "integrity": "sha512-8rdt6AHx3H28NIdhEXuQLAz5MAKibZA7+h3/YRJYKjvYAfFi6QlJB1hvoulAPmQlV3bIUKVrk5peHxpKQATQFw==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.28.1", + "@statoscope/stats-extension-compressed": "5.28.1", + "@statoscope/webpack-model": "5.28.2", + "@types/webpack": "^5.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-stats-extension-package-info": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.28.2.tgz", + "integrity": "sha512-+pKCnkNp0vGqCTtILHTD5/hBM0wdx8uZBGjFREGNcIMGpeoJM3FbsLMOiS0gFfeJrmL6ZpdhdVzSa58gN6db8A==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.28.1", + "@statoscope/stats-extension-package-info": "5.28.1", + "@statoscope/webpack-model": "5.28.2", + "@types/webpack": "^5.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-ui": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-ui/-/webpack-ui-5.28.2.tgz", + "integrity": "sha512-jQ9/CXsSD2FPFQHt7ZJgil8JsukFLTRfIclONyC9R2vomdb2FwHzak6/fEqKYjT2bsDWoWJPL0ieM4Kog6I0Nw==", + "dev": true, + "dependencies": { + "@statoscope/types": "5.28.1", + "@types/md5": "^2.3.2" + } + }, "node_modules/@swc/core": { "version": "1.3.100", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.100.tgz", @@ -3370,6 +3608,12 @@ "node": ">=10.13.0" } }, + "node_modules/@types/archy": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/archy/-/archy-0.0.32.tgz", + "integrity": "sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg==", + "dev": true + }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -3577,6 +3821,12 @@ "@types/lodash": "*" } }, + "node_modules/@types/md5": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/md5/-/md5-2.3.5.tgz", + "integrity": "sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -3601,6 +3851,12 @@ "@types/node": "*" } }, + "node_modules/@types/pako": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -3680,6 +3936,12 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -3735,6 +3997,17 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/webpack": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.5.tgz", + "integrity": "sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" + } + }, "node_modules/@types/webpack-bundle-analyzer": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.3.tgz", @@ -4182,6 +4455,12 @@ "node": ">=4" } }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -6402,6 +6681,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -6667,6 +6955,159 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -6971,6 +7412,15 @@ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -9885,41 +10335,6 @@ } ] }, - "node_modules/ifdef-loader": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/ifdef-loader/-/ifdef-loader-2.3.2.tgz", - "integrity": "sha512-kH9bHPrfIFxLpq3XEruJqSlHXch2nOljKIDRS/6MU5LDZTyHeaSWVf04wNYX+8RT+NDmeS8Vm5HwZ7akkXo8ig==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0" - } - }, - "node_modules/ifdef-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/ifdef-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/ignore": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", @@ -10494,6 +10909,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -11051,6 +11472,18 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/jora": { + "version": "1.0.0-beta.8", + "resolved": "https://registry.npmjs.org/jora/-/jora-1.0.0-beta.8.tgz", + "integrity": "sha512-f3WpYwfDTlhfSdyCkAlAXSKRpwZYBgCDnyWmA9D0yyItCTFnFefKtvFpaczrj/FItkgDkHiewgFuHsgh4TmokA==", + "dev": true, + "dependencies": { + "@discoveryjs/natural-compare": "^1.0.0" + }, + "engines": { + "node": "^10.12.0 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/jpegtran-bin": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-5.0.2.tgz", @@ -11650,6 +12083,17 @@ "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -12556,6 +13000,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "dev": true + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -14567,6 +15017,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -15171,6 +15630,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -16073,6 +16538,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -16171,6 +16645,18 @@ "node": "*" } }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", diff --git a/package.json b/package.json index 8e9f87e..ce5732f 100644 --- a/package.json +++ b/package.json @@ -78,15 +78,15 @@ "terser": "npm:@swc/core" }, "scripts": { - "webpack:setup-env": "cross-env NODE_ENV=$NODE_ENV production=$npm_config_use_production withReport=$npm_config_with_report analyzeDeps=$npm_config_analyze_deps", + "webpack:setup-env": "cross-env NODE_ENV=$NODE_ENV demo=$npm_config_demo production=$npm_config_use_production withReport=$npm_config_with_report analyzeDeps=$npm_config_analyze_deps", "webpack:build": "npm run webpack:setup-env -- webpack --config webpack.prod.js --progress", "webpack:serve": "npm run webpack:setup-env -- webpack serve --config webpack.dev.js --progress", "backend:build": "sh build.sh", "backend:start": "env COSMOS_CONFIG_FOLDER=/mnt/e/work/Cosmos-Server/zz_test_config/ CONFIG_FILE=./config_dev.json EZ=UTC ACME_STAGING=true build/cosmos", "backend:dev": "npm run build && npm run start", - "dockerdevbuild": "docker build -f dockerfile.local --tag cosmos-dev .", - "dockerdevrun": "docker stop cosmos-dev; docker rm cosmos-dev; docker run --cap-add NET_ADMIN -d -p 7200:443 -p 80:80 -p 53:53 -p 443:443 -p 4242:4242/udp -e DOCKER_HOST=tcp://host.docker.internal:2375 -e COSMOS_MONGODB=$MONGODB -e COSMOS_LOG_LEVEL=DEBUG -v /:/mnt/host --restart=unless-stopped -h cosmos-dev --name cosmos-dev cosmos-dev", - "dockerdev": "npm run client-build && npm run dockerdevbuild && npm run dockerdevrun" + "docker:build": "docker build -f dockerfile.local --tag cosmos-dev .", + "docker:start": "docker stop cosmos-dev; docker rm cosmos-dev; docker run --cap-add NET_ADMIN -d -p 7200:443 -p 80:80 -p 53:53 -p 443:443 -p 4242:4242/udp -e DOCKER_HOST=tcp://host.docker.internal:2375 -e COSMOS_MONGODB=$MONGODB -e COSMOS_LOG_LEVEL=DEBUG -v /:/mnt/host --restart=unless-stopped -h cosmos-dev --name cosmos-dev cosmos-dev", + "docker:dev": "concurrently 'npm run webpack:build' 'npm run docker:build' && npm run docker:start" }, "browserslist": { "production": [ @@ -109,6 +109,7 @@ "@babel/preset-flow": "^7.23.3", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", + "@statoscope/webpack-plugin": "^5.28.2", "@swc/core": "^1.3.100", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", @@ -124,6 +125,7 @@ "babel-plugin-import": "^1.13.8", "babel-plugin-transform-runtime": "^6.23.0", "buffer": "^6.0.3", + "concurrently": "^8.2.2", "cross-env": "^7.0.3", "cross-var": "^1.1.0", "crypto-browserify": "^3.12.0", @@ -132,7 +134,6 @@ "file-loader": "^6.2.0", "html-loader": "^4.2.0", "html-webpack-plugin": "^5.5.3", - "ifdef-loader": "^2.3.2", "image-minimizer-webpack-plugin": "^3.8.3", "imagemin": "^8.0.1", "imagemin-gifsicle": "^7.0.0", @@ -150,6 +151,7 @@ "stream-browserify": "^3.0.0", "style-loader": "^3.3.3", "svgo": "^3.0.5", + "uglify-js": "^3.17.4", "util": "^0.12.5", "webpack": "^5.89.0", "webpack-bundle-analyzer": "^4.10.1", diff --git a/webpack.common.js b/webpack.common.js index 300a32f..c8f607c 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,9 +1,11 @@ -const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer") const { DuplicatesPlugin } = require("inspectpack/plugin") +const { DefinePlugin } = require("webpack") const { join } = require("path") +const StatoscopeWebpackPlugin = require('@statoscope/webpack-plugin').default const MiniCssExtractPlugin = require("mini-css-extract-plugin") const HtmlWebpackPlugin = require("html-webpack-plugin") +const demo = !!process.env.demo const withReport = !!process.env.withReport const analyzeDeps = !!process.env.analyzeDeps @@ -20,23 +22,17 @@ module.exports = { template: "client/index.html", inject: true, minify: true + }), + new DefinePlugin({ + "process.env.MODE": JSON.stringify(demo ? "demo" : "production") }) - ].concat(withReport ? [new BundleAnalyzerPlugin()] : []) + ].concat(withReport ? [new StatoscopeWebpackPlugin()] : []) .concat(analyzeDeps ? [new DuplicatesPlugin({ emitErrors: true, verbose: true })] : []), module: { rules: [ { test: /\.(ts|js|mjs|cjs)x?$/i, - use: [ - "babel-loader", - { - loader: "ifdef-loader", - options: { - ENV: process.env.NODE_ENV, - "ifdef-uncomment-prefix": "// #code " - } - }, - ], + use: ["babel-loader"], exclude: /node_modules/, }, { diff --git a/webpack.dev.js b/webpack.dev.js index 2b74122..8bede68 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -1,4 +1,3 @@ -const { DefinePlugin } = require("webpack") const { merge } = require("webpack-merge") const { resolve } = require("path") const webpackCommon = require("./webpack.common.js") @@ -28,10 +27,5 @@ module.exports = merge(process.env.production ? webpackProd : webpackCommon, { warnings: true } } - }, - plugins: [ - new DefinePlugin({ - "import.meta.env.MODE": JSON.stringify("demo") - }) - ] + } })