diff --git a/.env.example b/.env.example index 7d6bd0e3..dec95469 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,7 @@ +# Enable debug mode +# Useful for debugging +MSZ_DEBUG=1 + # Database connection setting # This uses the Index library's DSN syntax # Currently Misuzu only supports MariaDB, or Null of course since that does nothing diff --git a/build.js b/build.js index a711b94c..06885966 100644 --- a/build.js +++ b/build.js @@ -3,21 +3,13 @@ const { join: pathJoin } = require('path'); const fs = require('fs'); (async () => { - const isDebug = fs.existsSync(pathJoin(__dirname, '.debug')); - const env = { root: __dirname, source: pathJoin(__dirname, 'assets'), public: pathJoin(__dirname, 'public'), - debug: isDebug, - swc: { - es: 'es2021', - jsx: '$element', - jsxf: '$fragment', - }, - housekeep: [ - pathJoin(__dirname, 'public', 'assets'), - ], + debug: !!process.env.MSZ_DEBUG, + swc: { es: 'es2021' }, + housekeep: [ pathJoin(__dirname, 'public', 'assets') ], }; const tasks = { @@ -51,5 +43,8 @@ const fs = require('fs'); const files = await assproc.process(env, tasks); - fs.writeFileSync(pathJoin(__dirname, 'assets/current.json'), JSON.stringify(files)); + fs.writeFileSync( + pathJoin(__dirname, 'assets/current.json'), + JSON.stringify(files), + ); })(); diff --git a/composer.lock b/composer.lock index 2385af28..15fe455a 100644 --- a/composer.lock +++ b/composer.lock @@ -501,11 +501,11 @@ }, { "name": "flashwave/index", - "version": "v0.2504.31541", + "version": "v0.2504.51944", "source": { "type": "git", "url": "https://patchii.net/flash/index.git", - "reference": "c2bcb0611bee08a9a21930b92c96cc85304562b6" + "reference": "5c3d4c90724ed45df09c8665571a84eb44c9288c" }, "require": { "ext-mbstring": "*", @@ -554,7 +554,7 @@ ], "description": "Composer package for the common library for my projects.", "homepage": "https://railgun.sh/index", - "time": "2025-04-03T15:42:01+00:00" + "time": "2025-04-05T19:44:44+00:00" }, { "name": "graham-campbell/result-type", diff --git a/misuzu.php b/misuzu.php index afece484..9fdb951a 100644 --- a/misuzu.php +++ b/misuzu.php @@ -14,8 +14,9 @@ $msz = (function() { try { \Dotenv\Dotenv::createImmutable(Misuzu::PATH_ROOT)->load(); - if(!empty($_ENV['SENTRY_DSN'])) - \Sentry\init(['dsn' => $_ENV['SENTRY_DSN']]); + $sentry = Misuzu::env('SENTRY_DSN'); + if(!empty($sentry)) + \Sentry\init(['dsn' => $sentry]); $whoops = new \Whoops\Run; if(Misuzu::cli()) @@ -29,11 +30,11 @@ $msz = (function() { return new MisuzuContext( $timings, - $_ENV['DATABASE_DSN'] ?? 'null:', - $_ENV['DOMAIN_ROLES'] ?? 'localhost=main,redirect,storage', - $_ENV['STORAGE_PATH_LOCAL'] ?? Misuzu::PATH_STORAGE, - $_ENV['STORAGE_PATH_REMOTE'] ?? '/_storage', - $_ENV['TEMPLATE_CACHE'] ?? '', + Misuzu::env('DATABASE_DSN', 'null:'), + Misuzu::env('DOMAIN_ROLES', 'localhost=main,redirect,storage'), + Misuzu::env('STORAGE_PATH_LOCAL', Misuzu::PATH_STORAGE), + Misuzu::env('STORAGE_PATH_REMOTE', '/_storage'), + Misuzu::env('TEMPLATE_CACHE', ''), ); } finally { $timings->lap('startup'); diff --git a/package-lock.json b/package-lock.json index 9b03128f..f6bff5e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@railcomm/assproc": "^1.1.0" + "@railcomm/assproc": "^1.2.1" } }, "node_modules/@jridgewell/gen-mapping": { @@ -67,22 +67,22 @@ } }, "node_modules/@railcomm/assproc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@railcomm/assproc/-/assproc-1.1.0.tgz", - "integrity": "sha512-i5dcFv4XtUsJTAT7PB/rqzN3sPnMYOOFvyRyTt6xlfM/+AFhYXHxbhtcq80UsIBpuWDADXctjZ1Qk9x3AYI96A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@railcomm/assproc/-/assproc-1.2.1.tgz", + "integrity": "sha512-eUYOsgfnOqY5O5J9qmkgjS07CMFodM7s/h5EFZUWuZZkH2voqtaJG0DYVi0ThsNiPBDnthGfMuX9pSB84uqP/w==", "license": "BSD-3-Clause", "dependencies": { - "@swc/core": "^1.10.17", - "autoprefixer": "^10.4.20", + "@swc/core": "^1.11.20", + "autoprefixer": "^10.4.21", "cssnano": "^7.0.6", "html-minifier-terser": "^7.2.0", - "postcss": "^8.5.2" + "postcss": "^8.5.3" } }, "node_modules/@swc/core": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.16.tgz", - "integrity": "sha512-wgjrJqVUss8Lxqilg0vkiE0tkEKU3mZkoybQM1Ehy+PKWwwB6lFAwKi20cAEFlSSWo8jFR8hRo19ZELAoLDowg==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.20.tgz", + "integrity": "sha512-2F0+bQs7+pwbudsxRffLdfpGCQX4Ih5k88f7LqTfj2oC7aTrv7FssduOvcAvfVY/InZmyYEblKl1rqg8bvzrZQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -97,19 +97,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.16", - "@swc/core-darwin-x64": "1.11.16", - "@swc/core-linux-arm-gnueabihf": "1.11.16", - "@swc/core-linux-arm64-gnu": "1.11.16", - "@swc/core-linux-arm64-musl": "1.11.16", - "@swc/core-linux-x64-gnu": "1.11.16", - "@swc/core-linux-x64-musl": "1.11.16", - "@swc/core-win32-arm64-msvc": "1.11.16", - "@swc/core-win32-ia32-msvc": "1.11.16", - "@swc/core-win32-x64-msvc": "1.11.16" + "@swc/core-darwin-arm64": "1.11.20", + "@swc/core-darwin-x64": "1.11.20", + "@swc/core-linux-arm-gnueabihf": "1.11.20", + "@swc/core-linux-arm64-gnu": "1.11.20", + "@swc/core-linux-arm64-musl": "1.11.20", + "@swc/core-linux-x64-gnu": "1.11.20", + "@swc/core-linux-x64-musl": "1.11.20", + "@swc/core-win32-arm64-msvc": "1.11.20", + "@swc/core-win32-ia32-msvc": "1.11.20", + "@swc/core-win32-x64-msvc": "1.11.20" }, "peerDependencies": { - "@swc/helpers": "*" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -118,9 +118,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.16.tgz", - "integrity": "sha512-l6uWMU+MUdfLHCl3dJgtVEdsUHPskoA4BSu0L1hh9SGBwPZ8xeOz8iLIqZM27lTuXxL4KsYH6GQR/OdQ/vhLtg==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.20.tgz", + "integrity": "sha512-Sc06h6pwMhQagU7vz92b7wwQTIibTiqRE4y/XjkvurSbjSarrtSZR4OKkrdNwUkSy1HlQE4NhKQf7tmLeQ7PhQ==", "cpu": [ "arm64" ], @@ -134,9 +134,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.16.tgz", - "integrity": "sha512-TH0IW8Ao1WZ4ARFHIh29dAQHYBEl4YnP74n++rjppmlCjY+8v3s5nXMA7IqxO3b5LVHyggWtU4+46DXTyMJM7g==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.20.tgz", + "integrity": "sha512-kHANJrgbqaGzUyTectNfLyhnHAeDGGVSRXYyPVAx6x0nuLOnRhKbuSyZY42UEN1IgHauaADCzcd+HiiMv/rgRw==", "cpu": [ "x64" ], @@ -150,9 +150,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.16.tgz", - "integrity": "sha512-2IxD9t09oNZrbv37p4cJ9cTHMUAK6qNiShi9s2FJ9LcqSnZSN4iS4hvaaX6KZuG54d58vWnMU7yycjkdOTQcMg==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.20.tgz", + "integrity": "sha512-FXllEBeAwU6FNIZzo+u1LmHGaHzwAKzz7tWRkUOqBKjKr20Ot4KGS3xlz2qgV2NESFHAisdHja2P2rcQWqtZRg==", "cpu": [ "arm" ], @@ -166,9 +166,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.16.tgz", - "integrity": "sha512-AYkN23DOiPh1bf3XBf/xzZQDKSsgZTxlbyTyUIhprLJpAAAT0ZCGAUcS5mHqydk0nWQ13ABUymodvHoroutNzw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.20.tgz", + "integrity": "sha512-OsYMFyJzUM0K8a97tu6KxZaCob3vr+UknVqHO09QwechX+rdX4euWm7Lte4d1B+7SBfokhw7ghLZsNTQfRw9pA==", "cpu": [ "arm64" ], @@ -182,9 +182,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.16.tgz", - "integrity": "sha512-n/nWXDRCIhM51dDGELfBcTMNnCiFatE7LDvsbYxb7DJt1HGjaCNvHHCKURb/apJTh/YNtWfgFap9dbsTgw8yPA==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.20.tgz", + "integrity": "sha512-fbSWOQ5ZZ7sWodoC6GnzV9RhbImdxoH8b14K1tnHCWJXolzTH40/4JKf/koJ3r24nm1PtsqX9OUxRsOXYAy5dg==", "cpu": [ "arm64" ], @@ -198,9 +198,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.16.tgz", - "integrity": "sha512-xr182YQrF47n7Awxj+/ruI21bYw+xO/B26KFVnb+i3ezF9NOhqoqTX+33RL1ZLA/uFTq8ksPZO/y+ZVS/odtQA==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.20.tgz", + "integrity": "sha512-OFU53idbY8KA1RkNzZBi0FpoRPSn/anv4N7ZzGZGk664UoFwMbSL+XHGocJzhV9G/VNGH7bMBmgoVWk72nn5hw==", "cpu": [ "x64" ], @@ -214,9 +214,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.16.tgz", - "integrity": "sha512-k2JBfiwWfXCIKrBRjFO9/vEdLSYq0QLJ+iNSLdfrejZ/aENNkbEg8O7O2GKUSb30RBacn6k8HMfJrcPLFiEyCQ==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.20.tgz", + "integrity": "sha512-GZbqXEc09nIarkGMXc2P4Hf2ONb1vre22X7Se9CCeU/QtWYRU/H1a2TFnYgBKzNVOH65Dd/XYXcuy+tM1aw1iw==", "cpu": [ "x64" ], @@ -230,9 +230,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.16.tgz", - "integrity": "sha512-taOb5U+abyEhQgex+hr6cI48BoqSvSdfmdirWcxprIEUBHCxa1dSriVwnJRAJOFI9T+5BEz88by6rgbB9MjbHA==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.20.tgz", + "integrity": "sha512-i0H2MeK8krEd/YeiGz0GHtNL9wSGfAPXiouh8aRNV/u+w4vPaaRqnXwv/yzAW+D2vPpKJBhOwmNFFzdgTJ5mWw==", "cpu": [ "arm64" ], @@ -246,9 +246,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.16.tgz", - "integrity": "sha512-b7yYggM9LBDiMY+XUt5kYWvs5sn0U3PXSOGvF3CbLufD/N/YQiDcYON2N3lrWHYL8aYnwbuZl45ojmQHSQPcdA==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.20.tgz", + "integrity": "sha512-/7e3X7EGO8uOvAUP+YKJTdoR2JR5vdiewDOnDS9FFXj8yr9x6/oDFLd92Sp9NglF+aXuqAo33IfH2OTz1MR+Ww==", "cpu": [ "ia32" ], @@ -262,9 +262,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.11.16", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.16.tgz", - "integrity": "sha512-/ibq/YDc3B5AROkpOKPGxVkSyCKOg+ml8k11RxrW7FAPy6a9y5y9KPcWIqV74Ahq4RuaMNslTQqHWAGSm0xJsQ==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.20.tgz", + "integrity": "sha512-rcZpt5uiVNTs/Se+CYBoaDphafFJcsqXo3DNmfkJZoDZUb4PZqxu61p4Qa+lvFDQlRragrlLRpGQM9qnLNd4iQ==", "cpu": [ "x64" ], @@ -417,9 +417,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001709", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001709.tgz", - "integrity": "sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA==", + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", "funding": [ { "type": "opencollective", @@ -703,9 +703,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.130", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.130.tgz", - "integrity": "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==", + "version": "1.5.136", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz", + "integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==", "license": "ISC" }, "node_modules/entities": { diff --git a/package.json b/package.json index e7846198..56604fae 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "@railcomm/assproc": "^1.1.0" + "@railcomm/assproc": "^1.2.1" } } diff --git a/src/Misuzu.php b/src/Misuzu.php index 40d47776..67c03050 100644 --- a/src/Misuzu.php +++ b/src/Misuzu.php @@ -41,11 +41,15 @@ final class Misuzu { return sprintf('%s/%s', __NAMESPACE__, self::version()); } - public static function debug(): bool { - return !empty(ini_get('display_errors')); - } - public static function cli(): bool { return php_sapi_name() === 'cli'; } + + public static function env(string $name, ?string $default = null): ?string { + return $_ENV[$name] ?? $_SERVER[$name] ?? $default; + } + + public static function debug(): bool { + return !empty(self::env('MSZ_DEBUG')); + } }