diff --git a/.gitignore b/.gitignore index a14702c..a547bf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,24 @@ -# dependencies (bun install) -node_modules - -# output -out -dist -*.tgz - -# code coverage -coverage -*.lcov - -# logs +# Logs logs -_.log -report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local +node_modules +dist +dist-ssr +*.local -# caches -.eslintcache -.cache -*.tsbuildinfo - -# IntelliJ based IDEs +# Editor directories and files +.vscode/* +!.vscode/extensions.json .idea - -# Finder (MacOS) folder config .DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index ac56319..ea74253 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,2 @@ # ipv4.army -To install dependencies: - -```bash -bun install -``` - -To run: - -```bash -bun run index.ts -``` - -This project was created using `bun init` in bun v1.2.11. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..921a7a5 --- /dev/null +++ b/biome.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": true, + "ignore": [] + }, + "formatter": { + "enabled": true, + "indentStyle": "tab", + "lineEnding": "lf" + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double", + "indentStyle": "tab", + "lineEnding": "lf", + "jsxQuoteStyle": "double", + "semicolons": "always" + } + } +} diff --git a/bun.lock b/bun.lock index 0d45d2e..9b219bd 100644 --- a/bun.lock +++ b/bun.lock @@ -2,53 +2,2140 @@ "lockfileVersion": 1, "workspaces": { "": { - "name": "ipv4.army", + "name": "ipv4.army-vite", "dependencies": { - "microlight": "^0.0.7", - "tsx-dom": "^3.1.0", + "halfmoon": "^2.0.2", + "lucide-preact": "^0.487.0", + "preact": "^10.26.2", }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@types/bun": "latest", - }, - "peerDependencies": { - "typescript": "^5.8.3", + "@fullhuman/postcss-purgecss": "^7.0.2", + "@preact/preset-vite": "^2.10.1", + "lightningcss": "^1.29.3", + "typescript": "~5.7.2", + "vite": "^6.2.0", }, }, }, "packages": { - "@biomejs/biome": ["@biomejs/biome@1.9.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "1.9.4", "@biomejs/cli-darwin-x64": "1.9.4", "@biomejs/cli-linux-arm64": "1.9.4", "@biomejs/cli-linux-arm64-musl": "1.9.4", "@biomejs/cli-linux-x64": "1.9.4", "@biomejs/cli-linux-x64-musl": "1.9.4", "@biomejs/cli-win32-arm64": "1.9.4", "@biomejs/cli-win32-x64": "1.9.4" }, "bin": { "biome": "bin/biome" } }, "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog=="], - - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@1.9.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw=="], - - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@1.9.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg=="], - - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g=="], - - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA=="], - - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg=="], - - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg=="], - - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@1.9.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg=="], - - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@1.9.4", "", { "os": "win32", "cpu": "x64" }, "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA=="], - - "@types/bun": ["@types/bun@1.2.10", "", { "dependencies": { "bun-types": "1.2.10" } }, "sha512-eilv6WFM3M0c9ztJt7/g80BDusK98z/FrFwseZgT4bXCq2vPhXD4z8R3oddmAn+R/Nmz9vBn4kweJKmGTZj+lg=="], - - "@types/node": ["@types/node@22.14.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw=="], - - "bun-types": ["bun-types@1.2.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-b5ITZMnVdf3m1gMvJHG+gIfeJHiQPJak0f7925Hxu6ZN5VKA8AGy4GZ4lM+Xkn6jtWxg5S3ldWvfmXdvnkp3GQ=="], - - "microlight": ["microlight@0.0.7", "", {}, "sha512-kigwsJYoy4mAMkGZpS839/KZ5WWQQm4TzD+eIjR5leS5H0j+EhExvK0Z2Or2ewkBR/t7/AHHhxRyeXi1kurG0g=="], - - "tsx-dom": ["tsx-dom@3.1.0", "", { "dependencies": { "tsx-dom-types": "2.1.0" } }, "sha512-PGN7iL6zNC4Jj7bA1groSIz5mFB3Rr+SeoywZk2g4+c9uV8wwzCf+5tFQ8SyZxQIBHech3ueB0KxV3OFieqhOA=="], - - "tsx-dom-types": ["tsx-dom-types@2.1.0", "", {}, "sha512-pZaMTrMRNom+D1b82K+1cWVMuogXrD/ANI42UYxilw27tF+tDCgj7GrD1XLmCxbHPDO2zxfmFuaz04KIEfWydQ=="], - - "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], - - "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "@ampproject/remapping": [ + "@ampproject/remapping@2.3.0", + "", + { + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==" + ], + "@babel/code-frame": [ + "@babel/code-frame@7.26.2", + "", + { + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==" + ], + "@babel/compat-data": [ + "@babel/compat-data@7.26.8", + "", + {}, + "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==" + ], + "@babel/core": [ + "@babel/core@7.26.10", + "", + { + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==" + ], + "@babel/generator": [ + "@babel/generator@7.27.0", + "", + { + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + } + }, + "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==" + ], + "@babel/helper-annotate-as-pure": [ + "@babel/helper-annotate-as-pure@7.25.9", + "", + { + "dependencies": { + "@babel/types": "^7.25.9" + } + }, + "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==" + ], + "@babel/helper-compilation-targets": [ + "@babel/helper-compilation-targets@7.27.0", + "", + { + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==" + ], + "@babel/helper-module-imports": [ + "@babel/helper-module-imports@7.25.9", + "", + { + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==" + ], + "@babel/helper-module-transforms": [ + "@babel/helper-module-transforms@7.26.0", + "", + { + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==" + ], + "@babel/helper-plugin-utils": [ + "@babel/helper-plugin-utils@7.26.5", + "", + {}, + "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==" + ], + "@babel/helper-string-parser": [ + "@babel/helper-string-parser@7.25.9", + "", + {}, + "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" + ], + "@babel/helper-validator-identifier": [ + "@babel/helper-validator-identifier@7.25.9", + "", + {}, + "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" + ], + "@babel/helper-validator-option": [ + "@babel/helper-validator-option@7.25.9", + "", + {}, + "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==" + ], + "@babel/helpers": [ + "@babel/helpers@7.27.0", + "", + { + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + } + }, + "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==" + ], + "@babel/parser": [ + "@babel/parser@7.27.0", + "", + { + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": "./bin/babel-parser.js" + }, + "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==" + ], + "@babel/plugin-syntax-jsx": [ + "@babel/plugin-syntax-jsx@7.25.9", + "", + { + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==" + ], + "@babel/plugin-transform-react-jsx": [ + "@babel/plugin-transform-react-jsx@7.25.9", + "", + { + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==" + ], + "@babel/plugin-transform-react-jsx-development": [ + "@babel/plugin-transform-react-jsx-development@7.25.9", + "", + { + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==" + ], + "@babel/template": [ + "@babel/template@7.27.0", + "", + { + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + } + }, + "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==" + ], + "@babel/traverse": [ + "@babel/traverse@7.27.0", + "", + { + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==" + ], + "@babel/types": [ + "@babel/types@7.27.0", + "", + { + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + } + }, + "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==" + ], + "@biomejs/biome": [ + "@biomejs/biome@1.9.4", + "", + { + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "1.9.4", + "@biomejs/cli-darwin-x64": "1.9.4", + "@biomejs/cli-linux-arm64": "1.9.4", + "@biomejs/cli-linux-arm64-musl": "1.9.4", + "@biomejs/cli-linux-x64": "1.9.4", + "@biomejs/cli-linux-x64-musl": "1.9.4", + "@biomejs/cli-win32-arm64": "1.9.4", + "@biomejs/cli-win32-x64": "1.9.4" + }, + "bin": { + "biome": "bin/biome" + } + }, + "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==" + ], + "@biomejs/cli-darwin-arm64": [ + "@biomejs/cli-darwin-arm64@1.9.4", + "", + { + "os": "darwin", + "cpu": "arm64" + }, + "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==" + ], + "@biomejs/cli-darwin-x64": [ + "@biomejs/cli-darwin-x64@1.9.4", + "", + { + "os": "darwin", + "cpu": "x64" + }, + "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==" + ], + "@biomejs/cli-linux-arm64": [ + "@biomejs/cli-linux-arm64@1.9.4", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==" + ], + "@biomejs/cli-linux-arm64-musl": [ + "@biomejs/cli-linux-arm64-musl@1.9.4", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==" + ], + "@biomejs/cli-linux-x64": [ + "@biomejs/cli-linux-x64@1.9.4", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==" + ], + "@biomejs/cli-linux-x64-musl": [ + "@biomejs/cli-linux-x64-musl@1.9.4", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==" + ], + "@biomejs/cli-win32-arm64": [ + "@biomejs/cli-win32-arm64@1.9.4", + "", + { + "os": "win32", + "cpu": "arm64" + }, + "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==" + ], + "@biomejs/cli-win32-x64": [ + "@biomejs/cli-win32-x64@1.9.4", + "", + { + "os": "win32", + "cpu": "x64" + }, + "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==" + ], + "@esbuild/aix-ppc64": [ + "@esbuild/aix-ppc64@0.25.2", + "", + { + "os": "aix", + "cpu": "ppc64" + }, + "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==" + ], + "@esbuild/android-arm": [ + "@esbuild/android-arm@0.25.2", + "", + { + "os": "android", + "cpu": "arm" + }, + "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==" + ], + "@esbuild/android-arm64": [ + "@esbuild/android-arm64@0.25.2", + "", + { + "os": "android", + "cpu": "arm64" + }, + "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==" + ], + "@esbuild/android-x64": [ + "@esbuild/android-x64@0.25.2", + "", + { + "os": "android", + "cpu": "x64" + }, + "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==" + ], + "@esbuild/darwin-arm64": [ + "@esbuild/darwin-arm64@0.25.2", + "", + { + "os": "darwin", + "cpu": "arm64" + }, + "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==" + ], + "@esbuild/darwin-x64": [ + "@esbuild/darwin-x64@0.25.2", + "", + { + "os": "darwin", + "cpu": "x64" + }, + "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==" + ], + "@esbuild/freebsd-arm64": [ + "@esbuild/freebsd-arm64@0.25.2", + "", + { + "os": "freebsd", + "cpu": "arm64" + }, + "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==" + ], + "@esbuild/freebsd-x64": [ + "@esbuild/freebsd-x64@0.25.2", + "", + { + "os": "freebsd", + "cpu": "x64" + }, + "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==" + ], + "@esbuild/linux-arm": [ + "@esbuild/linux-arm@0.25.2", + "", + { + "os": "linux", + "cpu": "arm" + }, + "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==" + ], + "@esbuild/linux-arm64": [ + "@esbuild/linux-arm64@0.25.2", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==" + ], + "@esbuild/linux-ia32": [ + "@esbuild/linux-ia32@0.25.2", + "", + { + "os": "linux", + "cpu": "ia32" + }, + "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==" + ], + "@esbuild/linux-loong64": [ + "@esbuild/linux-loong64@0.25.2", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==" + ], + "@esbuild/linux-mips64el": [ + "@esbuild/linux-mips64el@0.25.2", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==" + ], + "@esbuild/linux-ppc64": [ + "@esbuild/linux-ppc64@0.25.2", + "", + { + "os": "linux", + "cpu": "ppc64" + }, + "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==" + ], + "@esbuild/linux-riscv64": [ + "@esbuild/linux-riscv64@0.25.2", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==" + ], + "@esbuild/linux-s390x": [ + "@esbuild/linux-s390x@0.25.2", + "", + { + "os": "linux", + "cpu": "s390x" + }, + "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==" + ], + "@esbuild/linux-x64": [ + "@esbuild/linux-x64@0.25.2", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==" + ], + "@esbuild/netbsd-arm64": [ + "@esbuild/netbsd-arm64@0.25.2", + "", + { + "os": "none", + "cpu": "arm64" + }, + "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==" + ], + "@esbuild/netbsd-x64": [ + "@esbuild/netbsd-x64@0.25.2", + "", + { + "os": "none", + "cpu": "x64" + }, + "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==" + ], + "@esbuild/openbsd-arm64": [ + "@esbuild/openbsd-arm64@0.25.2", + "", + { + "os": "openbsd", + "cpu": "arm64" + }, + "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==" + ], + "@esbuild/openbsd-x64": [ + "@esbuild/openbsd-x64@0.25.2", + "", + { + "os": "openbsd", + "cpu": "x64" + }, + "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==" + ], + "@esbuild/sunos-x64": [ + "@esbuild/sunos-x64@0.25.2", + "", + { + "os": "sunos", + "cpu": "x64" + }, + "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==" + ], + "@esbuild/win32-arm64": [ + "@esbuild/win32-arm64@0.25.2", + "", + { + "os": "win32", + "cpu": "arm64" + }, + "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==" + ], + "@esbuild/win32-ia32": [ + "@esbuild/win32-ia32@0.25.2", + "", + { + "os": "win32", + "cpu": "ia32" + }, + "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==" + ], + "@esbuild/win32-x64": [ + "@esbuild/win32-x64@0.25.2", + "", + { + "os": "win32", + "cpu": "x64" + }, + "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==" + ], + "@fullhuman/postcss-purgecss": [ + "@fullhuman/postcss-purgecss@7.0.2", + "", + { + "dependencies": { + "purgecss": "^7.0.2" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "sha512-U4zAXNaVztbDxO9EdcLp51F3UxxYsb/7DN89rFxFJhfk2Wua2pvw2Kf3HdspbPhW/wpHjSjsxWYoIlbTgRSjbQ==" + ], + "@isaacs/cliui": [ + "@isaacs/cliui@8.0.2", + "", + { + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + } + }, + "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" + ], + "@jridgewell/gen-mapping": [ + "@jridgewell/gen-mapping@0.3.8", + "", + { + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==" + ], + "@jridgewell/resolve-uri": [ + "@jridgewell/resolve-uri@3.1.2", + "", + {}, + "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + ], + "@jridgewell/set-array": [ + "@jridgewell/set-array@1.2.1", + "", + {}, + "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + ], + "@jridgewell/sourcemap-codec": [ + "@jridgewell/sourcemap-codec@1.5.0", + "", + {}, + "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + ], + "@jridgewell/trace-mapping": [ + "@jridgewell/trace-mapping@0.3.25", + "", + { + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==" + ], + "@preact/preset-vite": [ + "@preact/preset-vite@2.10.1", + "", + { + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@prefresh/vite": "^2.4.1", + "@rollup/pluginutils": "^4.1.1", + "babel-plugin-transform-hook-names": "^1.0.2", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "vite-prerender-plugin": "^0.5.3" + }, + "peerDependencies": { + "@babel/core": "7.x", + "vite": "2.x || 3.x || 4.x || 5.x || 6.x" + } + }, + "sha512-59lyGBXNfZIr5OOuBUB4/IB8AqF/ULbvYnyItgK/2BJnsGJqaeaJobRVtMp1129obHQuj8oZ/dVxB9inmH8Xig==" + ], + "@prefresh/babel-plugin": [ + "@prefresh/babel-plugin@0.5.1", + "", + {}, + "sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==" + ], + "@prefresh/core": [ + "@prefresh/core@1.5.3", + "", + { + "peerDependencies": { + "preact": "^10.0.0" + } + }, + "sha512-nDzxj0tA1/M6APNAWqaxkZ+3sTdPHESa+gol4+Bw7rMc2btWdkLoNH7j9rGhUb8SThC0Vz0VoXtq+U+9azGLHg==" + ], + "@prefresh/utils": [ + "@prefresh/utils@1.2.0", + "", + {}, + "sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==" + ], + "@prefresh/vite": [ + "@prefresh/vite@2.4.7", + "", + { + "dependencies": { + "@babel/core": "^7.22.1", + "@prefresh/babel-plugin": "0.5.1", + "@prefresh/core": "^1.5.1", + "@prefresh/utils": "^1.2.0", + "@rollup/pluginutils": "^4.2.1" + }, + "peerDependencies": { + "preact": "^10.4.0", + "vite": ">=2.0.0" + } + }, + "sha512-zmCEDWSFHl5A7PciXa/fe+OUjoGi4iiCQclpWfpIg7LjxwWrtlUT4DfxDBcQwHfTyipS/XDm8x7WYrkiTW0q+w==" + ], + "@rollup/pluginutils": [ + "@rollup/pluginutils@4.2.1", + "", + { + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==" + ], + "@rollup/rollup-android-arm-eabi": [ + "@rollup/rollup-android-arm-eabi@4.39.0", + "", + { + "os": "android", + "cpu": "arm" + }, + "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==" + ], + "@rollup/rollup-android-arm64": [ + "@rollup/rollup-android-arm64@4.39.0", + "", + { + "os": "android", + "cpu": "arm64" + }, + "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==" + ], + "@rollup/rollup-darwin-arm64": [ + "@rollup/rollup-darwin-arm64@4.39.0", + "", + { + "os": "darwin", + "cpu": "arm64" + }, + "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==" + ], + "@rollup/rollup-darwin-x64": [ + "@rollup/rollup-darwin-x64@4.39.0", + "", + { + "os": "darwin", + "cpu": "x64" + }, + "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==" + ], + "@rollup/rollup-freebsd-arm64": [ + "@rollup/rollup-freebsd-arm64@4.39.0", + "", + { + "os": "freebsd", + "cpu": "arm64" + }, + "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==" + ], + "@rollup/rollup-freebsd-x64": [ + "@rollup/rollup-freebsd-x64@4.39.0", + "", + { + "os": "freebsd", + "cpu": "x64" + }, + "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==" + ], + "@rollup/rollup-linux-arm-gnueabihf": [ + "@rollup/rollup-linux-arm-gnueabihf@4.39.0", + "", + { + "os": "linux", + "cpu": "arm" + }, + "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==" + ], + "@rollup/rollup-linux-arm-musleabihf": [ + "@rollup/rollup-linux-arm-musleabihf@4.39.0", + "", + { + "os": "linux", + "cpu": "arm" + }, + "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==" + ], + "@rollup/rollup-linux-arm64-gnu": [ + "@rollup/rollup-linux-arm64-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==" + ], + "@rollup/rollup-linux-arm64-musl": [ + "@rollup/rollup-linux-arm64-musl@4.39.0", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==" + ], + "@rollup/rollup-linux-loongarch64-gnu": [ + "@rollup/rollup-linux-loongarch64-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==" + ], + "@rollup/rollup-linux-powerpc64le-gnu": [ + "@rollup/rollup-linux-powerpc64le-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "ppc64" + }, + "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==" + ], + "@rollup/rollup-linux-riscv64-gnu": [ + "@rollup/rollup-linux-riscv64-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==" + ], + "@rollup/rollup-linux-riscv64-musl": [ + "@rollup/rollup-linux-riscv64-musl@4.39.0", + "", + { + "os": "linux", + "cpu": "none" + }, + "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==" + ], + "@rollup/rollup-linux-s390x-gnu": [ + "@rollup/rollup-linux-s390x-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "s390x" + }, + "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==" + ], + "@rollup/rollup-linux-x64-gnu": [ + "@rollup/rollup-linux-x64-gnu@4.39.0", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==" + ], + "@rollup/rollup-linux-x64-musl": [ + "@rollup/rollup-linux-x64-musl@4.39.0", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==" + ], + "@rollup/rollup-win32-arm64-msvc": [ + "@rollup/rollup-win32-arm64-msvc@4.39.0", + "", + { + "os": "win32", + "cpu": "arm64" + }, + "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==" + ], + "@rollup/rollup-win32-ia32-msvc": [ + "@rollup/rollup-win32-ia32-msvc@4.39.0", + "", + { + "os": "win32", + "cpu": "ia32" + }, + "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==" + ], + "@rollup/rollup-win32-x64-msvc": [ + "@rollup/rollup-win32-x64-msvc@4.39.0", + "", + { + "os": "win32", + "cpu": "x64" + }, + "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==" + ], + "@types/estree": [ + "@types/estree@1.0.7", + "", + {}, + "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + ], + "ansi-colors": [ + "ansi-colors@4.1.3", + "", + {}, + "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + ], + "ansi-regex": [ + "ansi-regex@6.1.0", + "", + {}, + "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + ], + "ansi-styles": [ + "ansi-styles@6.2.1", + "", + {}, + "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + ], + "anymatch": [ + "anymatch@3.1.3", + "", + { + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + ], + "babel-plugin-transform-hook-names": [ + "babel-plugin-transform-hook-names@1.0.2", + "", + { + "peerDependencies": { + "@babel/core": "^7.12.10" + } + }, + "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==" + ], + "balanced-match": [ + "balanced-match@1.0.2", + "", + {}, + "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + ], + "binary-extensions": [ + "binary-extensions@2.3.0", + "", + {}, + "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + ], + "boolbase": [ + "boolbase@1.0.0", + "", + {}, + "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + ], + "brace-expansion": [ + "brace-expansion@2.0.1", + "", + { + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + ], + "braces": [ + "braces@3.0.3", + "", + { + "dependencies": { + "fill-range": "^7.1.1" + } + }, + "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" + ], + "browserslist": [ + "browserslist@4.24.4", + "", + { + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==" + ], + "caniuse-lite": [ + "caniuse-lite@1.0.30001712", + "", + {}, + "sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==" + ], + "chokidar": [ + "chokidar@3.6.0", + "", + { + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==" + ], + "clap": [ + "clap@3.1.1", + "", + { + "dependencies": { + "ansi-colors": "^4.1.1" + } + }, + "sha512-vp42956Ax06WwaaheYEqEOgXZ3VKJxgccZ0gJL0HpyiupkIS9RVJFo5eDU1BPeQAOqz+cclndZg4DCqG1sJReQ==" + ], + "color-convert": [ + "color-convert@2.0.1", + "", + { + "dependencies": { + "color-name": "~1.1.4" + } + }, + "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + ], + "color-name": [ + "color-name@1.1.4", + "", + {}, + "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + ], + "commander": [ + "commander@12.1.0", + "", + {}, + "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==" + ], + "convert-source-map": [ + "convert-source-map@2.0.0", + "", + {}, + "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + ], + "cross-spawn": [ + "cross-spawn@7.0.6", + "", + { + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" + ], + "css-select": [ + "css-select@5.1.0", + "", + { + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" + ], + "css-tree": [ + "css-tree@2.2.1", + "", + { + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" + ], + "css-what": [ + "css-what@6.1.0", + "", + {}, + "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + ], + "cssesc": [ + "cssesc@3.0.0", + "", + { + "bin": { + "cssesc": "bin/cssesc" + } + }, + "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + ], + "csso": [ + "csso@5.0.5", + "", + { + "dependencies": { + "css-tree": "~2.2.0" + } + }, + "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" + ], + "csso-cli": [ + "csso-cli@4.0.2", + "", + { + "dependencies": { + "chokidar": "^3.5.3", + "clap": "^3.1.1", + "csso": "^5.0.4", + "source-map-js": "^1.0.2" + }, + "bin": { + "csso": "bin/csso" + } + }, + "sha512-p/VipA45w8EmS8Lv6wGtE+UdsbFlqUBGhL9FCTGKxd5dC07mtg3BbZaMzMh0X+oIl2JUGR/mPx5YzuNnTM2a3w==" + ], + "debug": [ + "debug@4.4.0", + "", + { + "dependencies": { + "ms": "^2.1.3" + } + }, + "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" + ], + "detect-libc": [ + "detect-libc@2.0.3", + "", + {}, + "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + ], + "dom-serializer": [ + "dom-serializer@2.0.0", + "", + { + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" + ], + "domelementtype": [ + "domelementtype@2.3.0", + "", + {}, + "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + ], + "domhandler": [ + "domhandler@5.0.3", + "", + { + "dependencies": { + "domelementtype": "^2.3.0" + } + }, + "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" + ], + "domutils": [ + "domutils@3.2.2", + "", + { + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==" + ], + "eastasianwidth": [ + "eastasianwidth@0.2.0", + "", + {}, + "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + ], + "electron-to-chromium": [ + "electron-to-chromium@1.5.134", + "", + {}, + "sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==" + ], + "emoji-regex": [ + "emoji-regex@9.2.2", + "", + {}, + "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + ], + "entities": [ + "entities@4.5.0", + "", + {}, + "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + ], + "esbuild": [ + "esbuild@0.25.2", + "", + { + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + }, + "bin": { + "esbuild": "bin/esbuild" + } + }, + "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==" + ], + "escalade": [ + "escalade@3.2.0", + "", + {}, + "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + ], + "estree-walker": [ + "estree-walker@2.0.2", + "", + {}, + "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + ], + "fill-range": [ + "fill-range@7.1.1", + "", + { + "dependencies": { + "to-regex-range": "^5.0.1" + } + }, + "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" + ], + "foreground-child": [ + "foreground-child@3.3.1", + "", + { + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + } + }, + "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==" + ], + "fsevents": [ + "fsevents@2.3.3", + "", + { + "os": "darwin" + }, + "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" + ], + "gensync": [ + "gensync@1.0.0-beta.2", + "", + {}, + "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + ], + "glob": [ + "glob@11.0.1", + "", + { + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + } + }, + "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==" + ], + "glob-parent": [ + "glob-parent@5.1.2", + "", + { + "dependencies": { + "is-glob": "^4.0.1" + } + }, + "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + ], + "globals": [ + "globals@11.12.0", + "", + {}, + "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + ], + "halfmoon": [ + "halfmoon@2.0.2", + "", + { + "dependencies": { + "csso-cli": "^4.0.2", + "rtlcss": "^4.3.0" + } + }, + "sha512-9IZ+OccqINrD5Eu5RgEgdK0c3CvDRIkL/ePMx+PFXwK1LZB0fI9HniKbd6MrMRsL0j7/OnvS0nGDgoaZvqeGkg==" + ], + "he": [ + "he@1.2.0", + "", + { + "bin": { + "he": "bin/he" + } + }, + "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + ], + "is-binary-path": [ + "is-binary-path@2.1.0", + "", + { + "dependencies": { + "binary-extensions": "^2.0.0" + } + }, + "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + ], + "is-extglob": [ + "is-extglob@2.1.1", + "", + {}, + "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + ], + "is-fullwidth-code-point": [ + "is-fullwidth-code-point@3.0.0", + "", + {}, + "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + ], + "is-glob": [ + "is-glob@4.0.3", + "", + { + "dependencies": { + "is-extglob": "^2.1.1" + } + }, + "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + ], + "is-number": [ + "is-number@7.0.0", + "", + {}, + "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + ], + "isexe": [ + "isexe@2.0.0", + "", + {}, + "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + ], + "jackspeak": [ + "jackspeak@4.1.0", + "", + { + "dependencies": { + "@isaacs/cliui": "^8.0.2" + } + }, + "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==" + ], + "js-tokens": [ + "js-tokens@4.0.0", + "", + {}, + "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + ], + "jsesc": [ + "jsesc@3.1.0", + "", + { + "bin": { + "jsesc": "bin/jsesc" + } + }, + "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" + ], + "json5": [ + "json5@2.2.3", + "", + { + "bin": { + "json5": "lib/cli.js" + } + }, + "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + ], + "kolorist": [ + "kolorist@1.8.0", + "", + {}, + "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + ], + "lightningcss": [ + "lightningcss@1.29.3", + "", + { + "dependencies": { + "detect-libc": "^2.0.3" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.3", + "lightningcss-darwin-x64": "1.29.3", + "lightningcss-freebsd-x64": "1.29.3", + "lightningcss-linux-arm-gnueabihf": "1.29.3", + "lightningcss-linux-arm64-gnu": "1.29.3", + "lightningcss-linux-arm64-musl": "1.29.3", + "lightningcss-linux-x64-gnu": "1.29.3", + "lightningcss-linux-x64-musl": "1.29.3", + "lightningcss-win32-arm64-msvc": "1.29.3", + "lightningcss-win32-x64-msvc": "1.29.3" + } + }, + "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==" + ], + "lightningcss-darwin-arm64": [ + "lightningcss-darwin-arm64@1.29.3", + "", + { + "os": "darwin", + "cpu": "arm64" + }, + "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==" + ], + "lightningcss-darwin-x64": [ + "lightningcss-darwin-x64@1.29.3", + "", + { + "os": "darwin", + "cpu": "x64" + }, + "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==" + ], + "lightningcss-freebsd-x64": [ + "lightningcss-freebsd-x64@1.29.3", + "", + { + "os": "freebsd", + "cpu": "x64" + }, + "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==" + ], + "lightningcss-linux-arm-gnueabihf": [ + "lightningcss-linux-arm-gnueabihf@1.29.3", + "", + { + "os": "linux", + "cpu": "arm" + }, + "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==" + ], + "lightningcss-linux-arm64-gnu": [ + "lightningcss-linux-arm64-gnu@1.29.3", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==" + ], + "lightningcss-linux-arm64-musl": [ + "lightningcss-linux-arm64-musl@1.29.3", + "", + { + "os": "linux", + "cpu": "arm64" + }, + "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==" + ], + "lightningcss-linux-x64-gnu": [ + "lightningcss-linux-x64-gnu@1.29.3", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==" + ], + "lightningcss-linux-x64-musl": [ + "lightningcss-linux-x64-musl@1.29.3", + "", + { + "os": "linux", + "cpu": "x64" + }, + "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==" + ], + "lightningcss-win32-arm64-msvc": [ + "lightningcss-win32-arm64-msvc@1.29.3", + "", + { + "os": "win32", + "cpu": "arm64" + }, + "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==" + ], + "lightningcss-win32-x64-msvc": [ + "lightningcss-win32-x64-msvc@1.29.3", + "", + { + "os": "win32", + "cpu": "x64" + }, + "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==" + ], + "lru-cache": [ + "lru-cache@5.1.1", + "", + { + "dependencies": { + "yallist": "^3.0.2" + } + }, + "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + ], + "lucide-preact": [ + "lucide-preact@0.487.0", + "", + { + "peerDependencies": { + "preact": "^10.5.13" + } + }, + "sha512-fy8Gn8bjoRTJ171SVUys+Xe65YsXCUdf8out16vdBvgpJtKKencwarKKJR26ZKSOzVydjnKsCEs/DRLB78qLtg==" + ], + "magic-string": [ + "magic-string@0.30.17", + "", + { + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==" + ], + "mdn-data": [ + "mdn-data@2.0.28", + "", + {}, + "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + ], + "minimatch": [ + "minimatch@10.0.1", + "", + { + "dependencies": { + "brace-expansion": "^2.0.1" + } + }, + "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==" + ], + "minipass": [ + "minipass@7.1.2", + "", + {}, + "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + ], + "ms": [ + "ms@2.1.3", + "", + {}, + "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + ], + "nanoid": [ + "nanoid@3.3.11", + "", + { + "bin": { + "nanoid": "bin/nanoid.cjs" + } + }, + "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" + ], + "node-html-parser": [ + "node-html-parser@6.1.13", + "", + { + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==" + ], + "node-releases": [ + "node-releases@2.0.19", + "", + {}, + "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + ], + "normalize-path": [ + "normalize-path@3.0.0", + "", + {}, + "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + ], + "nth-check": [ + "nth-check@2.1.1", + "", + { + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + ], + "package-json-from-dist": [ + "package-json-from-dist@1.0.1", + "", + {}, + "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + ], + "path-key": [ + "path-key@3.1.1", + "", + {}, + "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + ], + "path-scurry": [ + "path-scurry@2.0.0", + "", + { + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + } + }, + "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==" + ], + "picocolors": [ + "picocolors@1.1.1", + "", + {}, + "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + ], + "picomatch": [ + "picomatch@2.3.1", + "", + {}, + "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + ], + "postcss": [ + "postcss@8.5.3", + "", + { + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==" + ], + "postcss-selector-parser": [ + "postcss-selector-parser@6.1.2", + "", + { + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" + ], + "preact": [ + "preact@10.26.5", + "", + {}, + "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==" + ], + "purgecss": [ + "purgecss@7.0.2", + "", + { + "dependencies": { + "commander": "^12.1.0", + "glob": "^11.0.0", + "postcss": "^8.4.47", + "postcss-selector-parser": "^6.1.2" + }, + "bin": { + "purgecss": "bin/purgecss.js" + } + }, + "sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ==" + ], + "readdirp": [ + "readdirp@3.6.0", + "", + { + "dependencies": { + "picomatch": "^2.2.1" + } + }, + "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + ], + "rollup": [ + "rollup@4.39.0", + "", + { + "dependencies": { + "@types/estree": "1.0.7" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", + "fsevents": "~2.3.2" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==" + ], + "rtlcss": [ + "rtlcss@4.3.0", + "", + { + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==" + ], + "semver": [ + "semver@6.3.1", + "", + { + "bin": { + "semver": "bin/semver.js" + } + }, + "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + ], + "shebang-command": [ + "shebang-command@2.0.0", + "", + { + "dependencies": { + "shebang-regex": "^3.0.0" + } + }, + "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + ], + "shebang-regex": [ + "shebang-regex@3.0.0", + "", + {}, + "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + ], + "signal-exit": [ + "signal-exit@4.1.0", + "", + {}, + "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + ], + "simple-code-frame": [ + "simple-code-frame@1.3.0", + "", + { + "dependencies": { + "kolorist": "^1.6.0" + } + }, + "sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w==" + ], + "source-map": [ + "source-map@0.7.4", + "", + {}, + "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + ], + "source-map-js": [ + "source-map-js@1.2.1", + "", + {}, + "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + ], + "stack-trace": [ + "stack-trace@1.0.0-pre2", + "", + {}, + "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==" + ], + "string-width": [ + "string-width@5.1.2", + "", + { + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + ], + "string-width-cjs": [ + "string-width@4.2.3", + "", + { + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + ], + "strip-ansi": [ + "strip-ansi@7.1.0", + "", + { + "dependencies": { + "ansi-regex": "^6.0.1" + } + }, + "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + ], + "strip-ansi-cjs": [ + "strip-ansi@6.0.1", + "", + { + "dependencies": { + "ansi-regex": "^5.0.1" + } + }, + "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + ], + "strip-json-comments": [ + "strip-json-comments@3.1.1", + "", + {}, + "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + ], + "to-regex-range": [ + "to-regex-range@5.0.1", + "", + { + "dependencies": { + "is-number": "^7.0.0" + } + }, + "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + ], + "typescript": [ + "typescript@5.7.3", + "", + { + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + } + }, + "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==" + ], + "update-browserslist-db": [ + "update-browserslist-db@1.1.3", + "", + { + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + } + }, + "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==" + ], + "util-deprecate": [ + "util-deprecate@1.0.2", + "", + {}, + "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + ], + "vite": [ + "vite@6.2.5", + "", + { + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "optionalPeers": [ + "@types/node", + "jiti", + "less", + "lightningcss", + "sass", + "sass-embedded", + "stylus", + "sugarss", + "terser", + "tsx", + "yaml" + ], + "bin": { + "vite": "bin/vite.js" + } + }, + "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==" + ], + "vite-prerender-plugin": [ + "vite-prerender-plugin@0.5.7", + "", + { + "dependencies": { + "kolorist": "^1.8.0", + "magic-string": "^0.30.6", + "node-html-parser": "^6.1.12", + "simple-code-frame": "^1.3.0", + "source-map": "^0.7.4", + "stack-trace": "^1.0.0-pre2" + } + }, + "sha512-NSn/lewd0dZn8+mXvv9aXv6Wy7vx2wN5myawZc2YIFcVfrkcqEQVAjsOuWRWprovBHNplWIiPgEoUats8nt8+g==" + ], + "which": [ + "which@2.0.2", + "", + { + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "./bin/node-which" + } + }, + "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + ], + "wrap-ansi": [ + "wrap-ansi@8.1.0", + "", + { + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + }, + "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" + ], + "wrap-ansi-cjs": [ + "wrap-ansi@7.0.0", + "", + { + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + ], + "yallist": [ + "yallist@3.1.1", + "", + {}, + "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + ], + "path-scurry/lru-cache": [ + "lru-cache@11.1.0", + "", + {}, + "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==" + ], + "string-width-cjs/emoji-regex": [ + "emoji-regex@8.0.0", + "", + {}, + "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + ], + "string-width-cjs/strip-ansi": [ + "strip-ansi@6.0.1", + "", + { + "dependencies": { + "ansi-regex": "^5.0.1" + } + }, + "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + ], + "strip-ansi-cjs/ansi-regex": [ + "ansi-regex@5.0.1", + "", + {}, + "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + ], + "wrap-ansi-cjs/ansi-styles": [ + "ansi-styles@4.3.0", + "", + { + "dependencies": { + "color-convert": "^2.0.1" + } + }, + "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + ], + "wrap-ansi-cjs/string-width": [ + "string-width@4.2.3", + "", + { + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + ], + "wrap-ansi-cjs/strip-ansi": [ + "strip-ansi@6.0.1", + "", + { + "dependencies": { + "ansi-regex": "^5.0.1" + } + }, + "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + ], + "string-width-cjs/strip-ansi/ansi-regex": [ + "ansi-regex@5.0.1", + "", + {}, + "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + ], + "wrap-ansi-cjs/string-width/emoji-regex": [ + "emoji-regex@8.0.0", + "", + {}, + "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + ], + "wrap-ansi-cjs/strip-ansi/ansi-regex": [ + "ansi-regex@5.0.1", + "", + {}, + "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + ], } -} +} \ No newline at end of file diff --git a/bunfig.toml b/bunfig.toml deleted file mode 100644 index 62ea8b5..0000000 --- a/bunfig.toml +++ /dev/null @@ -1,2 +0,0 @@ -[loader] -".woff2" = "file" \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..3c98cce --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + + + Seth @ IPv4 dot Army + + +
+ + + diff --git a/index.ts b/index.ts deleted file mode 100644 index 99a276e..0000000 --- a/index.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { build, serve, gzipSync, file, type BunRequest, gc } from "bun"; - -import pkg from "./package.json"; - -const development = process.env.NODE_ENV === "development"; - -let heartrate = 0; -let lanyard = {}; - -require("node:fs/promises").rm("./dist", { recursive: true, force: true }).catch(() => { - // ignore -}); - -const buildWeb = async () => { - return await build({ - entrypoints: ['./src/index.html'], - outdir: './dist', - minify: !development, - sourcemap: (development ? "inline" : "none"), - splitting: true, - publicPath: "/assets/", - loader: { - ".woff2": "file" - }, - }) -} - -if (!development) { - await buildWeb() -} - -const server = serve({ - routes: { - "/": async () => { - if (development) { - await buildWeb() - } - return new Response(gzipSync(await file("./dist/index.html").arrayBuffer()), { - headers: { - "Content-Type": "text/html", - "Cache-Control": "no-cache", - "Content-Encoding": "gzip", - } - }) - }, - - "/assets/:file": async (req: BunRequest<"/assets/:file">) => { - const reqFile = file(`./dist/${req.params.file}`) - return new Response(gzipSync(await reqFile.arrayBuffer()), { - headers: { - "Content-Type": reqFile.type, - "Cache-Control": "public, max-age=31536000", - "Content-Encoding": "gzip", - } - }) - }, - - "/public/:file": async (req: BunRequest<"/public/:file">) => { - const reqFile = file(`./public/${req.params.file}`) - let fileRes = await reqFile.text() - - fileRes = fileRes.replace("{{LANYARD}}", `${JSON.stringify({ example: "lanyard data" })}`) - fileRes = fileRes.replace("{{HYPERATE}}", `${JSON.stringify({ example: "hyperate data" })}`) - - return new Response(gzipSync(fileRes), { - headers: { - "Content-Type": reqFile.type, - "Cache-Control": "public, max-age=31536000", - "Content-Encoding": "gzip", - } - }) - }, - - "/public/font/:file": async (req: BunRequest<"/public/font/:file">) => { - const reqFile = file(`./public/font/${req.params.file}`) - return new Response(gzipSync(await reqFile.arrayBuffer()), { - headers: { - "Content-Type": reqFile.type, - "Cache-Control": "public, max-age=31536000", - "Content-Encoding": "gzip", - } - }) - }, - - "/api/server": () => { - const string = JSON.stringify(process) - const json = JSON.parse(string) - - // clear possibly data that could be sensitive - json.argv = {} - json.debugPort = 0 - json.env = {} - json.execArgv = [] - json.execPath = "" - json.stderr = {} - json.stdin = {} - json.stdout = {} - json.title = "" - - json.availableMemory = process.availableMemory() - json.constrainedMemory = process.constrainedMemory() - json.cpuUsage = process.cpuUsage() - json.memoryUsage = process.memoryUsage() - json.uptime = process.uptime() - json.package = pkg - - return new Response(gzipSync(JSON.stringify({ data: json })), { - headers: { - "Content-Type": "application/json", - "Cache-Control": "no-cache", - "Content-Encoding": "gzip", - } - }) - }, - "/api/health": () => { - return new Response(gzipSync(JSON.stringify({ data: "ok" })), { - headers: { - "Content-Type": "application/json", - "Cache-Control": "no-cache", - "Content-Encoding": "gzip", - } - }) - }, - "/api/ws": (req, server) => { - if (server.upgrade(req)) { - return; - } - - return new Response("Upgrade failed", { status: 500 }); - }, - "/api/gc": () => { - gc(true) - return new Response(gzipSync(JSON.stringify({ data: "triggered" })), { - headers: { - "Content-Type": "application/json", - "Cache-Control": "no-cache", - "Content-Encoding": "gzip", - } - }) - }, - }, - websocket: { - open: async (ws) => { - ws.subscribe("lanyard"); - ws.send(JSON.stringify({ type: "lanyard", data: lanyard }), true); - - ws.subscribe("hyperate"); - ws.send(JSON.stringify({ type: "hyperate", data: { hr: heartrate } }), true); - }, - message: async (ws, message) => { - ws.send(JSON.stringify({ type: "echo", data: message }), true) - }, - close: async (ws) => { - console.log("WebSocket closed", ws.id); - }, - drain: async (ws) => { - console.log("WebSocket drain", ws.id); - }, - }, - development, - port: 3000, -}); - -const lanyardSocket = new WebSocket("wss://lanyard.creations.works/socket"); - -const setLanyard = (data: object) => { - lanyard = data; - - return server.publish("lanyard", JSON.stringify({ type: "lanyard", data }), true); -} - -lanyardSocket.onmessage = ({ data }) => { - data = JSON.parse(data); - - switch (data.op) { - case 0: { - setLanyard(data.d) - break; - } - case 1: { - lanyardSocket.send(JSON.stringify({ - op: 2, - d: { - subscribe_to_id: "1273447359417942128" - } - })) - break; - } - } -} - -const hyperate = new WebSocket( - "wss://app.hyperate.io/socket/websocket?token=wv39nM6iyrNJulvpmMQrimYPIXy2dVrYRjkuHpbRapKT2VSh65ngDGHdCdCtmEN9", -); - -let hrTimeout: ReturnType; - -const setHeartrate = async (hr: number) => { - heartrate = hr; - - return server.publish("hyperate", JSON.stringify({ type: "hyperate", data: { hr } }), true); -} - -const setHrInterval = () => { - hrTimeout = setTimeout(() => { - setHeartrate(0); - }, 6000); -}; - -hyperate.onopen = () => { - hyperate.send( - JSON.stringify({ - topic: "hr:0BCA", - event: "phx_join", - payload: {}, - ref: 0, - }), - ); - - setInterval(() => { - hyperate.send( - JSON.stringify({ - topic: "phoenix", - event: "heartbeat", - payload: {}, - ref: 0, - }), - ); - }, 10000); - - return setHrInterval(); -}; - -hyperate.onmessage = ({ data }) => { - const { event, payload } = JSON.parse(data); - switch (event) { - case "hr_update": { - clearTimeout(hrTimeout); - setHrInterval(); - setHeartrate(payload.hr); - break; - } - default: { - break; - } - } -}; \ No newline at end of file diff --git a/package.json b/package.json index a5b03ce..d11caf7 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,25 @@ { - "name": "ipv4.army", - "module": "index.ts", - "scripts": { - "dev": "NODE_ENV=development bun run --hot . --watch", - "start": "bun run ." - }, - "devDependencies": { - "@biomejs/biome": "1.9.4", - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5.8.3" - }, - "private": true, - "type": "module", - "dependencies": { - "microlight": "^0.0.7", - "tsx-dom": "^3.1.0" - } -} \ No newline at end of file + "name": "ipv4.army-vite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "bunx --bun vite", + "lint": "bunx biome check --fix --unsafe", + "build": "bunx --bun tsc -b && bunx --bun vite build", + "preview": "bunx --bun vite preview" + }, + "dependencies": { + "halfmoon": "^2.0.2", + "lucide-preact": "^0.487.0", + "preact": "^10.26.2" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "@fullhuman/postcss-purgecss": "^7.0.2", + "@preact/preset-vite": "^2.10.1", + "lightningcss": "^1.29.3", + "typescript": "~5.7.2", + "vite": "^6.2.0" + } +} diff --git a/public/font/Black.woff2 b/public/font/Black.woff2 deleted file mode 100644 index 21c9327..0000000 Binary files a/public/font/Black.woff2 and /dev/null differ diff --git a/public/font/BlackItalic.woff2 b/public/font/BlackItalic.woff2 deleted file mode 100644 index c2227f2..0000000 Binary files a/public/font/BlackItalic.woff2 and /dev/null differ diff --git a/public/font/Bold.woff2 b/public/font/Bold.woff2 deleted file mode 100644 index e9eff3d..0000000 Binary files a/public/font/Bold.woff2 and /dev/null differ diff --git a/public/font/BoldItalic.woff2 b/public/font/BoldItalic.woff2 deleted file mode 100644 index e79c96b..0000000 Binary files a/public/font/BoldItalic.woff2 and /dev/null differ diff --git a/public/font/Book.woff2 b/public/font/Book.woff2 deleted file mode 100644 index 6830dc2..0000000 Binary files a/public/font/Book.woff2 and /dev/null differ diff --git a/public/font/BookItalic.woff2 b/public/font/BookItalic.woff2 deleted file mode 100644 index 4b56559..0000000 Binary files a/public/font/BookItalic.woff2 and /dev/null differ diff --git a/public/font/Medium.woff2 b/public/font/Medium.woff2 deleted file mode 100644 index edc03eb..0000000 Binary files a/public/font/Medium.woff2 and /dev/null differ diff --git a/public/font/MediumItalic.woff2 b/public/font/MediumItalic.woff2 deleted file mode 100644 index caeb737..0000000 Binary files a/public/font/MediumItalic.woff2 and /dev/null differ diff --git a/public/font/rename.ts b/public/font/rename.ts deleted file mode 100644 index 5d4bd89..0000000 --- a/public/font/rename.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Glob } from "bun"; - -const woff2 = new Glob("./*.woff2"); - -for await (const file of woff2.scan(".")) { - const font = Bun.file(file); - - const name = font.name?.split("-")[1]; - - await Bun.write(`./${name}`, await font.arrayBuffer()); - console.log(`Renamed ${file} to ${name}`); - - await font.delete(); - console.log(`Deleted original font file: ${file}`); -} - -console.log("Done") \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index 7bcd83f..0000000 --- a/src/App.css +++ /dev/null @@ -1,59 +0,0 @@ -.scanlines { - overflow: hidden; -} - -.scanlines:before, -.scanlines:after { - display: block; - pointer-events: none; - content: ""; - position: absolute; -} - -.scanlines:before { - width: 100%; - height: 2px; - z-index: 2147483649; - background: rgba(0, 0, 0, 0.3); - opacity: 0.75; - animation: scanline 6s linear infinite; -} - -.scanlines:after { - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 2147483648; - background: linear-gradient(to bottom, - transparent 50%, - rgba(0, 0, 0, 0.3) 51%); - background-size: 100% 4px; - animation: scanlines 1s steps(60) infinite; -} - -/* ANIMATE UNIQUE SCANLINE */ -@keyframes scanline { - 0% { - transform: translate3d(0, 200000%, 0); - } -} - -@keyframes scanlines { - 0% { - background-position: 0 50%; - } -} - -div { - margin: 0; - padding: 0; -} - -div.scanlines { - position: absolute; -} - -.microlight>span:nth-child(6) { - color: var(--status-color); -} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx deleted file mode 100644 index 58cdc07..0000000 --- a/src/App.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Lanyard from './components/Lanyard'; -import Hyperate from './components/Hyperate'; - -export default () => { - return
-

seth> cat ./about.txt

-

A Dedicated Backend Developer, with a passion for high-fidelity audio, gaming, and web development.

- -

seth> curl /tmp/discord-ipc

-

- -

seth> cat /tmp/heartrate

-

-
-} \ No newline at end of file diff --git a/src/Socket.ts b/src/Socket.ts deleted file mode 100644 index c472067..0000000 --- a/src/Socket.ts +++ /dev/null @@ -1,38 +0,0 @@ -const { protocol, host } = window.location; - -class Socket extends EventTarget { - private _socket: WebSocket; - - constructor(url: string) { - super(); - - this._socket = new WebSocket(url); - this._socket.onmessage = (event) => { - const { type, data } = JSON.parse(event.data); - - switch (type) { - case "lanyard": { - this.emitLanyard(data); - break; - } - case "hyperate": { - this.emitHyperate(data.hr); - break; - } - } - }; - - setInterval(() => { - this._socket.send("ping"); - }, 10000); - } - - emitLanyard(lanyard: object) { - this.dispatchEvent(new CustomEvent('lanyard', { detail: lanyard })); - } - emitHyperate(heartRate: number) { - this.dispatchEvent(new CustomEvent('hyperate', { detail: heartRate })); - } -} - -export default new Socket(`${protocol.replace("http", "ws")}//${host}/api/ws`); \ No newline at end of file diff --git a/src/components/Hyperate/index.tsx b/src/components/Hyperate/index.tsx deleted file mode 100644 index a8b220b..0000000 --- a/src/components/Hyperate/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { createRef } from "tsx-dom"; -import microlight from "microlight"; - -import socket from "../../Socket"; - -export default () => { - const paragraph = createRef(); - - socket.addEventListener('hyperate', (event: Event) => { - const heartRate = (event as CustomEvent).detail; - if (paragraph.current) { - paragraph.current.innerText = `${heartRate} BPM`; - } - microlight.reset(); - }); - return
-

0 BPM

-
; -} \ No newline at end of file diff --git a/src/components/Lanyard/index.tsx b/src/components/Lanyard/index.tsx deleted file mode 100644 index 01381df..0000000 --- a/src/components/Lanyard/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { createRef } from "tsx-dom"; -import microlight from "microlight"; - -import socket from "../../Socket"; - -const statusTypes: { [key: string]: string } = { - online: "green", - idle: "yellow", - dnd: "red", - invisible: "inherent", - offline: "inherent", -} - -const activityTypes: { [key: number]: string } = { - 0: "Playing", - 1: "Streaming", - 2: "Listening to", - 3: "Watching", - 4: "Custom", - 5: "Competing in", -} - -export default () => { - const paragraph = createRef(); - - socket.addEventListener('lanyard', (event: Event) => { - const lanyard = (event as CustomEvent).detail; - if (paragraph.current) { - paragraph.current.style = `--status-color: ${statusTypes[lanyard.discord_status]};`; - paragraph.current.innerText = JSON.stringify({ - status: lanyard.discord_status, - activities: lanyard.activities.map((act: { type: number, name: string }) => { return `${activityTypes[act.type]} ${act.name}` }), - }, null, 1); - } - microlight.reset(); - }); - return
-

{JSON.stringify({})}

-
; -} \ No newline at end of file diff --git a/src/components/app.css b/src/components/app.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/app.tsx b/src/components/app.tsx new file mode 100644 index 0000000..70e257b --- /dev/null +++ b/src/components/app.tsx @@ -0,0 +1,13 @@ +import Container from "./container"; +import Navbar from "./navbar"; + +import "./app.css"; + +export default () => { + return ( + <> + + + + ); +}; diff --git a/src/components/container/index.tsx b/src/components/container/index.tsx new file mode 100644 index 0000000..19c5864 --- /dev/null +++ b/src/components/container/index.tsx @@ -0,0 +1,49 @@ +import { useState } from "preact/hooks"; + +import Heart from "../heart"; + +const statusMap = { + online: "border-success-subtle", + idle: "border-warning-subtle", + dnd: "border-danger-subtle", + offline: "border-light-subtle", +}; + +export default () => { + const [status, setStatus] = useState("offline"); + + fetch("https://lanyard.creations.works/v1/users/1273447359417942128") + .then((req) => req.json()) + .then((res) => { + if (res.data.discord_status) { + setStatus(res.data.discord_status); + } else { + setStatus("offline"); + } + }); + + return ( + <> +
+ ... +
+

Seth

+

+ Dedicated Backend Developer +
+
+ + With a passsion for high-fidelity audio, gaming, and web development + +

+ +
+ + ); +}; diff --git a/src/components/heart/index.css b/src/components/heart/index.css new file mode 100644 index 0000000..c3912ba --- /dev/null +++ b/src/components/heart/index.css @@ -0,0 +1,18 @@ +:root { + --bpm: 0; +} + +@keyframes pulse { + 0%, + 100% { + transform: scale(1); + } + + 50% { + transform: scale(1.1); + } +} + +.heart { + animation: pulse calc(60s / var(--bpm)) infinite ease; +} diff --git a/src/components/heart/index.tsx b/src/components/heart/index.tsx new file mode 100644 index 0000000..5c99b02 --- /dev/null +++ b/src/components/heart/index.tsx @@ -0,0 +1,71 @@ +import { useState } from "preact/hooks"; + +import "./index.css"; + +export default () => { + const [heartrate, setHeartrate] = useState(0); + + const ws = new WebSocket( + "wss://app.hyperate.io/socket/websocket?token=wv39nM6iyrNJulvpmMQrimYPIXy2dVrYRjkuHpbRapKT2VSh65ngDGHdCdCtmEN9", + ); + + let hrTimeout: ReturnType; + + const setHrInterval = () => { + hrTimeout = setTimeout(() => { + return setHeartrate(0); + }, 6000); + }; + + ws.onopen = () => { + ws.send( + JSON.stringify({ + topic: "hr:0BCA", + event: "phx_join", + payload: {}, + ref: 0, + }), + ); + + setInterval(() => { + ws.send( + JSON.stringify({ + topic: "phoenix", + event: "heartbeat", + payload: {}, + ref: 0, + }), + ); + }, 10000); + + return setHrInterval(); + }; + + ws.onmessage = ({ data }) => { + const { event, payload } = JSON.parse(data); + switch (event) { + case "hr_update": { + clearTimeout(hrTimeout); + setHrInterval(); + setHeartrate(payload.hr); + break; + } + default: { + break; + } + } + }; + + return ( + <> +
+ ♥️ +
+ {heartrate} BPM +
+ + ); +}; diff --git a/src/components/navbar/index.tsx b/src/components/navbar/index.tsx new file mode 100644 index 0000000..a430068 --- /dev/null +++ b/src/components/navbar/index.tsx @@ -0,0 +1,46 @@ +import { Minimize, Minus, X } from "lucide-preact"; + +const close = () => { + window.self.close(); + window.history.back(); +}; + +export default () => { + return ( + <> + + + ); +}; diff --git a/src/index.css b/src/index.css index abb8639..e69de29 100644 --- a/src/index.css +++ b/src/index.css @@ -1,18 +0,0 @@ -@import "./App.css"; - -html, -head, -body { - margin: 0; - padding: 0; - font-family: 'Circular Std', sans-serif; - height: 100vh; - width: 100vw; -} - -body { - color: #DEDEDE; - font: 2vh Inconsolata, monospace; - text-shadow: 0 0 5px #C8C8C8; - background: radial-gradient(at bottom right, rgba(0, 150, 0, 0.1) 0%, rgba(0, 0, 0, 1) 100%); -} \ No newline at end of file diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 310bf9d..0000000 --- a/src/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - Seth @ IPv4 dot Army - - - - - - - - - - - \ No newline at end of file diff --git a/src/index.tsx b/src/index.tsx deleted file mode 100644 index b40f99d..0000000 --- a/src/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import "tsx-dom"; - -import App from './App'; - -const font = document.getElementById("font") -if (font) { - font.innerText = `@font-face { - font-family: 'Circular Std'; - src: url('/public/font/Black.woff2') format('woff2'); - font-weight: black; - font-style: normal; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/BlackItalic.woff2') format('woff2'); - font-weight: black; - font-style: italic; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/Bold.woff2') format('woff2'); - font-weight: bold; - font-style: normal; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/BoldItalic.woff2') format('woff2'); - font-weight: bold; - font-style: italic; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/Book.woff2') format('woff2'); - font-weight: normal; - font-style: normal; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/BookItalic.woff2') format('woff2'); - font-weight: normal; - font-style: italic; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/Medium.woff2') format('woff2'); - font-weight: 500; - font-style: normal; - font-display: swap -} - -@font-face { - font-family: 'Circular Std'; - src: url('/public/font/MediumItalic.woff2') format('woff2'); - font-weight: 500; - font-style: italic; - font-display: swap -}` -} -document.body.appendChild(); - -// You're garbage, let me collect you. -fetch("/api/gc") \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..8b4285d --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,9 @@ +import { render } from "preact"; +import "./index.css"; +import "halfmoon/css/halfmoon.min.css"; +import App from "./components/app.tsx"; + +render( + , + (document.getElementById("app") as HTMLElement) || document.body, +); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..613d3c5 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "paths": { + "react": ["./node_modules/preact/compat/"], + "react-dom": ["./node_modules/preact/compat/"] + }, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "jsxImportSource": "preact", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json index 29eee99..a5b06bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,29 +1,11 @@ { - "compilerOptions": { - // Environment setup & latest features - "lib": [ - "ESNext", - "DOM", - ], - "target": "ESNext", - "module": "ESNext", - "moduleDetection": "force", - "jsx": "react-jsx", - "jsxImportSource": "tsx-dom", - "allowJs": true, - // Bundler mode - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "noEmit": true, - // Best practices - "strict": true, - "skipLibCheck": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - // Some stricter flags (disabled by default) - "noUnusedLocals": false, - "noUnusedParameters": false, - "noPropertyAccessFromIndexSignature": false - } -} \ No newline at end of file + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..5a2a3a0 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..e02958b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,28 @@ +/// + +import preact from "@preact/preset-vite"; +import { defineConfig } from "vite"; + +import postCSSPurgeCSS from "@fullhuman/postcss-purgecss"; + +// https://vite.dev/config/ +export default defineConfig({ + css: { + ...(import.meta.env.NODE_ENV === "production" + ? { + transformer: "postcss", + postcss: { + plugins: [ + postCSSPurgeCSS({ + content: ["./index.html", "./src/**/*.{ts,tsx}"], + }), + ], + }, + } + : { transformer: "lightningcss" }), + }, + build: { + cssMinify: "lightningcss", + }, + plugins: [preact()], +});