From 97f3848b66bb9dc5528a8a180fd655699131229e Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Thu, 10 Apr 2025 17:08:19 +0100 Subject: [PATCH] Use esbuild --- package-lock.json | 467 ++++++++++++++++++++++++ package.json | 1 + public/assets/css/app.css.map.br | Bin 1719 -> 0 bytes public/assets/css/app.css.map.zst | Bin 1954 -> 0 bytes public/assets/js/app.js | 17 +- public/assets/js/app.js.br | Bin 155 -> 946 bytes public/assets/js/app.js.map | 7 + public/assets/js/app.js.zst | Bin 173 -> 1111 bytes public/assets/js/auth.js.br | Bin 1348 -> 0 bytes public/assets/js/auth.js.zst | Bin 1538 -> 0 bytes resources/js/app.js | 15 + {public/assets => resources}/js/auth.js | 0 scripts/compress.sh | 4 +- 13 files changed, 494 insertions(+), 17 deletions(-) delete mode 100644 public/assets/css/app.css.map.br delete mode 100644 public/assets/css/app.css.map.zst create mode 100644 public/assets/js/app.js.map delete mode 100644 public/assets/js/auth.js.br delete mode 100644 public/assets/js/auth.js.zst create mode 100644 resources/js/app.js rename {public/assets => resources}/js/auth.js (100%) diff --git a/package-lock.json b/package-lock.json index dac87cfa..96abf554 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "devDependencies": { "@eslint/js": "^9.6.0", "@stylistic/eslint-plugin": "^4.2.0", + "esbuild": "^0.25.2", "eslint": "^9.7.0", "globals": "^16.0.0", "lightningcss": "^1.29.3", @@ -145,6 +146,431 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", @@ -1011,6 +1437,47 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "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" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", diff --git a/package.json b/package.json index 78a8b968..a6e358f3 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "devDependencies": { "@eslint/js": "^9.6.0", "@stylistic/eslint-plugin": "^4.2.0", + "esbuild": "^0.25.2", "eslint": "^9.7.0", "globals": "^16.0.0", "lightningcss": "^1.29.3", diff --git a/public/assets/css/app.css.map.br b/public/assets/css/app.css.map.br deleted file mode 100644 index b93f14748b180820efba6c0ee24d44b738c79efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1719 zcmca;vA<)*trW%*xf{IK-d7CeRp6T$quuO?8MO;ef4_Qj%PN-t9CH%)b*hB~ zsp@=>)SKXx?fqB#@RE0Lt}1k8G#BJ{Zdv{}Y}JF##CiW>Z9=zO@BjbzU-(gHXPeB7 z`NxzTyZ5C(%lS98+!M zl-2+Ch?~OS^(8g_FW}jCV0j5kuCAQ_Kd)bGpFc=#nsN8;LiE&}C zn3^v+(c*1|*XPfBKIJZYJ&Qq(t>NCiz%S1Y(`WxYwYtaRzx(}-{|o0We7r%Ws_%1P zOZ}dV2S!(3yqv(Sy!Z0qNL8!*x8B{?zAW~+;B9p`>*|N+En&2A@%={fmvKcyvUy zZ_3_Za`O4h$0v0>_ZloaFf*g)+nK^0*K=Ccm6T;V?>{(@w0Qd5zfTpoYd=j9vNdCW ztuwP=d8=AvlWokKBmevI_!GPKG)yEn{4iHtVLg+Om;G0J{iPek^47~ySu66tW)^qIL}RL$G+Ws znpWv4@gm|g%f-0EeVA9_^EoJUU6eC%h1s)ejy|*??_I6@YM<~*w0`Qu54Uw6U+u})Rd~?4vLp1D(U}eRM7y???^D=2EC1%F z3ZvB*XNTLjtbNu^87fQ>D9SC9fUdeOU^Ucl4r*bzwOI!51zG$BB?5V-t zQ|z3g7BwckSu#VlQDg10t&7h!JD%`c?i_c(s(yF6ckBbB=>q-1H!^u2{*%47V?~A4w-jZJWRZZ=p%eT8}F4GTsCQN2&TE9Qo;og;$ zYNb2|kJHj0HqDv$VA|vF(>-sqa=2-}Ud6k`!DhlG3wW(_@A$ug+nvPtWIMd@A z=gNz3Hw&FuH=#~>fkBDv$A8RynY?e?IDW|q{n>4(BYr>l(zmST4h;J_T^2u7>ejd( z=l*4_OP&1P7ju-ihqm#q2sL_Z8{ zT#~ySb#q?fRPN)OIwea4k0)?Uopw2rXP;p3InTX&?`>pNI45^>QtAn@TUW1%W;vKU zYkP%c7^QD#SpSxBf23jXqS?!GVi)aQ5#1IqTrqX?tRtBxbX|I%HS_n(nkA`rNhL|0 z>!^^@pH=Pp0ZQHnH1OorgtV&oj988I_I7Iu_s)3m*@F~3|V}0{<5;& z54iWp?RxC>+Uw5OAJ^JDrpCXWCh4YeNModRRznZ#r-U11OO+& BVLbo< diff --git a/public/assets/css/app.css.map.zst b/public/assets/css/app.css.map.zst deleted file mode 100644 index 8d7f352fc944a694cc153f113bac21241634791c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1954 zcmdPcs{c3Th1gOXhA3AaUX2SOrOZ<@y2 z4X-#T8pp$TgJCzrX$FC$d8M3+tcs17R;Mpg;AUlJX4zc#;o5hr`~xi~PDMT0Hf{R1 zrJuL{zVhwOhH$pR?~lto|JK<*vQ&&%tynU*W=q)q?ZTOt8aJHWp?=v@XpT?v#efvS z>n&4K9RviXP039Wm@?(yNdvo67B`*MGu1Znl-{ga#Ct5sPWSWz0|OyG1zzvjojk&e zRL(j-b7)=S>z1OF+#7c*LPm4(38VKPJcY!he4Z(0DjBsiYi>TF5Oc~z#c0YD*OVFE zQ+!iq`9C(;wM3`-gxZZGRV%9H%7r_dd|&Kd%R6fVO93;lz`OdRDsNv$2hYE+uAqv7z%~3Ij*_3e(UlJ;ioq~ z5psS1Q*!Hs_$j~l|4jY1jCIwgtsfWvedF?K-l^E5o^N~e?%2ge*B;&zxb@!pYgbc6 zzTVlj{eF!Yu7r_ zBR1cTch%ouh zp5K0BMbY!Cha+^lN@p%QZLE2EmX$`Q4fmEif|X&c!fISeb9=YB&vBm56m@EvdT!Tx z@eNOt6|%3{_uBscV*TybONnCFwT#y9s@|5i-`Z}}E_w33PQ*Kl3HH}5XJ3DIpugGG z>hi;rjrIEvFIeAj>A)P>QxXj~#FAYM8Wz8l&1X_ol)rJL?D&>hZ*E2J>%Wp5otNQ$ zeSXp2DIJSkbXOi1Tz4R7r^d99Lfv@bnRkNqu6&=JZ~bP=(vo#%FSJ><>y~~~TEbD& zr}j7E?VNpq^@6%_x3<>({aK}3zH_@*v8VgCZ%fzS?Ds#p?Q`nM?Yn_2BhI|{*^#=^}eeY_1?DF*gcFxxRD092tNlDo<6M@1W z#m!7{_n$1RatxCYlxWP|TEApfZtXT!whG1z@{yi=56x=ciQRpY#T0)m>9D%zX8t$J z17cs?33*e`HSOJp%+gIM3~SZ)Y!_W*CiT|2h9rzCw+ME1S+&3~l#`3Bpx)aNQpK5uxp`y39;*%b1?tL_A%g4zC18Ec%Es=!Wx07a&}M*Zvs%kNxhWDK5k z;&&jw%X&{uXXhUb+TT-Fety^Nk?-NZrSba~k87M!`=#4goa~P-dv$stgUTbRZOfkf zE@4s9iFme;dDn}LnWDZvN^3(8Pro?9;B_NgV>c7)h3(1(mQoQCQ}&qOeyOIS+_hV9 z{-Nxrvv%B%52P@C?w#TN;{dP&>pSn>qPt*1(KNc6wE0b7f z*DjLcWw>?o<@GB+6tR?PXx#HN{%6R?_rPm&apa`EC;PpYSEx$6*Qd=@?_(_3Qq`C1 zG_hgl`zev@nlje}>mIozGI@fxl9tUmgT;3(H|4)hyO)t*aHqL(n&J|k(89wv8n@ki zeIaJCHCa^_bV{KC{f~KQmWW++vI?E0(pH_;B_y!%Z@7{ta2x$Gz(~8zr6P_HI1J zR1x#%x0}cBgj)qIJ1%V5_M~k2E}MJPrhEL4;P`l?`(k=bLDgg_MNNijc1fPXTTQQW z1#Wm^>z4at`Z+1*s1t>*yiYzU&1Zei-0i%W`7z_- { - el.addEventListener('click', () => { - auth.register(); - }); -}); - -document.querySelectorAll('.login-passkey').forEach((el) => { - el.addEventListener('click', () => { - auth.login(); - }); -}); +(()=>{var i=class{constructor(){}async register(){let n=await this.getCreateOptions(),e={challenge:this.base64URLStringToBuffer(n.challenge),rp:{id:n.rp.id,name:n.rp.name},user:{id:new TextEncoder().encode(window.atob(n.user.id)),name:n.user.name,displayName:n.user.displayName},pubKeyCredParams:n.pubKeyCredParams,excludeCredentials:[],authenticatorSelection:n.authenticatorSelection,timeout:6e4},t=await navigator.credentials.create({publicKey:e});if(!t)throw new Error("Error generating a passkey");let r={id:t.id?t.id:null,type:t.type?t.type:null,rawId:t.rawId?this.bufferToBase64URLString(t.rawId):null,response:{attestationObject:t.response.attestationObject?this.bufferToBase64URLString(t.response.attestationObject):null,clientDataJSON:t.response.clientDataJSON?this.bufferToBase64URLString(t.response.clientDataJSON):null}};if(!(await window.fetch("/admin/passkeys/register",{method:"POST",body:JSON.stringify(r),cache:"no-cache",headers:{"Content-Type":"application/json","X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).ok)throw new Error("Error saving the passkey");window.location.reload()}async getCreateOptions(){return await(await fetch("/admin/passkeys/register",{method:"GET"})).json()}async login(){let n=await this.getLoginData(),e=await navigator.credentials.get({publicKey:{challenge:this.base64URLStringToBuffer(n.challenge),userVerification:n.userVerification,timeout:6e4}});if(!e)throw new Error("Authentication failed");let t={id:e.id?e.id:"",type:e.type?e.type:"",rawId:e.rawId?this.bufferToBase64URLString(e.rawId):"",response:{authenticatorData:e.response.authenticatorData?this.bufferToBase64URLString(e.response.authenticatorData):"",clientDataJSON:e.response.clientDataJSON?this.bufferToBase64URLString(e.response.clientDataJSON):"",signature:e.response.signature?this.bufferToBase64URLString(e.response.signature):"",userHandle:e.response.userHandle?this.bufferToBase64URLString(e.response.userHandle):""}};if(!(await window.fetch("/login/passkey",{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json","X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).ok)throw new Error("Login failed");window.location.assign("/admin")}async getLoginData(){return await(await fetch("/login/passkey",{method:"GET"})).json()}base64URLStringToBuffer(n){let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4,r=e.padEnd(e.length+t,"="),a=window.atob(r),c=new ArrayBuffer(a.length),d=new Uint8Array(c);for(let o=0;o{s.addEventListener("click",()=>{l.register()})});document.querySelectorAll(".login-passkey").forEach(s=>{s.addEventListener("click",()=>{l.login()})});})(); +//# sourceMappingURL=app.js.map diff --git a/public/assets/js/app.js.br b/public/assets/js/app.js.br index 203d1bf17edb736c55489c257d6b57a82b2cbabc..9486214c43c73fd3dcd65a30c1e0c92d112e6543 100644 GIT binary patch literal 946 zcmX@;5XYc!eb&`_d;RU-or0696(1EUrn%iRVAOfjEB1Z=wO5sI+r#8^@18qz-`3D~ z$G`n`oL4V&NPP_Gm@9SBaK?KDpBej-!Y3rZ7)g@p-$B z>jplji^o>ko)+deoFCojwK;ZCuY{w=+b6x*@pk*Roxk(^huoiZi$sNo^QZbvj&#ds zTH5KhzSx~5V#(%nrkqQE{y5rm+26@cO-SpJ;_8*9PgK?!OgLxK8@KX8L&xnIdNQx0 z@8x}(9qHe`I=tqW#>RT9)rGzbTI%L6%{)JOzQu_b+cy9F>b~1qQp|Ym_+`Bz>@l$v-<-}W?@BfZr@jKSt z|7K!YtF4)N4Odk_|I3taW6hF7rTR%WQZkN<4qq$ouXy{UFJ9xp%NKj2j(Y8RP+SwS z+fbxOEA?j4^chDxH>6K;be`a|$lkZ)$l}P^u6}Zy-%FTH9zGH-D1EbK+Ut%i(f707HZ%2a%#vqufRJIF_mTR*UG}!=5=pq``0aN*s7PrGSRvyV#AsW-YCc2 z%$lu-0+gH@t~SMU{0-RJ5Id_@KxD_tJBmp6+RWw$0@hzdNswTwe*bMM}|2Zbm0w;I1#)3vsHqifyGXi4=)5B}|$ zo_$<=-vyIJU1s6x9hQg9O5V$@d==-++4btz^A*#xHdd^Cbb9{L&)2V9Y`2PBcJinC zL1p8}uC~kXO1D)v>$=>S#&<7z?o!2PSD0$H&;Mb>wo`QrU-Z=y!$hI!uGK3$%b(QW zJ+dj}U-+M7*{#jq{fnNnH*HL>UScM_Y))!o&BFe3z*_45AHl6cmX@VDRfbJPK(EF@Y!DQ5Hssd*;c1Kn|c {\n el.addEventListener('click', () => {\n auth.register();\n });\n});\n\ndocument.querySelectorAll('.login-passkey').forEach((el) => {\n el.addEventListener('click', () => {\n auth.login();\n });\n});\n"], + "mappings": "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", + "names": ["Auth", "createOptions", "publicKeyCredentialCreationOptions", "credential", "authenticatorAttestationResponse", "loginData", "publicKeyCredential", "base64URLString", "base64", "padLength", "padded", "binary", "buffer", "bytes", "i", "str", "charCode", "auth", "Auth", "el"] +} diff --git a/public/assets/js/app.js.zst b/public/assets/js/app.js.zst index 5db3d9e5871821e7a626537aa6c562bc0fe92065..904d5c05401c458dda8961e94b1a76535e475ff7 100644 GIT binary patch literal 1111 zcmdPcs{c3TB$uxegV@$N>K8&TGQSGHxF;kp#^iR+?QjE$x@7;J-rx)SZ@f(}{}+CQ zx#lE`xIjO{1cnI=?}S$u9ZCLXlGpuGV)9NG_T5^W)`c%Kc9OVxedqm)&;7jZ&o8cA zdiGC8@q+&3^AUIMTsHHQinZ8uY00dThaAekHw24pE3llp^oO~yxP&P4`MVSMY>LZ{ z4w`LqX!_fw^_hQe8$R3HWwceU>el>uI$z@c8n2aczLd7poY$@mC{?To1+b%(@W7_pz+slQ_3sZ059u4$jJ ztuZ|3Fu!|kyZi@@tj5{iGrc{cwm!dav}%RN?f&Sayi1O+tA64B@~ZidI`7vT`(&kq z*7@FN6FyaZ^XsfTPut>`zhysuWBb~SvhtI6=NA8eIn|6ccFv+3#%eli^GfIRFsB%P z>ofh4cK?;duB&UsU-A?wb8P3edO6Sj+QJ|InK-THlur09%$5FfS#RBUfs`8?C%jl& zZBV)ViI$O&)VU=OlbUB{?0E6!th|Wl>(Z^0=fq2I(;zwU=z)ls#J8ow8|~!PE4U=UgUR zS{JRq*4-L*`iWzqFz508`|iJN{}|)rI{C>$=PRwZEO&cy?|H9pr_c8NN};*h6pwYR z52Lu2{r<32CtzRmc9CSa8ATjmRtLjf^dC0F4XiRy|(URphuIZhm$u zmv6bml`G7fy7){E?|Tp|x8NVMz2iaIfswvtK$)TT~?F z(&~N+b+7cjnA+gzGG)FJ)9&Un*=6tF{byqGc^P(TTF#8KeP6g6Cf>O1c+UTg-HP3B zr>?d+SuW0IbTq0$DSswwlP-6QQ`Gt1)YNk(2l#dJKWsdGN$+>#U;Qfqrx&ah`LJH1 z>MWyovSUw-xOQ|?nn6}R)4gK`HhtCeU%uSsEF61ycT@cyd$ykcssjE!+6KLH5_|j< z>WevrW0quHmD{{3gY(Ug3@# zk6L;AJb%rJcv2yus#QG2oA-pK?wRt^b76NM&pD{qCg-{0xkwz}uN||^-rxAJdC7&| iS=|DcJ<55X)pgw5B%=8EbdJ`9)iDN3*}{TLb^!oP_aI#W literal 173 zcmdPcs{c2|p5ZSG!=jUNk_G3P1C9zCwOV9seg3I*H;d!}4tw{j|FyXL&n>H(W>|lj z|7YO?10$C9Z=sIy_YPacp*WVXQ0G~lo;{X5v diff --git a/public/assets/js/auth.js.br b/public/assets/js/auth.js.br deleted file mode 100644 index f87cfc8b0d9bf404db3dc7213aeb3f190d0f5856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmcb}u!$i_W|?%n;2z1{qmRF4mn{{YHI@38*^5)*v+^mtWbA9>gPGO z3nw&OuPu3SJ?OmQY6IWU@{WMD{TBq!HSe#vY8vx=^+txo#)?l7JBw_rJ|E;PFEC{) z*mS=|LnVfHao}lACiYg9tLOPrR^-0r%w^K9o)@dN&pV$}#4Ii_{m<0h3f6aa&D(1k zv-UJgR@!2Q#TNoEWnL-QdmeAMuk72y^AB78$(IFcT#5e3d)nzzj!jrlJ>!AsqnoYe z!tYJme(;~Al9xj~Z~Y`!r;oyWt*xJZIxu|J7vqP%qIx+2Tm)U8k3< zB@>+NcEwvHZf)U^to!)DYp?IOXN{)+*Q=Ia`hSeACq=Jf>nUl~=e~N6=iPK~*NXoZvo?!=n;YNuFwXT!)%T9`4-;GWEP1eFiO8DdCs}7$(^^#T z{Ombc{IcuAnk|;qh6}r#89vUrHd#eStAcaIxwpF01n=pY|FBm2m@4;kZ`)MisN=rs z6Bvvq9`031l0CZU2CKiC$UJF@PfNL77qLI^2>86VrdqM)GLzWhCyZRb1MV3fykxgS zL(*1p*H*6$IZCq+Yh-CvNb&3D`)Q)bu z6a2!tKEN(Yjg#?%+mwp}TlajMr}=*Q>O+pb^F5wz*=EmK{?6Db{^xs^#7$POj!C?_ zc>UGHody@QYzlZ&QTRiq-5 zcb^DH@QjQi29tf(?H$3#W~I2b9(e5CofEx?Bg^Sb;kvEbQ`x6>H=Niz$KS;&e0#w9 zl~2ki%cn1%6gba5*QYO-#WbXhvD$3z#CgZhvAD_}aK0C#a)sB|%VE~a4}Z*^KL3|) zj5VCc`psxhM1;=qXc;+KkIKv=vHhXx{W~jz=hZKnyFf?T|EA>v9!ZDIYJ18btU1=k z^P^<HDfH zz^1D0tXrp7Z})*$zf1~tL~qvZ`Z~#K{;i%_d8%)@&IIzs{M4U#_+Zo*%a8YNEH#*(&t>P|PrtG0Y*c#pzDVB6E0gbiiksja zuNNS`(|A)zQ|vzTkBj226gi&qtvc47B72%?XQE#^AvD*~EuxUZiBu<@T{fDPIQueRwRL*eO+{JMt zoy$r4T+hjv%RAcwmjwCt$7vsA?>-jjed7c#-{SbjIXcHUQeplK%hz diff --git a/public/assets/js/auth.js.zst b/public/assets/js/auth.js.zst deleted file mode 100644 index 9c96525de9317ad98aea69f606489a987ce5e9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1538 zcmdPcs{c2|QFN(3Ls-ci^$jvR8Mo|PsN$#n%(GK9b@Fq^CN8UrMHgJxZ@Jii$>!*} zbLYDLar5;vOlIg~P>{aeazr=JO>BSE?Qbt$RON+7T@JaL?-in} zq1T_d&zIX~-r3&U_*-Ppwe2q@d%oS{iaTzlnzdoo=B6!0g7asqIbKN5j`)9DCSdi% zRXg6OvL!yt`!AV&H7=)eOAKq^otXJEcm7GK_-*4sAkNEG%g+G)_@_UZSO8`r$6 zDzqHe)vK3oTX`o&=hZ@;?IxF(Y&yOo|3K!$2Z=>9grsy2o=NvoxeeV;^`9*)s`dxFjvfIqO_jDs8n_$Qcg%edCQ)BMVzxZ&Wx=(uIsCnqjEA?kYa=DOoIneTqz&nK#4 z#cyW4({Iy*N#u%VsT^NvaB$m+4QdHQahE;>s$C??)NmpX->SAX7QmibPaDLXTgx%ypAfkuUQj4X#zL8ICd&2`r6Rd!rb`FMPZ z_|$9PUc{W}DQ;f#toHUr-v3uu-~0NdTYvJ$4XWEK;|GKh%;SsD{AiL@TuJrVpWNI84k?8m9+7l8>@w+ zU$s2boI52eL{rKw?_DoiX)cz|AZp1qQ8z2&$4+H~Enfwm6_04G zC~ITl$bULL-Ta{y#|zzce-)ndeL{*O||6XSn?iy8mnPeh0?Y>gOCJ-i7bfNl7afNoO{>>>SGSWz|c$ z31=E+P0{b%sx)F1`5|r(1PwH@l#rpT)E4&7lD`?NST&JTLwHQ+J(^ z?VFk?+btP2HTUM2uAC#55$o5IyQ+9g1W^W1J zS5>{M^=ZesExyKAt!7;HuH)o6BfZ2TLD-G=IN!-zlk}vGj(R;+O=@~`SSNcAPj~!; zFdhx*CXIs&7tJ;PTvHX+|8du`b$=e*_N@K3PtqnzIB8#I@Yl$LJ112J7&^=`+Bls# zbB49fj3W8UMaQ#GSZ$cb=(MT3_LxgBn`P&j-mD1>4aXI43V0`;nIuv!bi#SsrIb4k z$M-!xU&pjtEnaY@S(%!GisY+}`sUL+dTNw6{@A~J?T(t4PaZ|o37)F@mJn1C{OQSy RHL4lETbOyWc79sj3jm`B_2&Qp diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 00000000..20fa33a1 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1,15 @@ +import { Auth } from './auth.js'; + +let auth = new Auth(); + +document.querySelectorAll('.add-passkey').forEach((el) => { + el.addEventListener('click', () => { + auth.register(); + }); +}); + +document.querySelectorAll('.login-passkey').forEach((el) => { + el.addEventListener('click', () => { + auth.login(); + }); +}); diff --git a/public/assets/js/auth.js b/resources/js/auth.js similarity index 100% rename from public/assets/js/auth.js rename to resources/js/auth.js diff --git a/scripts/compress.sh b/scripts/compress.sh index b7743ab7..3f2f1ad4 100755 --- a/scripts/compress.sh +++ b/scripts/compress.sh @@ -16,6 +16,6 @@ if ! (( $+commands[zstd] )) &> /dev/null; then fi # Make .br files -fd --extension css --extension js --extension map --search-path ./public/assets --type f --exec brotli --force --best --output={}.br {} +fd --extension css --extension js --search-path ./public/assets --type f --exec brotli --force --best --output={}.br {} # Make .zst files -fd --extension css --extension js --extension map --search-path ./public/assets --type f --exec zstd --quiet --force --ultra -22 --exclude-compressed {} -o {}.zst +fd --extension css --extension js --search-path ./public/assets --type f --exec zstd --quiet --force --ultra -22 --exclude-compressed {} -o {}.zst -- 2.49.0