From 4b5c3f772bf89f79ffb454619eb992284ce3a3db Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sat, 16 Dec 2023 13:00:29 -0800 Subject: [PATCH 01/15] Removed Vite and most packages Got basic static script working --- index.html | 5 +- package-lock.json | 2105 +------------------------------------------- package.json | 20 +- src/static.js | 114 +++ src/static.ts | 43 + src/vite-env.d.ts | 1 - tsconfig.json | 18 +- tsconfig.node.json | 9 - version | 2 +- vite.config.ts | 15 - 10 files changed, 171 insertions(+), 2161 deletions(-) create mode 100644 src/static.js create mode 100644 src/static.ts delete mode 100644 src/vite-env.d.ts delete mode 100644 tsconfig.node.json delete mode 100644 vite.config.ts diff --git a/index.html b/index.html index 24c181c..25b0dab 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - + @@ -7,7 +7,6 @@ -
- +

Hello, world!

diff --git a/package-lock.json b/package-lock.json index b3d9da9..003ceec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,23 +8,14 @@ "name": "starbase-80", "version": "1.3.0", "dependencies": { - "@types/react": "^18.2.45", - "@types/react-dom": "^18.2.17", - "@types/react-helmet": "^6.1.11", - "@vitejs/plugin-react": "^4.2.1", + "@types/node": "^20.10.4", "autoprefixer": "^10.4.16", "html-minifier": "^4.0.0", - "js-yaml": "^4.1.0", "postcss": "^8.4.32", "prettier": "^3.1.1", - "puppeteer": "^21.6.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-helmet": "^6.1.0", "replace-in-file": "^7.0.2", "tailwindcss": "^3.3.6", - "typescript": "^5.3.3", - "vite": "^5.0.8" + "typescript": "^5.3.3" } }, "node_modules/@alloc/quick-lru": { @@ -38,651 +29,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz", - "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz", - "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz", - "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz", - "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz", - "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz", - "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz", - "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz", - "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz", - "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz", - "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz", - "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz", - "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz", - "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz", - "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz", - "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz", - "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz", - "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz", - "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz", - "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz", - "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz", - "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz", - "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -763,307 +109,14 @@ "node": ">= 8" } }, - "node_modules/@puppeteer/browsers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.0.tgz", - "integrity": "sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==", - "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.1", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=16.3.0" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.0.tgz", - "integrity": "sha512-+1ge/xmaJpm1KVBuIH38Z94zj9fBD+hp+/5WLaHgyY8XLq1ibxk/zj6dTXaqM2cAbYKq8jYlhHd6k05If1W5xA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.0.tgz", - "integrity": "sha512-im6hUEyQ7ZfoZdNvtwgEJvBWZYauC9KVKq1w58LG2Zfz6zMd8gRrbN+xCVoqA2hv/v6fm9lp5LFGJ3za8EQH3A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.0.tgz", - "integrity": "sha512-u7aTMskN6Dmg1lCT0QJ+tINRt+ntUrvVkhbPfFz4bCwRZvjItx2nJtwJnJRlKMMaQCHRjrNqHRDYvE4mBm3DlQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.0.tgz", - "integrity": "sha512-8FvEl3w2ExmpcOmX5RJD0yqXcVSOqAJJUJ29Lca29Ik+3zPS1yFimr2fr5JSZ4Z5gt8/d7WqycpgkX9nocijSw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.0.tgz", - "integrity": "sha512-lHoKYaRwd4gge+IpqJHCY+8Vc3hhdJfU6ukFnnrJasEBUvVlydP8PuwndbWfGkdgSvZhHfSEw6urrlBj0TSSfg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.0.tgz", - "integrity": "sha512-JbEPfhndYeWHfOSeh4DOFvNXrj7ls9S/2omijVsao+LBPTPayT1uKcK3dHW3MwDJ7KO11t9m2cVTqXnTKpeaiw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.0.tgz", - "integrity": "sha512-ahqcSXLlcV2XUBM3/f/C6cRoh7NxYA/W7Yzuv4bDU1YscTFw7ay4LmD7l6OS8EMhTNvcrWGkEettL1Bhjf+B+w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.0.tgz", - "integrity": "sha512-uwvOYNtLw8gVtrExKhdFsYHA/kotURUmZYlinH2VcQxNCQJeJXnkmWgw2hI9Xgzhgu7J9QvWiq9TtTVwWMDa+w==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.0.tgz", - "integrity": "sha512-m6pkSwcZZD2LCFHZX/zW2aLIISyzWLU3hrLLzQKMI12+OLEzgruTovAxY5sCZJkipklaZqPy/2bEEBNjp+Y7xg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.0.tgz", - "integrity": "sha512-VFAC1RDRSbU3iOF98X42KaVicAfKf0m0OvIu8dbnqhTe26Kh6Ym9JrDulz7Hbk7/9zGc41JkV02g+p3BivOdAg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.0.tgz", - "integrity": "sha512-9jPgMvTKXARz4inw6jezMLA2ihDBvgIU9Ml01hjdVpOcMKyxFBJrn83KVQINnbeqDv0+HdO1c09hgZ8N0s820Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.0.tgz", - "integrity": "sha512-WE4pT2kTXQN2bAv40Uog0AsV7/s9nT9HBWXAou8+++MBCnY51QS02KYtm6dQxxosKi1VIz/wZIrTQO5UP2EW+Q==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.0.tgz", - "integrity": "sha512-aPP5Q5AqNGuT0tnuEkK/g4mnt3ZhheiXrDIiSVIHN9mcN21OyXDVbEMqmXPE7e2OplNLDkcvV+ZoGJa2ZImFgw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, "node_modules/@types/node": { "version": "20.10.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", - "optional": true, "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.2.45", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", - "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", - "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-helmet": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.11.tgz", - "integrity": "sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1072,17 +125,6 @@ "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -1105,22 +147,6 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -1157,43 +183,11 @@ "postcss": "^8.1.0" } }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-ftp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", - "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1253,45 +247,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -1328,19 +283,6 @@ } ] }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1378,18 +320,6 @@ "node": ">= 6" } }, - "node_modules/chromium-bidi": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.1.tgz", - "integrity": "sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==", - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "9.0.0" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, "node_modules/clean-css": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", @@ -1414,19 +344,6 @@ "node": ">=12" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -1440,63 +357,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -1508,53 +368,6 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", - "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1203626", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1203626.tgz", - "integrity": "sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g==" - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1575,81 +388,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz", - "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.9", - "@esbuild/android-arm64": "0.19.9", - "@esbuild/android-x64": "0.19.9", - "@esbuild/darwin-arm64": "0.19.9", - "@esbuild/darwin-x64": "0.19.9", - "@esbuild/freebsd-arm64": "0.19.9", - "@esbuild/freebsd-x64": "0.19.9", - "@esbuild/linux-arm": "0.19.9", - "@esbuild/linux-arm64": "0.19.9", - "@esbuild/linux-ia32": "0.19.9", - "@esbuild/linux-loong64": "0.19.9", - "@esbuild/linux-mips64el": "0.19.9", - "@esbuild/linux-ppc64": "0.19.9", - "@esbuild/linux-riscv64": "0.19.9", - "@esbuild/linux-s390x": "0.19.9", - "@esbuild/linux-x64": "0.19.9", - "@esbuild/netbsd-x64": "0.19.9", - "@esbuild/openbsd-x64": "0.19.9", - "@esbuild/sunos-x64": "0.19.9", - "@esbuild/win32-arm64": "0.19.9", - "@esbuild/win32-ia32": "0.19.9", - "@esbuild/win32-x64": "0.19.9" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1658,86 +396,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -1772,14 +430,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1803,19 +453,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1842,14 +479,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1858,34 +487,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-uri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", - "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.0", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1916,19 +517,6 @@ "node": ">=10.13.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1940,14 +528,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1981,64 +561,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2053,16 +575,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2128,57 +640,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -2192,30 +653,11 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, "node_modules/lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2247,21 +689,6 @@ "node": "*" } }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -2289,14 +716,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -2350,37 +769,6 @@ "wrappy": "1" } }, - "node_modules/pac-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", - "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", - "dependencies": { - "degenerator": "^5.0.0", - "ip": "^1.1.8", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -2389,34 +777,6 @@ "no-case": "^2.2.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2430,19 +790,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -2613,97 +960,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/puppeteer": { - "version": "21.6.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.6.1.tgz", - "integrity": "sha512-O+pbc61oj8ln6m8EJKncrsQFmytgRyFYERtk190PeLbJn5JKpmmynn2p1PiFrlhCitAQXLJ0MOy7F0TeyCRqBg==", - "hasInstallScript": true, - "dependencies": { - "@puppeteer/browsers": "1.9.0", - "cosmiconfig": "8.3.6", - "puppeteer-core": "21.6.1" - }, - "bin": { - "puppeteer": "lib/esm/puppeteer/node/cli.js" - }, - "engines": { - "node": ">=16.13.2" - } - }, - "node_modules/puppeteer-core": { - "version": "21.6.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.6.1.tgz", - "integrity": "sha512-0chaaK/RL9S1U3bsyR4fUeUfoj51vNnjWvXgG6DcsyMjwYNpLcAThv187i1rZCo7QhJP0wZN8plQkjNyrq2h+A==", - "dependencies": { - "@puppeteer/browsers": "1.9.0", - "chromium-bidi": "0.5.1", - "cross-fetch": "4.0.0", - "debug": "4.3.4", - "devtools-protocol": "0.0.1203626", - "ws": "8.15.1" - }, - "engines": { - "node": ">=16.13.2" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2723,74 +979,6 @@ } ] }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-fast-compare": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", - "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==" - }, - "node_modules/react-helmet": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", - "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", - "dependencies": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "react-side-effect": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.3.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-side-effect": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", - "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -2959,14 +1147,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2976,34 +1156,6 @@ "node": ">=0.10.0" } }, - "node_modules/rollup": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.0.tgz", - "integrity": "sha512-bUHW/9N21z64gw8s6tP4c88P382Bq/L5uZDowHlHx6s/QWpjJXivIAbEw6LZthgSvlEizZBfLC4OAvWe7aoF7A==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.0", - "@rollup/rollup-android-arm64": "4.9.0", - "@rollup/rollup-darwin-arm64": "4.9.0", - "@rollup/rollup-darwin-x64": "4.9.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.0", - "@rollup/rollup-linux-arm64-gnu": "4.9.0", - "@rollup/rollup-linux-arm64-musl": "4.9.0", - "@rollup/rollup-linux-riscv64-gnu": "4.9.0", - "@rollup/rollup-linux-x64-gnu": "4.9.0", - "@rollup/rollup-linux-x64-musl": "4.9.0", - "@rollup/rollup-win32-arm64-msvc": "4.9.0", - "@rollup/rollup-win32-ia32-msvc": "4.9.0", - "@rollup/rollup-win32-x64-msvc": "4.9.0", - "fsevents": "~2.3.2" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3026,69 +1178,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true, - "peer": true - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3105,15 +1194,6 @@ "node": ">=0.10.0" } }, - "node_modules/streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3159,17 +1239,6 @@ "node": ">=8" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -3217,26 +1286,6 @@ "node": ">=14.0.0" } }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -3256,19 +1305,6 @@ "node": ">=0.8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3280,21 +1316,11 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/typescript": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", @@ -3318,28 +1344,10 @@ "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", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "optional": true - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/update-browserslist-db": { "version": "1.0.13", @@ -3375,84 +1383,11 @@ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" }, - "node_modules/urlpattern-polyfill": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", - "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==" - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/vite": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.8.tgz", - "integrity": "sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==", - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -3504,26 +1439,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/ws": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", - "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -3532,11 +1447,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/yaml": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", @@ -3569,15 +1479,6 @@ "engines": { "node": ">=12" } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } } } } diff --git a/package.json b/package.json index 5ece4de..8b53deb 100644 --- a/package.json +++ b/package.json @@ -6,34 +6,22 @@ "url": "https://github.com/notclickable-jordan/starbase-80/" }, "version": "1.3.0", - "type": "module", + "type": "commonjs", "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "serve": "vite preview", - "start": "node start.js", + "build": "tsc src/static.ts && node src/static.js", "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", "replace": "npm run replace:script", "replace:script": "replace-in-file --configFile replace-script.cjs" }, "dependencies": { - "@types/react": "^18.2.45", - "@types/react-dom": "^18.2.17", - "@types/react-helmet": "^6.1.11", - "@vitejs/plugin-react": "^4.2.1", + "@types/node": "^20.10.4", "autoprefixer": "^10.4.16", "html-minifier": "^4.0.0", - "js-yaml": "^4.1.0", "postcss": "^8.4.32", "prettier": "^3.1.1", - "puppeteer": "^21.6.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-helmet": "^6.1.0", "replace-in-file": "^7.0.2", "tailwindcss": "^3.3.6", - "typescript": "^5.3.3", - "vite": "^5.0.8" + "typescript": "^5.3.3" }, "prettier": { "arrowParens": "avoid", diff --git a/src/static.js b/src/static.js new file mode 100644 index 0000000..8b367d2 --- /dev/null +++ b/src/static.js @@ -0,0 +1,114 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var fs = require("fs/promises"); +var path = require("path"); +var indexFilePath = path.join(__dirname, "../", "index.html"); +function writeIndexPage(contents) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { + var exception_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, fs.writeFile(indexFilePath, contents)]; + case 1: + _a.sent(); + return [2 /*return*/, resolve(true)]; + case 2: + exception_1 = _a.sent(); + console.error("Could not write index.html file"); + reject(exception_1); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); })]; + }); + }); +} +function readIndexPage() { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { + var index, exception_2; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, fs.readFile(indexFilePath)]; + case 1: + index = _a.sent(); + return [2 /*return*/, resolve(index.toString())]; + case 2: + exception_2 = _a.sent(); + console.error("Could not read index.html file"); + reject(exception_2); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); })]; + }); + }); +} +function start() { + return __awaiter(this, void 0, void 0, function () { + var index, newText, rootDiv, rootDivReplacement, newIndex; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, readIndexPage()]; + case 1: + index = _a.sent(); + newText = "

Hello, world!

"; + rootDiv = '
'; + rootDivReplacement = '
$1
'; + newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); + return [4 /*yield*/, writeIndexPage(newIndex)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); +} +start(); diff --git a/src/static.ts b/src/static.ts new file mode 100644 index 0000000..3192897 --- /dev/null +++ b/src/static.ts @@ -0,0 +1,43 @@ +import * as fs from "fs/promises"; +import * as path from "path"; + +const indexFilePath = path.join(__dirname, "../", "index.html"); + +async function writeIndexPage(contents: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await fs.writeFile(indexFilePath, contents); + return resolve(true); + } catch (exception) { + console.error("Could not write index.html file"); + reject(exception); + } + }); +} + +async function readIndexPage(): Promise { + return new Promise(async (resolve, reject) => { + try { + const index = await fs.readFile(indexFilePath); + + return resolve(index.toString()); + } catch (exception) { + console.error("Could not read index.html file"); + reject(exception); + } + }); +} + +async function start(): Promise { + const index = await readIndexPage(); + + const newText = "

Hello, world!

"; + const rootDiv = '
'; + const rootDivReplacement = '
$1
'; + + const newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); + + await writeIndexPage(newIndex); +} + +start(); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/tsconfig.json b/tsconfig.json index d37a456..795e75b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,11 @@ { "compilerOptions": { "target": "ESNext", - "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, + "outDir": "./dist", "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" + "esModuleInterop": true, + "module": "CommonJS" }, - "include": ["src", "public"], - "references": [{ "path": "./tsconfig.node.json" }] + "include": ["src/*.ts"] } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 9d31e2a..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/version b/version index 589268e..e21e727 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.3.0 \ No newline at end of file +1.4.0 \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 238a40d..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], - server: { - watch: { - usePolling: true, - }, - host: true, - strictPort: true, - port: 4173, - }, -}); From 8e420116291709ba1f6595060e78d1faa6298d91 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sat, 16 Dec 2023 14:03:25 -0800 Subject: [PATCH 02/15] Working on page component --- src/components/header.js | 9 ++++++ src/components/{header.tsx => header.ts} | 9 +++--- src/pages/index.js | 39 ++++++++++++++++++++++++ src/pages/{index.tsx => index.ts} | 24 ++++++++------- src/shared/is.js | 18 +++++++++++ src/shared/types.js | 2 ++ src/static.js | 4 ++- src/static.ts | 4 ++- src/variables.js | 11 +++++++ tsconfig.json | 3 +- 10 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 src/components/header.js rename src/components/{header.tsx => header.ts} (51%) create mode 100644 src/pages/index.js rename src/pages/{index.tsx => index.ts} (76%) create mode 100644 src/shared/is.js create mode 100644 src/shared/types.js create mode 100644 src/variables.js diff --git a/src/components/header.js b/src/components/header.js new file mode 100644 index 0000000..0f28b64 --- /dev/null +++ b/src/components/header.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Header = void 0; +var is_1 = require("../shared/is"); +var Header = function (_a) { + var icon = _a.icon, title = _a.title; + return "\n\t\t
\n\t\t\t".concat(!is_1.is.null(icon) && "{title}", "\n\t\t\t

{title}

\n\t\t
\n\t"); +}; +exports.Header = Header; diff --git a/src/components/header.tsx b/src/components/header.ts similarity index 51% rename from src/components/header.tsx rename to src/components/header.ts index 6e628cc..b0145ca 100644 --- a/src/components/header.tsx +++ b/src/components/header.ts @@ -1,4 +1,3 @@ -import React from "react"; import { is } from "../shared/is"; interface IProps { @@ -6,11 +5,11 @@ interface IProps { icon?: string; } -export const Header: React.FunctionComponent = ({ icon, title }) => { - return ( +export const Header = function ({ icon, title }) { + return `
- {!is.null(icon) && {title}} + ${!is.null(icon) && `{title}`}

{title}

- ); + `; }; diff --git a/src/pages/index.js b/src/pages/index.js new file mode 100644 index 0000000..80a6658 --- /dev/null +++ b/src/pages/index.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IndexPage = void 0; +var header_1 = require("../components/header"); +var config_json_1 = require("../config.json"); +var config_json_2 = require("../config/config.json"); +var is_1 = require("../shared/is"); +var variables_1 = require("../variables"); +var IndexPage = function (props) { + var icon = props.icon, title = props.title; + var mySerices = (is_1.is.null(config_json_1.default) ? config_json_2.default : config_json_1.default); + var headerClassName = "p-4"; + if (variables_1.SHOWHEADERTOP) { + headerClassName += " w-full"; + } + else { + headerClassName += " w-full xl:w-auto xl:max-w-xs xl:min-h-screen"; + } + if (variables_1.SHOWHEADERLINE) { + headerClassName += "border-0 border-solid border-gray-300 dark:border-gray-700"; + if (variables_1.SHOWHEADERTOP) { + headerClassName += " border-b"; + } + else { + headerClassName += " border-b xl:border-r xl:border-b-0"; + } + } + var pageWrapperClassName = "min-h-screen flex flex-col max-w-screen-2xl mx-auto"; + if (!variables_1.SHOWHEADERTOP) { + pageWrapperClassName += " xl:flex-row"; + } + var serviceCatalogListWrapperClassName = "p-4 flex-grow"; + if (!variables_1.SHOWHEADERTOP) { + serviceCatalogListWrapperClassName += " min-h-screen"; + } + return "\n\t\t
\n\t\t\t
\n\t\t\t\t").concat(variables_1.SHOWHEADER && + "\n\t\t\t\t\t
\n\t\t\t\t\t").concat((0, header_1.Header)({ icon: icon, title: title }), "\n\t\t\t\t\t
\n\t\t\t\t"), "\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t"); +}; +exports.IndexPage = IndexPage; diff --git a/src/pages/index.tsx b/src/pages/index.ts similarity index 76% rename from src/pages/index.tsx rename to src/pages/index.ts index f9863d6..d16eb09 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.ts @@ -1,6 +1,4 @@ -import React from "react"; import { Header } from "../components/header"; -import { ServiceCatalogList } from "../components/service-catalogs"; import userServicesOld from "../config.json"; import userServices from "../config/config.json"; import { is } from "../shared/is"; @@ -12,7 +10,8 @@ interface IProps { icon?: string; } -export const IndexPage: React.FunctionComponent = ({ icon, title }) => { +export const IndexPage = function (props: IProps): string { + const { icon, title } = props; const mySerices = (is.null(userServicesOld) ? userServices : userServicesOld) as IServiceCatalog[]; let headerClassName = "p-4"; @@ -45,18 +44,21 @@ export const IndexPage: React.FunctionComponent = ({ icon, title }) => { serviceCatalogListWrapperClassName += " min-h-screen"; } - return ( + return `
-
- {SHOWHEADER && ( -
-
+
+ ${ + SHOWHEADER && + ` +
+ ${Header({ icon, title })}
- )} -
+ ` + } +
- ); + `; }; diff --git a/src/shared/is.js b/src/shared/is.js new file mode 100644 index 0000000..e25da5b --- /dev/null +++ b/src/shared/is.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.is = void 0; +function IsArray(data) { + if (data === null || typeof data === "undefined") { + return false; + } + return data.constructor === Array; +} +function IsNull(data) { + return (typeof data === "undefined" || + data === null || + (typeof data === "string" && data.length === 0) || + (IsArray(data) && data.length === 0)); +} +exports.is = { + null: IsNull, +}; diff --git a/src/shared/types.js b/src/shared/types.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/src/shared/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/src/static.js b/src/static.js index 8b367d2..c57ff63 100644 --- a/src/static.js +++ b/src/static.js @@ -38,6 +38,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) { Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs/promises"); var path = require("path"); +var index_1 = require("./pages/index"); +var variables_1 = require("./variables"); var indexFilePath = path.join(__dirname, "../", "index.html"); function writeIndexPage(contents) { return __awaiter(this, void 0, void 0, function () { @@ -99,7 +101,7 @@ function start() { case 0: return [4 /*yield*/, readIndexPage()]; case 1: index = _a.sent(); - newText = "

Hello, world!

"; + newText = (0, index_1.IndexPage)({ icon: variables_1.PAGEICON, title: variables_1.PAGETITLE }); rootDiv = '
'; rootDivReplacement = '
$1
'; newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); diff --git a/src/static.ts b/src/static.ts index 3192897..9a121ca 100644 --- a/src/static.ts +++ b/src/static.ts @@ -1,5 +1,7 @@ import * as fs from "fs/promises"; import * as path from "path"; +import { IndexPage } from "./pages/index"; +import { PAGEICON, PAGETITLE } from "./variables"; const indexFilePath = path.join(__dirname, "../", "index.html"); @@ -31,7 +33,7 @@ async function readIndexPage(): Promise { async function start(): Promise { const index = await readIndexPage(); - const newText = "

Hello, world!

"; + const newText = IndexPage({ icon: PAGEICON, title: PAGETITLE }); const rootDiv = '
'; const rootDivReplacement = '
$1
'; diff --git a/src/variables.js b/src/variables.js new file mode 100644 index 0000000..fca83ba --- /dev/null +++ b/src/variables.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NEWWINDOW = exports.THEME = exports.CATEGORIES = exports.SHOWHEADERTOP = exports.SHOWHEADERLINE = exports.SHOWHEADER = exports.PAGEICON = exports.PAGETITLE = void 0; +exports.PAGETITLE = "My Website"; +exports.PAGEICON = "/logo.png"; +exports.SHOWHEADER = true; +exports.SHOWHEADERLINE = true; +exports.SHOWHEADERTOP = false; +exports.CATEGORIES = "normal"; +exports.THEME = "light"; +exports.NEWWINDOW = true; diff --git a/tsconfig.json b/tsconfig.json index 795e75b..8db37d7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,8 @@ "outDir": "./dist", "strict": true, "esModuleInterop": true, + "resolveJsonModule": true, "module": "CommonJS" }, - "include": ["src/*.ts"] + "include": ["src"] } From 714a831ead945fe95f12a0331508655a3706975d Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sat, 16 Dec 2023 14:12:06 -0800 Subject: [PATCH 03/15] Got the site building a little bit --- .gitignore | 3 ++- index.html | 20 +++++++++++++++++++- package.json | 2 +- src/components/header.ts | 5 +++-- src/static.ts | 21 +++++++++++---------- tsconfig.json | 2 +- 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 767e2f7..2575ddd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules .DS_Store dist -dist-ssr \ No newline at end of file +src/*.js +src/**/*.js \ No newline at end of file diff --git a/index.html b/index.html index 25b0dab..78211b5 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,24 @@ -

Hello, world!

+
+
+
+ +
+ +
+ {title} +

{title}

+
+ +
+ +
+ +
+
+
+
diff --git a/package.json b/package.json index 8b53deb..72a2f52 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "version": "1.3.0", "type": "commonjs", "scripts": { - "build": "tsc src/static.ts && node src/static.js", + "build": "tsc && node src/static.js", "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", "replace": "npm run replace:script", "replace:script": "replace-in-file --configFile replace-script.cjs" diff --git a/src/components/header.ts b/src/components/header.ts index b0145ca..95a999c 100644 --- a/src/components/header.ts +++ b/src/components/header.ts @@ -5,10 +5,11 @@ interface IProps { icon?: string; } -export const Header = function ({ icon, title }) { +export const Header = function (props: IProps) { + const { icon, title } = props; return `
- ${!is.null(icon) && `{title}`} + ${!is.null(icon) && `${title}`}

{title}

`; diff --git a/src/static.ts b/src/static.ts index 9a121ca..4eb2f5d 100644 --- a/src/static.ts +++ b/src/static.ts @@ -3,28 +3,29 @@ import * as path from "path"; import { IndexPage } from "./pages/index"; import { PAGEICON, PAGETITLE } from "./variables"; -const indexFilePath = path.join(__dirname, "../", "index.html"); +const indexFileInPath = path.join(__dirname, "../", "index.html"); +const indexFileOutPath = path.join(__dirname, "../", "index-2.html"); -async function writeIndexPage(contents: string): Promise { +async function readIndexPage(): Promise { return new Promise(async (resolve, reject) => { try { - await fs.writeFile(indexFilePath, contents); - return resolve(true); + const index = await fs.readFile(indexFileInPath); + + return resolve(index.toString()); } catch (exception) { - console.error("Could not write index.html file"); + console.error("Could not read index.html file"); reject(exception); } }); } -async function readIndexPage(): Promise { +async function writeIndexPage(contents: string): Promise { return new Promise(async (resolve, reject) => { try { - const index = await fs.readFile(indexFilePath); - - return resolve(index.toString()); + await fs.writeFile(indexFileOutPath, contents); + return resolve(true); } catch (exception) { - console.error("Could not read index.html file"); + console.error("Could not write index.html file"); reject(exception); } }); diff --git a/tsconfig.json b/tsconfig.json index 8db37d7..c7edd98 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,5 +8,5 @@ "resolveJsonModule": true, "module": "CommonJS" }, - "include": ["src"] + "include": ["src/static.ts"] } From 26ba6aaa384bff8c2b09bb414931c45e4fe6b5ba Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sun, 17 Dec 2023 21:37:00 -0800 Subject: [PATCH 04/15] Finished basic conversion --- index-2.html | 171 ++++++++++++++++++ index.html | 20 +- package.json | 2 +- src/components/anchor.ts | 34 ++++ src/components/anchor.tsx | 33 ---- src/components/header.js | 9 - src/components/header.ts | 4 +- src/components/{icon.tsx => icon.ts} | 118 +++++------- ...rvice-catalogs.tsx => service-catalogs.ts} | 27 +-- src/components/services.ts | 55 ++++++ src/components/services.tsx | 62 ------- src/main.tsx | 11 -- src/pages/index.js | 39 ---- src/pages/index.ts | 11 +- src/shared/is.js | 18 -- src/shared/types.js | 2 - src/static.js | 116 ------------ src/variables.js | 11 -- 18 files changed, 334 insertions(+), 409 deletions(-) create mode 100644 index-2.html create mode 100644 src/components/anchor.ts delete mode 100644 src/components/anchor.tsx delete mode 100644 src/components/header.js rename src/components/{icon.tsx => icon.ts} (65%) rename src/components/{service-catalogs.tsx => service-catalogs.ts} (61%) create mode 100644 src/components/services.ts delete mode 100644 src/components/services.tsx delete mode 100644 src/main.tsx delete mode 100644 src/pages/index.js delete mode 100644 src/shared/is.js delete mode 100644 src/shared/types.js delete mode 100644 src/static.js delete mode 100644 src/variables.js diff --git a/index-2.html b/index-2.html new file mode 100644 index 0000000..9a4904d --- /dev/null +++ b/index-2.html @@ -0,0 +1,171 @@ + + + + + + My Website + + + +
+
+
+
+
+ My Website +

My Website

+
+
+ +
+ +
+
+
+
+ + diff --git a/index.html b/index.html index 78211b5..290a279 100644 --- a/index.html +++ b/index.html @@ -7,24 +7,6 @@ -
-
-
- -
- -
- {title} -

{title}

-
- -
- -
- -
-
-
-
+
diff --git a/package.json b/package.json index 72a2f52..2cb19fc 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "version": "1.3.0", "type": "commonjs", "scripts": { - "build": "tsc && node src/static.js", + "build": "tsc && node ./dist/static.js", "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", "replace": "npm run replace:script", "replace:script": "replace-in-file --configFile replace-script.cjs" diff --git a/src/components/anchor.ts b/src/components/anchor.ts new file mode 100644 index 0000000..bea5dff --- /dev/null +++ b/src/components/anchor.ts @@ -0,0 +1,34 @@ +import { is } from "../shared/is"; +import { NEWWINDOW } from "../variables"; + +interface IProps { + uri: string; + title?: string; + className?: string; + children?: any; + newWindow?: boolean; +} + +export const Anchor = function (props: IProps) { + const { uri, children, title, className, newWindow } = props; + + let newWindowLocal = NEWWINDOW; + + if (!is.null(newWindow)) { + newWindowLocal = newWindow as boolean; + } + + if (newWindowLocal) { + return ` + + ${children} + + `; + } + + return ` + + ${children} + + `; +}; diff --git a/src/components/anchor.tsx b/src/components/anchor.tsx deleted file mode 100644 index 2d5304c..0000000 --- a/src/components/anchor.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; -import { is } from "../shared/is"; -import { NEWWINDOW } from "../variables"; - -interface IProps { - uri: string; - title?: string; - className?: string; - children?: React.ReactNode; - newWindow?: boolean; -} - -export const Anchor: React.FunctionComponent = ({ uri, children, title, className, newWindow }) => { - let newWindowLocal = NEWWINDOW; - - if (!is.null(newWindow)) { - newWindowLocal = newWindow as boolean; - } - - if (newWindowLocal) { - return ( - - {children} - - ); - } - - return ( - - {children} - - ); -}; diff --git a/src/components/header.js b/src/components/header.js deleted file mode 100644 index 0f28b64..0000000 --- a/src/components/header.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Header = void 0; -var is_1 = require("../shared/is"); -var Header = function (_a) { - var icon = _a.icon, title = _a.title; - return "\n\t\t
\n\t\t\t".concat(!is_1.is.null(icon) && "{title}", "\n\t\t\t

{title}

\n\t\t
\n\t"); -}; -exports.Header = Header; diff --git a/src/components/header.ts b/src/components/header.ts index 95a999c..93d7e53 100644 --- a/src/components/header.ts +++ b/src/components/header.ts @@ -9,8 +9,8 @@ export const Header = function (props: IProps) { const { icon, title } = props; return `
- ${!is.null(icon) && `${title}`} -

{title}

+ ${!is.null(icon) && `${title}`} +

${title}

`; }; diff --git a/src/components/icon.tsx b/src/components/icon.ts similarity index 65% rename from src/components/icon.tsx rename to src/components/icon.ts index 32f7775..76674a4 100644 --- a/src/components/icon.tsx +++ b/src/components/icon.ts @@ -1,4 +1,3 @@ -import React from "react"; import { is } from "../shared/is"; import { IconAspect } from "../shared/types"; import { Anchor } from "./anchor"; @@ -36,67 +35,54 @@ interface IProps { newWindow?: boolean; } -export const Icon: React.FunctionComponent = ({ - name, - uri, - icon, - index, - iconBG, - iconBubble, - iconColor, - iconAspect, - newWindow, -}) => { - if (is.null(icon)) { +export const Icon = function (props: IProps): string { + const { name, uri, icon, index, iconBG, iconBubble, iconColor, iconAspect, newWindow } = props; + + if (!is.null(icon)) { if (!is.null(uri)) { - return ( - - - - ); + return Anchor({ uri: uri as string, title: name, newWindow, children: IconBlank({ index }) }); } - return ; + return IconBlank({ index }); } if (!is.null(uri)) { - return ( - - - - ); + return Anchor({ + uri: uri as string, + title: name, + newWindow, + className: "self-center", + children: IconBase({ + icon: icon as string, + iconBG, + iconColor, + iconBubble, + iconAspect, + }), + }); } - return ( - - ); + return IconBase({ + icon: icon as string, + iconBG, + iconColor, + iconBubble, + iconAspect, + }); }; interface IIconBlankProps { index: number; } -const IconBlank: React.FunctionComponent = ({ index }) => { - return ( +function IconBlank(props: IIconBlankProps) { + const { index } = props; + return ` - ); -}; + `; +} enum IconType { uri, @@ -112,13 +98,9 @@ interface IIconBaseProps { iconAspect?: IconAspect; } -const IconBase: React.FunctionComponent = ({ - icon, - iconBG, - iconBubble, - iconColor, - iconAspect = "square", -}) => { +function IconBase(props: IIconBaseProps) { + let { icon, iconBG, iconBubble, iconColor, iconAspect = "square" } = props; + let iconType: IconType = IconType.uri; if (icon.startsWith("http") || icon.startsWith("/")) { @@ -152,7 +134,7 @@ const IconBase: React.FunctionComponent = ({ iconClassName += " rounded-2xl border border-black/5 shadow-sm"; } - const iconStyle: React.CSSProperties = {}; + const iconStyle: any = {}; switch (iconType) { case IconType.uri: @@ -184,7 +166,7 @@ const IconBase: React.FunctionComponent = ({ break; } - const mdiIconStyle: React.CSSProperties = {}; + const mdiIconStyle: any = {}; let mdiIconColorFull = "bg-" + iconColor; if (!is.null(iconColor) && iconColor?.startsWith("#")) { @@ -194,31 +176,31 @@ const IconBase: React.FunctionComponent = ({ switch (iconType) { case IconType.uri: - return ; + return ``; case IconType.dashboard: icon = icon.replace(".png", "").replace(".jpg", "").replace(".svg", ""); - return ( + return ` - ); + `; case IconType.material: icon = icon.replace("mdi-", "").replace(".svg", ""); - return ( -
+ return ` +
- ); + `; } -}; +} diff --git a/src/components/service-catalogs.tsx b/src/components/service-catalogs.ts similarity index 61% rename from src/components/service-catalogs.tsx rename to src/components/service-catalogs.ts index 541443a..f2c9ca5 100644 --- a/src/components/service-catalogs.tsx +++ b/src/components/service-catalogs.ts @@ -1,4 +1,3 @@ -import React from "react"; import { IServiceCatalog } from "../shared/types"; import { CATEGORIES } from "../variables"; import { Services } from "./services"; @@ -7,14 +6,14 @@ interface IProps { catalogs: IServiceCatalog[]; } -export const ServiceCatalogList: React.FunctionComponent = ({ catalogs }) => { - return ( +export const ServiceCatalogList = function (props: IProps) { + const { catalogs } = props; + + return `
    - {catalogs.map((catalog, index) => ( - - ))} + ${catalogs.map((catalog, index) => ServiceCatalog({ catalog, index }))}
- ); + `; }; interface ICatalogProps { @@ -22,7 +21,9 @@ interface ICatalogProps { index: number; } -const ServiceCatalog: React.FunctionComponent = ({ catalog, index }) => { +const ServiceCatalog = function (props: ICatalogProps) { + const { catalog, index } = props; + let categoryClassName = "dark:text-slate-200"; switch (CATEGORIES as string) { @@ -41,10 +42,10 @@ const ServiceCatalog: React.FunctionComponent = ({ catalog, index liClassName += " bg-white dark:bg-black rounded-2xl px-6 py-6 ring-1 ring-slate-900/5 shadow-xl"; } - return ( -
  • -

    {catalog.category}

    - + return ` +
  • +

    ${catalog.category}

    + ${Services({ services: catalog.services })}
  • - ); + `; }; diff --git a/src/components/services.ts b/src/components/services.ts new file mode 100644 index 0000000..9a390e9 --- /dev/null +++ b/src/components/services.ts @@ -0,0 +1,55 @@ +import { is } from "../shared/is"; +import { IService } from "../shared/types"; +import { Anchor } from "./anchor"; +import { Icon } from "./icon"; + +interface IServicesProps { + services: IService[]; +} + +export const Services = function (props: IServicesProps) { + const { services } = props; + + return ` +
      + ${services.map((service, index) => Service({ index, service }))} +
    + `; +}; + +interface IServiceProps { + service: IService; + index: number; +} + +function Service(props: IServiceProps) { + const { service, index } = props; + + const { name, uri, description, icon, iconBG, iconBubble, iconColor, iconAspect, newWindow } = service; + + return ` +
  • + ${ + !is.null(icon) && + ` + + ${Icon({ name, icon, uri, index, iconColor, iconBG, iconBubble, iconAspect, newWindow })} + + ` + } +
    +

    + ${Anchor({ uri, newWindow, children: name })} +

    + ${ + !is.null(description) && + ` +

    2 + ${Anchor({ uri, newWindow, children: description })} +

    + ` + } +
    +
  • + `; +} diff --git a/src/components/services.tsx b/src/components/services.tsx deleted file mode 100644 index b3cb13e..0000000 --- a/src/components/services.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from "react"; -import { is } from "../shared/is"; -import { IService } from "../shared/types"; -import { Anchor } from "./anchor"; -import { Icon } from "./icon"; - -interface IServicesProps { - services: IService[]; -} - -export const Services: React.FunctionComponent = ({ services }) => { - return ( -
      - {services.map((service, index) => ( - - ))} -
    - ); -}; - -interface IServiceProps { - service: IService; - index: number; -} - -const Service: React.FunctionComponent = ({ service, index }) => { - const { name, uri, description, icon, iconBG, iconBubble, iconColor, iconAspect, newWindow } = service; - - return ( -
  • - {!is.null(icon) && ( - - - - )} -
    -

    - - {name} - -

    - {!is.null(description) && ( -

    - - {description} - -

    - )} -
    -
  • - ); -}; diff --git a/src/main.tsx b/src/main.tsx deleted file mode 100644 index 1179b26..0000000 --- a/src/main.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import { IndexPage } from "./pages"; -import "./tailwind.css"; -import { PAGEICON, PAGETITLE } from "./variables"; - -ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - - - -); diff --git a/src/pages/index.js b/src/pages/index.js deleted file mode 100644 index 80a6658..0000000 --- a/src/pages/index.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.IndexPage = void 0; -var header_1 = require("../components/header"); -var config_json_1 = require("../config.json"); -var config_json_2 = require("../config/config.json"); -var is_1 = require("../shared/is"); -var variables_1 = require("../variables"); -var IndexPage = function (props) { - var icon = props.icon, title = props.title; - var mySerices = (is_1.is.null(config_json_1.default) ? config_json_2.default : config_json_1.default); - var headerClassName = "p-4"; - if (variables_1.SHOWHEADERTOP) { - headerClassName += " w-full"; - } - else { - headerClassName += " w-full xl:w-auto xl:max-w-xs xl:min-h-screen"; - } - if (variables_1.SHOWHEADERLINE) { - headerClassName += "border-0 border-solid border-gray-300 dark:border-gray-700"; - if (variables_1.SHOWHEADERTOP) { - headerClassName += " border-b"; - } - else { - headerClassName += " border-b xl:border-r xl:border-b-0"; - } - } - var pageWrapperClassName = "min-h-screen flex flex-col max-w-screen-2xl mx-auto"; - if (!variables_1.SHOWHEADERTOP) { - pageWrapperClassName += " xl:flex-row"; - } - var serviceCatalogListWrapperClassName = "p-4 flex-grow"; - if (!variables_1.SHOWHEADERTOP) { - serviceCatalogListWrapperClassName += " min-h-screen"; - } - return "\n\t\t
    \n\t\t\t
    \n\t\t\t\t").concat(variables_1.SHOWHEADER && - "\n\t\t\t\t\t
    \n\t\t\t\t\t").concat((0, header_1.Header)({ icon: icon, title: title }), "\n\t\t\t\t\t
    \n\t\t\t\t"), "\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t"); -}; -exports.IndexPage = IndexPage; diff --git a/src/pages/index.ts b/src/pages/index.ts index d16eb09..0a87383 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -1,4 +1,5 @@ import { Header } from "../components/header"; +import { ServiceCatalogList } from "../components/service-catalogs"; import userServicesOld from "../config.json"; import userServices from "../config/config.json"; import { is } from "../shared/is"; @@ -12,7 +13,7 @@ interface IProps { export const IndexPage = function (props: IProps): string { const { icon, title } = props; - const mySerices = (is.null(userServicesOld) ? userServices : userServicesOld) as IServiceCatalog[]; + const myServices = (is.null(userServicesOld) ? userServices : userServicesOld) as IServiceCatalog[]; let headerClassName = "p-4"; @@ -46,17 +47,17 @@ export const IndexPage = function (props: IProps): string { return `
    -
    +
    ${ SHOWHEADER && ` -
    +
    ${Header({ icon, title })}
    ` } -
    - +
    + ${ServiceCatalogList({ catalogs: myServices })}
    diff --git a/src/shared/is.js b/src/shared/is.js deleted file mode 100644 index e25da5b..0000000 --- a/src/shared/is.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.is = void 0; -function IsArray(data) { - if (data === null || typeof data === "undefined") { - return false; - } - return data.constructor === Array; -} -function IsNull(data) { - return (typeof data === "undefined" || - data === null || - (typeof data === "string" && data.length === 0) || - (IsArray(data) && data.length === 0)); -} -exports.is = { - null: IsNull, -}; diff --git a/src/shared/types.js b/src/shared/types.js deleted file mode 100644 index c8ad2e5..0000000 --- a/src/shared/types.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/src/static.js b/src/static.js deleted file mode 100644 index c57ff63..0000000 --- a/src/static.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var fs = require("fs/promises"); -var path = require("path"); -var index_1 = require("./pages/index"); -var variables_1 = require("./variables"); -var indexFilePath = path.join(__dirname, "../", "index.html"); -function writeIndexPage(contents) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { - var exception_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 2, , 3]); - return [4 /*yield*/, fs.writeFile(indexFilePath, contents)]; - case 1: - _a.sent(); - return [2 /*return*/, resolve(true)]; - case 2: - exception_1 = _a.sent(); - console.error("Could not write index.html file"); - reject(exception_1); - return [3 /*break*/, 3]; - case 3: return [2 /*return*/]; - } - }); - }); })]; - }); - }); -} -function readIndexPage() { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () { - var index, exception_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 2, , 3]); - return [4 /*yield*/, fs.readFile(indexFilePath)]; - case 1: - index = _a.sent(); - return [2 /*return*/, resolve(index.toString())]; - case 2: - exception_2 = _a.sent(); - console.error("Could not read index.html file"); - reject(exception_2); - return [3 /*break*/, 3]; - case 3: return [2 /*return*/]; - } - }); - }); })]; - }); - }); -} -function start() { - return __awaiter(this, void 0, void 0, function () { - var index, newText, rootDiv, rootDivReplacement, newIndex; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, readIndexPage()]; - case 1: - index = _a.sent(); - newText = (0, index_1.IndexPage)({ icon: variables_1.PAGEICON, title: variables_1.PAGETITLE }); - rootDiv = '
    '; - rootDivReplacement = '
    $1
    '; - newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); - return [4 /*yield*/, writeIndexPage(newIndex)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); -} -start(); diff --git a/src/variables.js b/src/variables.js deleted file mode 100644 index fca83ba..0000000 --- a/src/variables.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.NEWWINDOW = exports.THEME = exports.CATEGORIES = exports.SHOWHEADERTOP = exports.SHOWHEADERLINE = exports.SHOWHEADER = exports.PAGEICON = exports.PAGETITLE = void 0; -exports.PAGETITLE = "My Website"; -exports.PAGEICON = "/logo.png"; -exports.SHOWHEADER = true; -exports.SHOWHEADERLINE = true; -exports.SHOWHEADERTOP = false; -exports.CATEGORIES = "normal"; -exports.THEME = "light"; -exports.NEWWINDOW = true; From c135f24bd742c9132eef8ac331867cc78f00c5be Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sun, 17 Dec 2023 22:05:17 -0800 Subject: [PATCH 05/15] Fixed a stray 2 --- index-2.html | 18 ++++++------------ src/components/anchor.ts | 4 ++-- src/components/services.ts | 2 +- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/index-2.html b/index-2.html index 9a4904d..38577e4 100644 --- a/index-2.html +++ b/index-2.html @@ -50,7 +50,7 @@ href="https://github.com/notclickable-jordan/starbase-80" target="_blank" rel="noreffer" - title="undefined" + title="" className="undefined" > Check the readme @@ -58,13 +58,11 @@

    - 2 - Use your own icons @@ -94,7 +92,7 @@ href="https://github.com/notclickable-jordan/docker-symphony" target="_blank" rel="noreffer" - title="undefined" + title="" className="undefined" > Bind mount @@ -102,13 +100,11 @@

    - 2 - /app/src/config/config.json @@ -138,7 +134,7 @@ href="https://www.paramountplus.com/" target="_blank" rel="noreffer" - title="undefined" + title="" className="undefined" > Watch Lower Decks @@ -146,13 +142,11 @@

    - 2 - On Paramount+ diff --git a/src/components/anchor.ts b/src/components/anchor.ts index bea5dff..93a4362 100644 --- a/src/components/anchor.ts +++ b/src/components/anchor.ts @@ -20,14 +20,14 @@ export const Anchor = function (props: IProps) { if (newWindowLocal) { return ` - + ${children} `; } return ` - + ${children} `; diff --git a/src/components/services.ts b/src/components/services.ts index 9a390e9..43cb856 100644 --- a/src/components/services.ts +++ b/src/components/services.ts @@ -44,7 +44,7 @@ function Service(props: IServiceProps) { ${ !is.null(description) && ` -

    2 +

    ${Anchor({ uri, newWindow, children: description })}

    ` From dea478b660954476113c40cf29189d3f8231b665 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sun, 17 Dec 2023 22:09:58 -0800 Subject: [PATCH 06/15] Removed more packages --- index-2.html | 165 --------------- package-lock.json | 426 --------------------------------------- package.json | 9 +- replace-script.cjs | 5 - src/components/anchor.ts | 4 +- src/components/header.ts | 2 +- src/components/icon.ts | 6 +- src/static.ts | 2 +- 8 files changed, 9 insertions(+), 610 deletions(-) delete mode 100644 index-2.html delete mode 100644 replace-script.cjs diff --git a/index-2.html b/index-2.html deleted file mode 100644 index 38577e4..0000000 --- a/index-2.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - My Website - - - -
    -
    -
    -
    -
    - My Website -

    My Website

    -
    -
    - -
    - -
    -
    -
    -
    - - diff --git a/package-lock.json b/package-lock.json index 003ceec..98a7fb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,8 @@ "version": "1.3.0", "dependencies": { "@types/node": "^20.10.4", - "autoprefixer": "^10.4.16", "html-minifier": "^4.0.0", - "postcss": "^8.4.32", "prettier": "^3.1.1", - "replace-in-file": "^7.0.2", "tailwindcss": "^3.3.6", "typescript": "^5.3.3" } @@ -117,14 +114,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -147,42 +136,6 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -216,37 +169,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -264,25 +186,6 @@ "node": ">= 6" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -331,19 +234,6 @@ "node": ">= 4.0" } }, - "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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -378,24 +268,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/electron-to-chromium": { - "version": "1.4.612", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.612.tgz", - "integrity": "sha512-dM8BMtXtlH237ecSMnYdYuCkib2QHq0kpWfUnavjdYsyr/6OsAwg5ZGUfnQ9KD1Ga4QgB2sqXlB2NT8zy2GnVg==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -441,18 +313,6 @@ "node": ">=8" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -479,14 +339,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -605,14 +457,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -724,11 +568,6 @@ "lower-case": "^1.1.1" } }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -737,14 +576,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1006,131 +837,6 @@ "node": ">= 0.10" } }, - "node_modules/replace-in-file": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.2.tgz", - "integrity": "sha512-tPG+Qmqf+x2Rf1WVdb/9B5tFIf6KJ5hs3fgxh1OTzPRUugPPvyAva7NvCJtnSpmyq6r+ABYcuUOqZkm6yzGSUw==", - "dependencies": { - "chalk": "^4.1.2", - "glob": "^8.1.0", - "yargs": "^17.7.2" - }, - "bin": { - "replace-in-file": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/replace-in-file/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/replace-in-file/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/replace-in-file/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/replace-in-file/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/replace-in-file/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==" - }, - "node_modules/replace-in-file/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/replace-in-file/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/replace-in-file/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/replace-in-file/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -1194,30 +900,6 @@ "node": ">=0.10.0" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/sucrase": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", @@ -1349,35 +1031,6 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", @@ -1388,65 +1041,11 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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==" - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, "node_modules/yaml": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", @@ -1454,31 +1053,6 @@ "engines": { "node": ">= 14" } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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/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==", - "engines": { - "node": ">=12" - } } } } diff --git a/package.json b/package.json index 2cb19fc..c6a3d96 100644 --- a/package.json +++ b/package.json @@ -8,18 +8,13 @@ "version": "1.3.0", "type": "commonjs", "scripts": { - "build": "tsc && node ./dist/static.js", - "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", - "replace": "npm run replace:script", - "replace:script": "replace-in-file --configFile replace-script.cjs" + "build": "tsc && node ./dist/static.js && npm run html", + "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html" }, "dependencies": { "@types/node": "^20.10.4", - "autoprefixer": "^10.4.16", "html-minifier": "^4.0.0", - "postcss": "^8.4.32", "prettier": "^3.1.1", - "replace-in-file": "^7.0.2", "tailwindcss": "^3.3.6", "typescript": "^5.3.3" }, diff --git a/replace-script.cjs b/replace-script.cjs deleted file mode 100644 index b25df60..0000000 --- a/replace-script.cjs +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - files: "./dist/index.html", - from: /]+><\/script>/gi, - to: "", -}; diff --git a/src/components/anchor.ts b/src/components/anchor.ts index 93a4362..02426bd 100644 --- a/src/components/anchor.ts +++ b/src/components/anchor.ts @@ -20,14 +20,14 @@ export const Anchor = function (props: IProps) { if (newWindowLocal) { return ` - + ${children} `; } return ` - + ${children} `; diff --git a/src/components/header.ts b/src/components/header.ts index 93d7e53..fc8bb98 100644 --- a/src/components/header.ts +++ b/src/components/header.ts @@ -9,7 +9,7 @@ export const Header = function (props: IProps) { const { icon, title } = props; return `
    - ${!is.null(icon) && `${title}`} + ${!is.null(icon) && `${title || `}

    ${title}

    `; diff --git a/src/components/icon.ts b/src/components/icon.ts index 76674a4..7d6e288 100644 --- a/src/components/icon.ts +++ b/src/components/icon.ts @@ -176,14 +176,14 @@ function IconBase(props: IIconBaseProps) { switch (iconType) { case IconType.uri: - return ``; + return ``; case IconType.dashboard: icon = icon.replace(".png", "").replace(".jpg", "").replace(".svg", ""); return ` `; @@ -191,7 +191,7 @@ function IconBase(props: IIconBaseProps) { icon = icon.replace("mdi-", "").replace(".svg", ""); return ` -
    +
    { return new Promise(async (resolve, reject) => { From 2908b36ecd74f87834da5fc27771177c117d0fc6 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sun, 17 Dec 2023 22:20:44 -0800 Subject: [PATCH 07/15] Configured Tailwind --- index.html | 1 + package.json | 5 +++-- tailwind.config.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 290a279..69c016f 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ My Website +
    diff --git a/package.json b/package.json index c6a3d96..56f1a1a 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,9 @@ "version": "1.3.0", "type": "commonjs", "scripts": { - "build": "tsc && node ./dist/static.js && npm run html", - "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html" + "build": "tsc && node ./dist/static.js && npm run html && npm run tailwind", + "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", + "tailwind": "npx tailwindcss -i ./src/tailwind.css -o ./dist/main.css" }, "dependencies": { "@types/node": "^20.10.4", diff --git a/tailwind.config.js b/tailwind.config.js index c379dac..5a92381 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,6 +1,6 @@ /** @type {import('tailwindcss').Config} */ export default { - content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + content: ["./dist/index.html"], safelist: [ /* Built from icon.tsx */ { From 9d79fdd73a4ad409d1756354f2f0bc0a628c2bd6 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Sun, 17 Dec 2023 22:22:05 -0800 Subject: [PATCH 08/15] Starting on Docker changes --- dockerfile | 18 ------------------ package.json | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/dockerfile b/dockerfile index 7b79e2f..d59039d 100644 --- a/dockerfile +++ b/dockerfile @@ -1,24 +1,6 @@ # Build site using Node JS FROM node:21-slim -# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others) -# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer -# installs, work. -RUN apt-get update \ - && apt-get install -y wget gnupg \ - && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ - && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ - && apt-get update \ - && apt-get install -y chromium fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \ - --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* - -ENV PUPPETEER_SKIP_DOWNLOAD true - -# Install puppeteer so it's available in the container. -RUN npm init -y && \ - npm i -g puppeteer - ARG BUILD_DATE LABEL \ diff --git a/package.json b/package.json index 56f1a1a..d3f0691 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": { "url": "https://github.com/notclickable-jordan/starbase-80/" }, - "version": "1.3.0", + "version": "1.4.0", "type": "commonjs", "scripts": { "build": "tsc && node ./dist/static.js && npm run html && npm run tailwind", From 219841a148b6e891e9b539d26bdadad41619de2b Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 09:49:33 -0800 Subject: [PATCH 09/15] Working on the dockerfile --- dockerfile | 2 ++ package-lock.json | 12 ++++++------ package.json | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dockerfile b/dockerfile index d59039d..e46b829 100644 --- a/dockerfile +++ b/dockerfile @@ -1,6 +1,8 @@ # Build site using Node JS FROM node:21-slim +RUN apt-get update && apt-get install -y nginx + ARG BUILD_DATE LABEL \ diff --git a/package-lock.json b/package-lock.json index 98a7fb2..c97f95d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,14 @@ { "name": "starbase-80", - "version": "1.3.0", + "version": "1.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "starbase-80", - "version": "1.3.0", + "version": "1.4.0", "dependencies": { - "@types/node": "^20.10.4", + "@types/node": "^20.10.5", "html-minifier": "^4.0.0", "prettier": "^3.1.1", "tailwindcss": "^3.3.6", @@ -107,9 +107,9 @@ } }, "node_modules/@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dependencies": { "undici-types": "~5.26.4" } diff --git a/package.json b/package.json index d3f0691..8015d79 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "tailwind": "npx tailwindcss -i ./src/tailwind.css -o ./dist/main.css" }, "dependencies": { - "@types/node": "^20.10.4", + "@types/node": "^20.10.5", "html-minifier": "^4.0.0", "prettier": "^3.1.1", "tailwindcss": "^3.3.6", From 8b21ff6e686e28d6943e3e11b1794883d4d00857 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 12:21:08 -0800 Subject: [PATCH 10/15] More docker updates Minifying CSS --- .gitignore | 4 +++- default.conf | 18 +++++++++++++++++ dockerfile | 6 +++++- index.html | 2 +- package-lock.json | 33 ++++++++++++++++++++++++++---- package.json | 11 +++++++--- src/css-cache-break.ts | 23 +++++++++++++++++++++ src/index.ts | 21 +++++++++++++++++++ src/shared/files.ts | 38 ++++++++++++++++++++++++++++++++++ src/static.ts | 46 ------------------------------------------ tsconfig.json | 2 +- 11 files changed, 147 insertions(+), 57 deletions(-) create mode 100644 default.conf create mode 100644 src/css-cache-break.ts create mode 100644 src/index.ts create mode 100644 src/shared/files.ts delete mode 100644 src/static.ts diff --git a/.gitignore b/.gitignore index 2575ddd..b65edcc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ node_modules .DS_Store dist src/*.js -src/**/*.js \ No newline at end of file +src/**/*.js +public/index.html +public/main.*.css \ No newline at end of file diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..3f65062 --- /dev/null +++ b/default.conf @@ -0,0 +1,18 @@ +server { + listen 4173; + + root /app; + + location /app { + try_files $uri $uri/ =404; + + # Cache settings for static content + expires 7d; # Cache static content for 7 days + add_header Cache-Control "public, max-age=604800, immutable"; + } + + # Additional configurations can be added here if needed + # For example, error handling, logging, etc. + error_page 404 /index.html; + error_page 500 502 503 504 /index.html; +} diff --git a/dockerfile b/dockerfile index e46b829..88d6e52 100644 --- a/dockerfile +++ b/dockerfile @@ -1,6 +1,7 @@ # Build site using Node JS FROM node:21-slim +# Install nginx RUN apt-get update && apt-get install -y nginx ARG BUILD_DATE @@ -19,6 +20,9 @@ RUN npm i COPY . . +# Copy the nginx config to the correct folder +COPY default.conf /etc/nginx/conf.d/default.conf + ENV NODE_ENV production ENV TITLE "My Website" @@ -37,4 +41,4 @@ EXPOSE 4173 RUN chmod +x /app/docker-entrypoint.sh ENTRYPOINT ["/app/docker-entrypoint.sh"] -CMD ["npm", "run", "start"] \ No newline at end of file +CMD ["npm", "run", "build"] \ No newline at end of file diff --git a/index.html b/index.html index 69c016f..9794b27 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ My Website - +
    diff --git a/package-lock.json b/package-lock.json index c97f95d..c3c06e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,14 @@ "version": "1.4.0", "dependencies": { "@types/node": "^20.10.5", + "clean-css": "^5.3.3", "html-minifier": "^4.0.0", "prettier": "^3.1.1", "tailwindcss": "^3.3.6", "typescript": "^5.3.3" + }, + "devDependencies": { + "@types/clean-css": "^4.2.11" } }, "node_modules/@alloc/quick-lru": { @@ -106,6 +110,16 @@ "node": ">= 8" } }, + "node_modules/@types/clean-css": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.11.tgz", + "integrity": "sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, "node_modules/@types/node": { "version": "20.10.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", @@ -224,14 +238,14 @@ } }, "node_modules/clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/commander": { @@ -408,6 +422,17 @@ "node": ">=6" } }, + "node_modules/html-minifier/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/html-minifier/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", diff --git a/package.json b/package.json index 8015d79..e72f2c2 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,14 @@ "version": "1.4.0", "type": "commonjs", "scripts": { - "build": "tsc && node ./dist/static.js && npm run html && npm run tailwind", - "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./dist --output-dir ./dist --file-ext html", - "tailwind": "npx tailwindcss -i ./src/tailwind.css -o ./dist/main.css" + "build": "tsc && node ./dist/index.js && npm run html && npm run tailwind && npm run css-cache-break", + "html": "html-minifier --remove-comments --collapse-whitespace --input-dir ./public --output-dir ./public --file-ext html", + "tailwind": "npx tailwindcss -i ./src/tailwind.css -o ./public/main.css", + "css-cache-break": "node ./dist/css-cache-break.js" }, "dependencies": { "@types/node": "^20.10.5", + "clean-css": "^5.3.3", "html-minifier": "^4.0.0", "prettier": "^3.1.1", "tailwindcss": "^3.3.6", @@ -27,5 +29,8 @@ "tabWidth": 4, "trailingComma": "es5", "useTabs": true + }, + "devDependencies": { + "@types/clean-css": "^4.2.11" } } diff --git a/src/css-cache-break.ts b/src/css-cache-break.ts new file mode 100644 index 0000000..ba16e0d --- /dev/null +++ b/src/css-cache-break.ts @@ -0,0 +1,23 @@ +import CleanCSS from "clean-css"; +import * as path from "path"; +import { sbReadFile, sbRename, sbWriteFile } from "./shared/files"; + +const mainCSSFilename = `main.${new Date().getTime()}.css`; + +const cssFileInPath = path.join(__dirname, "../", "./public", "main.css"); +const cssFileOutPath = path.join(__dirname, "../", "./public", mainCSSFilename); +const indexFileInOutPath = path.join(__dirname, "../", "./public", "index.html"); + +async function start(): Promise { + await sbRename(cssFileInPath, cssFileOutPath); + const css = await sbReadFile(cssFileOutPath); + await sbWriteFile(cssFileOutPath, new CleanCSS().minify(css).styles); + + const index = await sbReadFile(indexFileInOutPath); + const cssLink = ``; + const cssLinkReplacement = ``; + + await sbWriteFile(indexFileInOutPath, index.replace(cssLink, cssLinkReplacement)); +} + +start(); diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..1a7d643 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,21 @@ +import * as path from "path"; +import { IndexPage } from "./pages/index"; +import { sbReadFile, sbWriteFile } from "./shared/files"; +import { PAGEICON, PAGETITLE } from "./variables"; + +const indexFileInPath = path.join(__dirname, "../", "index.html"); +const indexFileOutPath = path.join(__dirname, "../", "./public", "index.html"); + +async function start(): Promise { + const index = await sbReadFile(indexFileInPath); + + const newText = IndexPage({ icon: PAGEICON, title: PAGETITLE }); + const rootDiv = '
    '; + const rootDivReplacement = '
    $1
    '; + + const newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); + + await sbWriteFile(indexFileOutPath, newIndex); +} + +start(); diff --git a/src/shared/files.ts b/src/shared/files.ts new file mode 100644 index 0000000..99b868d --- /dev/null +++ b/src/shared/files.ts @@ -0,0 +1,38 @@ +import * as fs from "fs/promises"; + +export async function sbReadFile(fileName: string): Promise { + return new Promise(async (resolve, reject) => { + try { + const index = await fs.readFile(fileName); + + return resolve(index.toString()); + } catch (exception) { + console.error(`Could not read file: ${fileName}`); + reject(exception); + } + }); +} + +export async function sbWriteFile(fileName: string, contents: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await fs.writeFile(fileName, contents); + return resolve(true); + } catch (exception) { + console.error(`Could not write file: ${fileName}`); + reject(exception); + } + }); +} + +export async function sbRename(fileNameOld: string, fileNameNew: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await fs.rename(fileNameOld, fileNameNew); + return resolve(true); + } catch (exception) { + console.error(`Could not rename file: ${fileNameOld} to ${fileNameNew}`); + reject(exception); + } + }); +} diff --git a/src/static.ts b/src/static.ts deleted file mode 100644 index 8b832aa..0000000 --- a/src/static.ts +++ /dev/null @@ -1,46 +0,0 @@ -import * as fs from "fs/promises"; -import * as path from "path"; -import { IndexPage } from "./pages/index"; -import { PAGEICON, PAGETITLE } from "./variables"; - -const indexFileInPath = path.join(__dirname, "../", "index.html"); -const indexFileOutPath = path.join(__dirname, "../", "./dist", "index.html"); - -async function readIndexPage(): Promise { - return new Promise(async (resolve, reject) => { - try { - const index = await fs.readFile(indexFileInPath); - - return resolve(index.toString()); - } catch (exception) { - console.error("Could not read index.html file"); - reject(exception); - } - }); -} - -async function writeIndexPage(contents: string): Promise { - return new Promise(async (resolve, reject) => { - try { - await fs.writeFile(indexFileOutPath, contents); - return resolve(true); - } catch (exception) { - console.error("Could not write index.html file"); - reject(exception); - } - }); -} - -async function start(): Promise { - const index = await readIndexPage(); - - const newText = IndexPage({ icon: PAGEICON, title: PAGETITLE }); - const rootDiv = '
    '; - const rootDivReplacement = '
    $1
    '; - - const newIndex = index.replace(rootDiv, rootDivReplacement.replace("$1", newText)); - - await writeIndexPage(newIndex); -} - -start(); diff --git a/tsconfig.json b/tsconfig.json index c7edd98..24e9c88 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,5 +8,5 @@ "resolveJsonModule": true, "module": "CommonJS" }, - "include": ["src/static.ts"] + "include": ["src/index.ts", "src/css-cache-break.ts"] } From 8ad6b201dafc9ae51f8075cd917d59c4d2a6c7be Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 12:47:46 -0800 Subject: [PATCH 11/15] Docker build works --- .gitignore | 3 ++- default.conf | 2 +- dockerfile | 2 +- src/css-cache-break.ts | 17 ++++++++++------- src/shared/files.ts | 27 +++++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index b65edcc..dafe049 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dist src/*.js src/**/*.js public/index.html -public/main.*.css \ No newline at end of file +public/main.css +public/css diff --git a/default.conf b/default.conf index 3f65062..c723440 100644 --- a/default.conf +++ b/default.conf @@ -1,7 +1,7 @@ server { listen 4173; - root /app; + root /app/public; location /app { try_files $uri $uri/ =404; diff --git a/dockerfile b/dockerfile index 88d6e52..855915c 100644 --- a/dockerfile +++ b/dockerfile @@ -41,4 +41,4 @@ EXPOSE 4173 RUN chmod +x /app/docker-entrypoint.sh ENTRYPOINT ["/app/docker-entrypoint.sh"] -CMD ["npm", "run", "build"] \ No newline at end of file +CMD ["sh", "-c", "npm run build && nginx -g 'daemon off;'"] \ No newline at end of file diff --git a/src/css-cache-break.ts b/src/css-cache-break.ts index ba16e0d..d6624b3 100644 --- a/src/css-cache-break.ts +++ b/src/css-cache-break.ts @@ -1,21 +1,24 @@ import CleanCSS from "clean-css"; import * as path from "path"; -import { sbReadFile, sbRename, sbWriteFile } from "./shared/files"; +import { sbMakeFolder, sbReadFile, sbRemoveAllCSS, sbWriteFile } from "./shared/files"; const mainCSSFilename = `main.${new Date().getTime()}.css`; -const cssFileInPath = path.join(__dirname, "../", "./public", "main.css"); -const cssFileOutPath = path.join(__dirname, "../", "./public", mainCSSFilename); -const indexFileInOutPath = path.join(__dirname, "../", "./public", "index.html"); +const cssFilePath = path.join(__dirname, "../public/css"); +const cssFileInPath = path.join(__dirname, "../public", "main.css"); +const cssFileOutPath = path.join(cssFilePath, mainCSSFilename); +const indexFileInOutPath = path.join(__dirname, "../public", "index.html"); async function start(): Promise { - await sbRename(cssFileInPath, cssFileOutPath); - const css = await sbReadFile(cssFileOutPath); + await sbRemoveAllCSS(cssFilePath); + await sbMakeFolder(cssFilePath); + + const css = await sbReadFile(cssFileInPath); await sbWriteFile(cssFileOutPath, new CleanCSS().minify(css).styles); const index = await sbReadFile(indexFileInOutPath); const cssLink = ``; - const cssLinkReplacement = ``; + const cssLinkReplacement = ``; await sbWriteFile(indexFileInOutPath, index.replace(cssLink, cssLinkReplacement)); } diff --git a/src/shared/files.ts b/src/shared/files.ts index 99b868d..76b32e2 100644 --- a/src/shared/files.ts +++ b/src/shared/files.ts @@ -36,3 +36,30 @@ export async function sbRename(fileNameOld: string, fileNameNew: string): Promis } }); } + +export async function sbMakeFolder(path: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await fs.mkdir(path, { recursive: true }); + return resolve(true); + } catch (exception) { + console.error(`Could not make folder: ${path}`, exception); + reject(exception); + } + }); +} + +export async function sbRemoveAllCSS(path: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await fs.rm(path, { + recursive: true, + force: true, + }); + return resolve(true); + } catch (exception) { + console.error(`Could not remove all CSS from path: ${path}`); + reject(exception); + } + }); +} From 438e5f54059b600ce474da606a32f552c43129f5 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 12:50:11 -0800 Subject: [PATCH 12/15] Fixed extra commas --- src/components/service-catalogs.ts | 2 +- src/components/services.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/service-catalogs.ts b/src/components/service-catalogs.ts index f2c9ca5..d5c8bdf 100644 --- a/src/components/service-catalogs.ts +++ b/src/components/service-catalogs.ts @@ -11,7 +11,7 @@ export const ServiceCatalogList = function (props: IProps) { return `
      - ${catalogs.map((catalog, index) => ServiceCatalog({ catalog, index }))} + ${catalogs.map((catalog, index) => ServiceCatalog({ catalog, index })).join("")}
    `; }; diff --git a/src/components/services.ts b/src/components/services.ts index 43cb856..4314a26 100644 --- a/src/components/services.ts +++ b/src/components/services.ts @@ -12,7 +12,7 @@ export const Services = function (props: IServicesProps) { return `
      - ${services.map((service, index) => Service({ index, service }))} + ${services.map((service, index) => Service({ index, service })).join("")}
    `; }; From 88252eea0654b3ed218b833ff215d17e2ff9990c Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 13:09:47 -0800 Subject: [PATCH 13/15] Fixed icons --- src/components/anchor.ts | 4 ++-- src/components/header.ts | 4 ++-- src/components/icon.ts | 10 +++++----- src/components/service-catalogs.ts | 4 ++-- src/components/services.ts | 10 +++++----- src/pages/index.ts | 8 ++++---- tailwind.config.js | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/components/anchor.ts b/src/components/anchor.ts index 02426bd..3c0c67e 100644 --- a/src/components/anchor.ts +++ b/src/components/anchor.ts @@ -20,14 +20,14 @@ export const Anchor = function (props: IProps) { if (newWindowLocal) { return ` - + ${children} `; } return ` - + ${children} `; diff --git a/src/components/header.ts b/src/components/header.ts index fc8bb98..4641781 100644 --- a/src/components/header.ts +++ b/src/components/header.ts @@ -8,8 +8,8 @@ interface IProps { export const Header = function (props: IProps) { const { icon, title } = props; return ` -
    - ${!is.null(icon) && `${title || `} +
    + ${!is.null(icon) && `${title || `}

    ${title}

    `; diff --git a/src/components/icon.ts b/src/components/icon.ts index 7d6e288..f3406ba 100644 --- a/src/components/icon.ts +++ b/src/components/icon.ts @@ -38,7 +38,7 @@ interface IProps { export const Icon = function (props: IProps): string { const { name, uri, icon, index, iconBG, iconBubble, iconColor, iconAspect, newWindow } = props; - if (!is.null(icon)) { + if (is.null(icon)) { if (!is.null(uri)) { return Anchor({ uri: uri as string, title: name, newWindow, children: IconBlank({ index }) }); } @@ -79,7 +79,7 @@ function IconBlank(props: IIconBlankProps) { const { index } = props; return ` `; } @@ -176,14 +176,14 @@ function IconBase(props: IIconBaseProps) { switch (iconType) { case IconType.uri: - return ``; + return ``; case IconType.dashboard: icon = icon.replace(".png", "").replace(".jpg", "").replace(".svg", ""); return ` `; @@ -191,7 +191,7 @@ function IconBase(props: IIconBaseProps) { icon = icon.replace("mdi-", "").replace(".svg", ""); return ` -
    +
    -

    ${catalog.category}

    +
  • +

    ${catalog.category}

    ${Services({ services: catalog.services })}
  • `; diff --git a/src/components/services.ts b/src/components/services.ts index 4314a26..e6401c8 100644 --- a/src/components/services.ts +++ b/src/components/services.ts @@ -11,7 +11,7 @@ export const Services = function (props: IServicesProps) { const { services } = props; return ` -
      +
        ${services.map((service, index) => Service({ index, service })).join("")}
      `; @@ -28,23 +28,23 @@ function Service(props: IServiceProps) { const { name, uri, description, icon, iconBG, iconBubble, iconColor, iconAspect, newWindow } = service; return ` -
    • +
    • ${ !is.null(icon) && ` - + ${Icon({ name, icon, uri, index, iconColor, iconBG, iconBubble, iconAspect, newWindow })} ` }
      -

      +

      ${Anchor({ uri, newWindow, children: name })}

      ${ !is.null(description) && ` -

      +

      ${Anchor({ uri, newWindow, children: description })}

      ` diff --git a/src/pages/index.ts b/src/pages/index.ts index 0a87383..f871f6c 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -46,17 +46,17 @@ export const IndexPage = function (props: IProps): string { } return ` -
      -
      +
      +
      ${ SHOWHEADER && ` -
      +
      ${Header({ icon, title })}
      ` } -
      +
      ${ServiceCatalogList({ catalogs: myServices })}
      diff --git a/tailwind.config.js b/tailwind.config.js index 5a92381..5168dad 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,6 +1,6 @@ /** @type {import('tailwindcss').Config} */ export default { - content: ["./dist/index.html"], + content: ["./public/index.html"], safelist: [ /* Built from icon.tsx */ { From e8059930e15178ebcf0ebdbe4ac628482b48e516 Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 13:22:01 -0800 Subject: [PATCH 14/15] Fixing icon styles --- src/components/icon.ts | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/components/icon.ts b/src/components/icon.ts index f3406ba..2546063 100644 --- a/src/components/icon.ts +++ b/src/components/icon.ts @@ -134,7 +134,7 @@ function IconBase(props: IIconBaseProps) { iconClassName += " rounded-2xl border border-black/5 shadow-sm"; } - const iconStyle: any = {}; + const iconStyle: string[] = []; switch (iconType) { case IconType.uri: @@ -142,7 +142,7 @@ function IconBase(props: IIconBaseProps) { // Default to bubble and no background for URI and Dashboard icons if (!is.null(iconBG)) { if (iconBG?.startsWith("#")) { - iconStyle.backgroundColor = iconBG; + iconStyle.push(`background-color: ${iconBG}`); } else { iconClassName += ` bg-${iconBG}`; } @@ -154,7 +154,7 @@ function IconBase(props: IIconBaseProps) { iconClassName += ` bg-slate-200 dark:bg-gray-900`; } else { if (iconBG?.startsWith("#")) { - iconStyle.backgroundColor = iconBG; + iconStyle.push(`background-color: ${iconBG}`); } else { iconClassName += ` bg-${iconBG}`; } @@ -166,17 +166,17 @@ function IconBase(props: IIconBaseProps) { break; } - const mdiIconStyle: any = {}; + const mdiIconStyle: string[] = []; let mdiIconColorFull = "bg-" + iconColor; if (!is.null(iconColor) && iconColor?.startsWith("#")) { mdiIconColorFull = ""; - mdiIconStyle.backgroundColor = iconColor; + mdiIconStyle.push(`background-color: ${iconColor}`); } switch (iconType) { case IconType.uri: - return ``; + return ``; case IconType.dashboard: icon = icon.replace(".png", "").replace(".jpg", "").replace(".svg", ""); return ` @@ -184,7 +184,7 @@ function IconBase(props: IIconBaseProps) { src=${`https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}.png`} alt="" class="${iconClassName || ""}" - style="${{ ...iconStyle }}" + style="${unwrapStyles(iconStyle)}" /> `; case IconType.material: @@ -194,13 +194,22 @@ function IconBase(props: IIconBaseProps) {
      `; } } + +function unwrapStyles(styles: string[]): string { + if (is.null(styles)) { + return ""; + } + + return styles.join(";"); +} From 91637e8c314dc93830b0540c8361d07e389bc27b Mon Sep 17 00:00:00 2001 From: Jordan Roher Date: Mon, 18 Dec 2023 13:46:15 -0800 Subject: [PATCH 15/15] Updated readme Removed more files --- default.conf | 2 -- postcss.config.js | 6 ----- readme.md | 5 ++++ start.js | 61 ----------------------------------------------- 4 files changed, 5 insertions(+), 69 deletions(-) delete mode 100644 postcss.config.js delete mode 100644 start.js diff --git a/default.conf b/default.conf index c723440..adb2f0d 100644 --- a/default.conf +++ b/default.conf @@ -11,8 +11,6 @@ server { add_header Cache-Control "public, max-age=604800, immutable"; } - # Additional configurations can be added here if needed - # For example, error handling, logging, etc. error_page 404 /index.html; error_page 500 502 503 504 /index.html; } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 2e7af2b..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/readme.md b/readme.md index 7b24439..35b683f 100644 --- a/readme.md +++ b/readme.md @@ -32,6 +32,11 @@ Inspired by [Ben Phelps' Homepage](https://gethomepage.dev/) and [Umbrel](https: # Change history +## 1.4.0 + +- Rewrote the entire application to not use React. Now it's just a Node application that emits static HTML. +- Removed lots of packages + ## 1.3.0 - Removed all JavaScript as part of the build step. The image will be slightly larger and take longer to start up and shut down, but the page will be even lighter. diff --git a/start.js b/start.js deleted file mode 100644 index d66f678..0000000 --- a/start.js +++ /dev/null @@ -1,61 +0,0 @@ -import { exec } from "child_process"; -import fs from "fs/promises"; -import puppeteer from "puppeteer"; - -function runNpmCommand(command) { - return new Promise((resolve, reject) => { - exec(`npm ${command}`, (error, stdout, stderr) => { - if (error) { - console.error(`Error executing command: ${error}`); - reject(error); - } else { - console.log(`Command output: ${stdout}`); - resolve(stdout); - } - }); - }); -} - -async function renderHomePage() { - const browser = await puppeteer.launch({ - headless: true, - args: ["--no-sandbox", "--disable-setuid-sandbox"], - executablePath: "chromium", // Remove this when running locally - }); - const page = await browser.newPage(); - - await page.goto("http://localhost:4173", { waitUntil: "networkidle0" }); - - // Wait for any additional content to load - await page.waitForNetworkIdle(); - - // Get the rendered HTML content - const renderedHTML = await page.content(); - - // Save the rendered HTML to a file - fs.writeFile("./dist/index.html", renderedHTML); - - await browser.close(); -} - -async function runCommands() { - try { - console.log("Building React site"); - await runNpmCommand("run build"); - - setTimeout(async () => { - console.log("Taking snapshot"); - await renderHomePage(); - await runNpmCommand("run html"); - await runNpmCommand("run replace"); - }, 2000); - - console.log("Starting web server"); - await runNpmCommand("run serve"); - } catch (err) { - // Handle errors - console.error("An error occurred:", err); - } -} - -runCommands();