diff --git a/.browserslistrc b/.browserslistrc index 09949bb..2934433 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. [production] node >= 20.9.0 diff --git a/.dockerignore b/.dockerignore index 465a025..dc076d5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Locals diff --git a/.env.vault b/.env.vault index f9a1985..96685cb 100644 --- a/.env.vault +++ b/.env.vault @@ -8,12 +8,12 @@ DOTENV_VAULT_MAIN="3rfi+ClkONvfHPiU9FTBcC1+Um/L8QeM9dRw1jFzEqzZXw==" DOTENV_VAULT_MAIN_VERSION=1 # dev -DOTENV_VAULT_DEV="4MvP9k10/+3AZqcp3PPB9Zrbd404BpZMJNm0wd+KXWI3ZanZ8g4s4y5CCiADbgbNCbn5hxLXPuLognubT9W2yOS5fx9p5JD+mFA99bD+hysAAehx0TIpXuxLVFCVyylZwehktM84A7TsvuMkljb8AMBBa4lJfYOuK1JMFndU/bfNjkrYqRJBFf5qVs+cs0EMhSPnVH8Y8R1U33EsUpRvgk6PwT8Kk52cPDvNzuwznr6zaRw5ESfFuDsIWSHdTrKpPxRi+JveOvhqyT89t4gCsOsAdOr3exmfeCxbXuWUM1rMnDq8hg7HkCbEjleepNFo9NeWNITMo1fWuI2ROJVKbE+YNskOKPJLquunu39IytnpjcfzrV55M/VwQ5hsYjwt/5XOUbdy3bmcCBh9exgPZwqiDNLpuC1g6B2uw8+gZpAQWNBp5uy2A6tx7CShgr3SJrY4l8qKx614StHRsTiac/PgVJotlhLyiIPKpXQ/REFrc46otWgtuii9vU/Bu0l0FULYom+VTWvRDKv6z1X9UEu1e0RzAQtoCtr9fj/QHslnI3RsJ5h9GZywtUzcHf6n7Gi+Ni5qco2coQNs9aUFCMmgvt+AqIeuXOeRi+QNiy/rYq7XcG0hxHMjN8DZHUOpovR+u6BOSXB+JbD1c7dgEzv25nruzd3P5hBC8jnxOr7qK///Rr00sqB8cqWPsEu+s3tJdJYSdQXf0znpT1JAMQESpaVf/4bIBfxHVWsWMSeCSbIsPLiSFGXudWHxHi8U9DF0KQFrchImZrRCSu6KGkvOl9vGURB/NC39jEzqrnUk5jmxdutz4+fYUPq+O3gQANxJmUcr1T0OCo0Hkpcttq2XC26e9QLYbuoTYFJFFiWxgTKQoJR0w387eGlH" -DOTENV_VAULT_DEV_VERSION=293 +DOTENV_VAULT_DEV="hc/Lxs6t9MMXmnysXiHN0qnT/HIOwEhBDPvnS3n+9IDIQbba7yyDxsMiODpgb6SeZzlC62dX79O9p7ECR1Dhu9oj4er7b6V7muf9yDXHcbR3VTHZNqF3SLD19ay/M7gUJWAPgeBCsfiyiUXQwdo6phEbaggFb6NjfkPPodfkd/5NvUm79kCWi5qGHyHdyRubsOeENSVITKyadRDabgFws6bSnGdn8GniFd6OjuYRiA914Z4U5i2LPWWXpCp8S8yCEiwTl5FyYY3aSAAzil9BTxJxd7DXbVQ6tpF8Xg3KUnFtxFMw35D4TFSKKY25uw/5/NV704USboz8HLgyHBTs+b7lZCyCKRtz5CQrsEEG6YSxwnepKMuq8rvvvzCv7hoQjFGOHldnu4MxLw9PfhPnHr3z6msegJwpWPulLLKIizNMlJ+5E2tubn3Yqkof1AI9KpuY74U++kL36PXOISbIK1fuXisfEni7TRe95Px15AphACWZ8j+2NvVoK6qKqCrSa1CFuNZNBFFqIT115wQrq/U/kzAzPEv30AmYi4ogSPu3AemDf0Lw77k8asj8aQKpidaKUNjhnz3ptddt4kWzg+39KIjbmtlJnjJKtFxfJv5YcPYK0xwWj3rxkAM1ukdwHDc4bEXXRf4zZvJrMO4UP18QW/rPYWILiyvlIwT5bn7/MfTnWbP47TEoXwjU1D9jT1zsW2REbuCwNs9LuD2RTOplv9UNSOLu4b0S8pqBDHSSnmNXmt/x3yIlxjFB9GLmCxUVAbCV/KFTGQTbFbvTxm1XGO8+pyHZ8UKE9Q2DREfHHkaeHQjeDxTKTHklseV/EAcrVwR9OadOFuYX78L8kmib1rirThhn49IIQa/ajHdQYhBpLrX6P7GEJRu7" +DOTENV_VAULT_DEV_VERSION=295 # ci -DOTENV_VAULT_CI="Mwnycq1395m+t3q5qTWCMOUkGSpb1PDJPxNFp0fKDiCwZ9DDXnlXfnk3r/+o5Ul95XNjJzM5QMAE1mNU/1pBPCJAU7mj4ObxFo++r502GaLYG+E0t/jZRyBu/73207LPVP8Tq2KuAj1n9vox5hega8EA4x3NXp57L2qi3YotG3v7L2ARe/j9RN6b6MBv+h2waz3CRiquPqdxQJjG94/HiINW3Oz3sWmSQbIi2bF9OEKmOhZWsZ9LagofS3y7XScQ8W+JSXZb1JKwFjB4CYe6CcGy+UQ3XeWD2Bst4nzhTtWqJyFlWfut2blvG3dRvOT6djLE8g1/3l4pk+Av69raRpnpPsYonpd7sRA00tKTaLwnGBzgjr5S61fzYLWXmVZuXagF26ZvOoOJ2hkytv3QkyUO1cHOfz3fbT1g87NjDzIL+IcslGI2eAzA6lUpPtYvvLlg9hYq7w20srZVJvKm0FQgbHS8N8THy94Q4za1hNAJCZuNjfqodvPCM03WDU1FwTcdd3qTtPfOVAD6D18Rc3RXqLbDkzBStn5uIF/Ndtu7jMUnZ97OamUOI1dgehvZlti96bzsjWqA42cDDbIDDr5jA4kq4cL4TmvOaU0zVkY22Zp/BqsULlOClfpbiZbxZUHaglCQiydYTPMYiFdUSINvNMvOdpEczVzckeLCjrXUCoQr9HvDQLaBOGjmfdUhRC+S29Px4erny3djG74vIWThnu2jbotijeOoQNl18AMZFCf2O8kUPUjYz0M+w6ghLQOCFeiw79vqW3n+e5mX+aw3cxP4H5CdfgHloIep1SaneWvCLNAeWzOrKWMEty4pzl/bXSIifNsxZxwaSE/+A4Sg0Jn2rni3zJ7boakl1UDvhorD8DsYT4SVZguK" -DOTENV_VAULT_CI_VERSION=293 +DOTENV_VAULT_CI="gt5qADKlZ3y+xepqjk2FS8aY6Z3ccz7ZiVUa3vCiF6e91zAEfdK/qSHYLZw5Sq2HTsXVGDYp7fSrdmBY0mmpPzFpjOyKTnao5Jkpo7AMji5LAPjUu8spytr7EcW8TGiryiKJrQA1BjmBLA5A/yDCq6Xlf1CNuZDsi1x84MHSY4VspQ5QCMDp6aZIjpj3FpHYsb92jxpkZnsjW2BddEvE0xtQdABHnQg1aePaCTO7zakoFezEAaOJYPekgTi0H5taKm4/fCsqmchp1ghRIrCyveRzu1H82Sh2l16zP6myvoJduemhsu5E/9q4sxM+1X9e6XF0jtlB3+pR+GWkQyi0wEjQvTfdtD1Qbspqcp2VKv4JKHD7o6WUEk3micuFAVRCPDyXwnVCKZQgLMETj5Uw5rNoLJdLt2EpON53KZpxVk3db0rQNUjzgpHTyivwiLNMXx0hbH6tFBHx8MlTt5P/RoGj6BTPPEitzfKoMlvtAeahIM9uXFFVCEmtVQ85nf1SmoPo0pZXFz1NaiFDXoFZtPoCJlxQwqvRM3HhhF7WSOuh0BgDc8Px8TP0ffIjQnwrSEPdN3n7BDjs230OwdCVFGGEIB+HApYfhz8nnom1mY7faef558gH1eeRcJpQPQXAxBJzveXoT4dOVTIiIyWC/cz3A+SwZahlA6208bVUo67+aZpoJoJTlTI0lZSkzVeeQtv4KvjVzhaVuB4jXGRKnmS/04IOFjWI8Xn7dZjA9NrGdDe/puEi0ZW8Pq3Xbg4/dKQnxQf2Buey6y/h0g9XRHb98OP67LSq48GOQI/XdueeuzfIf6pgpv8cuLOjob2/hLOEgRSCaJS+0jnKrvyqldYudwd+qa+RlKW71npMZfnAsMbuxu6Wig+xwZ2x" +DOTENV_VAULT_CI_VERSION=295 # stage DOTENV_VAULT_STAGE="bfqZYD8oVLWMZ0JR5LICV+sB/btaXavszxZLxTfwSH8U5fg=" diff --git a/.gitattributes b/.gitattributes index e285c44..6371cb6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Default diff --git a/.gitignore b/.gitignore index 72dbaf8..05bf934 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Locals diff --git a/.npmignore b/.npmignore index 44fa0cd..84fc44a 100644 --- a/.npmignore +++ b/.npmignore @@ -25,7 +25,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Locals diff --git a/.prettierignore b/.prettierignore index e927fca..3b85f88 100644 --- a/.prettierignore +++ b/.prettierignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Packages diff --git a/.vscode/settings.json b/.vscode/settings.json index 9e0f3e1..4ae7520 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,7 @@ * @note This entire file will be updated automatically. * @note Instead of editing here, please review `./settings.mjs`. * - * Last generated using `./settings.mjs` Mar 16, 2024 6:34 PM UTC. + * Last generated using `./settings.mjs` Mar 22, 2024 8:39 AM UTC. */ { "editor.formatOnType": false, diff --git a/.vscodeignore b/.vscodeignore index 66da5d3..14790d8 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Mar 16, 2024 6:34 PM UTC. +# Last generated Mar 22, 2024 8:39 AM UTC. # Locals diff --git a/dev/.files/typescript/config.mjs b/dev/.files/typescript/config.mjs index 391e1dc..e36f772 100755 --- a/dev/.files/typescript/config.mjs +++ b/dev/.files/typescript/config.mjs @@ -98,6 +98,7 @@ export default async () => { 'dayjs/plugin/advancedFormat', 'dayjs/plugin/customParseFormat', 'dayjs/plugin/localizedFormat', + 'dayjs/plugin/relativeTime', 'dayjs/plugin/timezone', 'dayjs/plugin/toObject', 'dayjs/plugin/utc', diff --git a/dev/.files/vite/config.mjs b/dev/.files/vite/config.mjs index 2aaa34e..7ab76e0 100644 --- a/dev/.files/vite/config.mjs +++ b/dev/.files/vite/config.mjs @@ -318,7 +318,10 @@ export default async ({ mode, command, isSsrBuild: isSSRBuild }) => { }, optimizeDeps: { force: true, // Don’t use cache for optimized deps; recreate. - esbuildOptions: { plugins: [await viteMDXESBuildConfig({ projDir })] }, + esbuildOptions: { + external: ['cloudflare:sockets'], + plugins: [await viteMDXESBuildConfig({ projDir })], + }, // Preact is required by prefresh plugin; {@see https://o5p.me/WmuefH}. ...(prefreshEnable ? { include: ['preact', 'preact/jsx-runtime', 'preact/hooks', 'preact/compat', '@preact/signals'] } : {}), }, diff --git a/package-lock.json b/package-lock.json index a6e779c..bb70208 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@clevercanyon/utilities.cfw", - "version": "1.0.299", + "version": "1.0.300", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@clevercanyon/utilities.cfw", - "version": "1.0.299", + "version": "1.0.300", "cpu": [ "x64", "arm64" @@ -17,7 +17,7 @@ "linux" ], "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.372" + "@clevercanyon/dev-deps": "^1.0.373" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -27,7 +27,7 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.918", + "@clevercanyon/utilities": "^1.0.923", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" @@ -144,113 +144,42 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", + "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -276,14 +205,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -350,12 +279,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -414,9 +343,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -441,13 +370,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0" }, "engines": { @@ -455,14 +384,15 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -540,9 +470,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -612,12 +542,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -714,12 +644,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -729,9 +659,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -755,18 +685,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", + "@babel/parser": "^7.24.1", "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" @@ -838,9 +768,9 @@ "dev": true }, "node_modules/@clevercanyon/dev-deps": { - "version": "1.0.372", - "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.372.tgz", - "integrity": "sha512-dmqD6SOU3Kac4Mo8difrWjXkkeQbtQJGnmdELFa2pobm8mvX+wnVj6prpJj1wDuLuCFHbLQ/0111aEHODSIXdg==", + "version": "1.0.373", + "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.373.tgz", + "integrity": "sha512-fLEq1zr2moio7Lf0z5HUoBFCKoKd6nO7IjPzKC2vHefHIRaC7BMa6GnNN/9OHscw3pAj4e+XvU6+wr/7g6UJ8Q==", "cpu": [ "x64", "arm64" @@ -851,11 +781,11 @@ "linux" ], "dependencies": { - "@clevercanyon/madrun": "^1.0.191", - "@clevercanyon/utilities": "^1.0.912", - "@clevercanyon/utilities.bash": "^1.0.205", - "@clevercanyon/utilities.cfp": "^1.0.241", - "@clevercanyon/utilities.node": "^1.0.200", + "@clevercanyon/madrun": "^1.0.192", + "@clevercanyon/utilities": "^1.0.922", + "@clevercanyon/utilities.bash": "^1.0.206", + "@clevercanyon/utilities.cfp": "^1.0.245", + "@clevercanyon/utilities.node": "^1.0.201", "@cloudflare/workers-types": "4.20240208.0", "@eslint/js": "8.48.0", "@iarna/toml": "2.2.5", @@ -967,9 +897,9 @@ } }, "node_modules/@clevercanyon/madrun": { - "version": "1.0.192", - "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.192.tgz", - "integrity": "sha512-c6wZReLw8F2qtlZapZI3ttEl9/Y/TlztTrV2DCKXbn6oK3Dl3Afq/3eJprFq3uE72UgwzHr5gLqkyHCr3iR6Vg==", + "version": "1.0.193", + "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.193.tgz", + "integrity": "sha512-Nlx1BsLgWfkTtyLw4Np29w+gsUDg9mWOiUGiU1KmLQILAo9lzjiAEfWNUNI7FCIZqXMGMjmPwbeJf15chI2QYg==", "cpu": [ "x64", "arm64" @@ -980,8 +910,8 @@ "linux" ], "dependencies": { - "@clevercanyon/utilities": "^1.0.912", - "@clevercanyon/utilities.node": "^1.0.200" + "@clevercanyon/utilities": "^1.0.922", + "@clevercanyon/utilities.node": "^1.0.201" }, "bin": { "madrun": "dist/bin/cli.js" @@ -995,9 +925,9 @@ } }, "node_modules/@clevercanyon/split-cmd.fork": { - "version": "1.0.137", - "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.137.tgz", - "integrity": "sha512-Guf/Ui4nksj6nnCjPAVVcEKJUtCUGA9EvozkeFLW0Lr+F28mETK76PDrvJaLpR40e4nYQJVcTjpLZyXve6whNQ==", + "version": "1.0.138", + "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.138.tgz", + "integrity": "sha512-dou7sm1noEsUgpXJkpy0+Tmauv/6OyE7qkn5tSl/1tcmNUkvvmBHRMXn4q8NgpSCpTw2qY4NdGQJEQ6/T6VY4g==", "cpu": [ "x64", "arm64" @@ -1017,9 +947,9 @@ } }, "node_modules/@clevercanyon/utilities": { - "version": "1.0.918", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.918.tgz", - "integrity": "sha512-XhMFcmH+VE6qkPHAZunOB+PANwsDEgrU6GLJksJqWWqQqUhqONnBwxFND9C8ueON5AISIrFQwct/tYJZsvdU4A==", + "version": "1.0.923", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.923.tgz", + "integrity": "sha512-aGGepab2Vh587tj1XVNLv8kIb0mCRuJ61pHYE39GMhZgKXi0wBxYVphkRQAgZzSBhnZnFScCrBpGkIPORjIqbw==", "cpu": [ "x64", "arm64" @@ -1043,7 +973,7 @@ "ignore": "5.3.0", "ip-regex": "5.0.0", "micro-memoize": "4.1.2", - "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.139", + "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.140", "parse-css-color": "0.2.1", "preact": "10.19.2", "preact-render-to-string": "6.3.1", @@ -1077,9 +1007,9 @@ } }, "node_modules/@clevercanyon/utilities.cfp": { - "version": "1.0.242", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.242.tgz", - "integrity": "sha512-lSziHxKl6M9dkDqsKZKCTxl3NfvZUb9HnmhbTc00PVvGhmjzd01TlpRP5pI8HxulQ+IdeGZRI6+z/PToRM84NQ==", + "version": "1.0.245", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.245.tgz", + "integrity": "sha512-aOSalqR+4C/oRLeJVGRSlz0u1CTD4o/+REc+VH/ASqeTBeSMMVgM93/WErg4vQd4EmsLSexNBaTMtGm9XYGbyw==", "cpu": [ "x64", "arm64" @@ -1097,15 +1027,15 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.913", - "@clevercanyon/utilities.cfw": "^1.0.298", - "@clevercanyon/utilities.web": "^1.0.154" + "@clevercanyon/utilities": "^1.0.918", + "@clevercanyon/utilities.cfw": "^1.0.300", + "@clevercanyon/utilities.web": "^1.0.155" } }, "node_modules/@clevercanyon/utilities.cfw": { - "version": "1.0.299", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.299.tgz", - "integrity": "sha512-QrlqzQ9NUL49zQ96JpMaU/dauX7CE4ouCGvXZjyiGbiLEHy0/uSk7sEphiKEQy/xbSYZp4U+jf40wMLMoh8taQ==", + "version": "1.0.300", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.300.tgz", + "integrity": "sha512-gdztfZv+Q/jeh8k0JW95b6KuRjWPTbmprwFcZFXH6Gn5x94ctP0rgLJlUDFEYtuUazmBXZjZ4Ld+NiqmDEwRiQ==", "cpu": [ "x64", "arm64" @@ -1124,16 +1054,16 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.914", + "@clevercanyon/utilities": "^1.0.918", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" } }, "node_modules/@clevercanyon/utilities.node": { - "version": "1.0.201", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.201.tgz", - "integrity": "sha512-mJ/Cn9LJyyy9r0ay7mtVd5YF5oxFaPqqnMLrji66cpbIsAyXu/NYThQr7QYVuBs2cK+/Fl6eB8UZAMNnzBtCng==", + "version": "1.0.202", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.202.tgz", + "integrity": "sha512-qbMUqq0L2gKD32F7/RifsmZ791PZ3Ku1fzklWnOi0uL5hdWZWgJ4QUcxipJCKZJ3ErdcqcXax8+dWNm0jRiocg==", "cpu": [ "x64", "arm64" @@ -1151,8 +1081,8 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/split-cmd.fork": "^1.0.137", - "@clevercanyon/utilities": "^1.0.913", + "@clevercanyon/split-cmd.fork": "^1.0.138", + "@clevercanyon/utilities": "^1.0.923", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0", "archiver": "6.0.1", @@ -1165,7 +1095,7 @@ "globby": "14.0.0", "prettier": "3.1.0", "shescape": "2.0.2", - "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.131", + "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.132", "term-img": "6.0.0", "yargs": "17.7.2", "yargs-parser": "21.1.1" @@ -1549,9 +1479,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.11.tgz", - "integrity": "sha512-z53Pp2tsemiIq72PKu4vjD0CtcQlXdvA22elEHuDOvCIlqphNjd5ZD5HBns/ZjaJF7BjPls2zaAT58hfLyS0MQ==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.12.tgz", + "integrity": "sha512-amPGGDI4Xmgu7VN2ciKQe0pP/j5raaETT50nzbnkydp9FMw7imKxSUnXdVQU4NmRgpLKIc5Q7jox0MFhMBImIg==", "dev": true, "funding": [ { @@ -1564,7 +1494,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -1578,9 +1508,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.11.tgz", - "integrity": "sha512-Jz1R5ZXxpT5FIY95F3VSJtwQYWCYOtCBUBS/ShDxS+fUtd3sAdAtD3a9tAdz3FG3BvkmqtlURyoIhJRu/wfo/A==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.12.tgz", + "integrity": "sha512-qpAEGwVVqHSa88i3gLb43IMpT4/LyZEE8HzZylQKKXFVJ7XykXaORTmXySxyH6H+flT+NyCnutKG2fegCVyCug==", "dev": true, "funding": [ { @@ -1593,7 +1523,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -1660,9 +1590,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.4.tgz", - "integrity": "sha512-jjHP44awnSijgddNJpZEFfmb8csFx+BiYYpX+ydyScWwLzSpve5eLXneu4uIhZmKom+WXLXWc4y7CvOfVLQ2VQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.5.tgz", + "integrity": "sha512-AJ74/4nHXgghLWY4/ydEhu3mzwN8c56EjIGrJsoEhKaNuGBAOtUfE5qbkc9XQQ0G2FMhHggqE+9eRrApeK7ebQ==", "dev": true, "funding": [ { @@ -1675,7 +1605,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4" }, @@ -1687,9 +1617,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.12.tgz", - "integrity": "sha512-F1mOb6MuIMAV7qq9dYLhi2tlmmQn+osCVl+VdDNI+4AO6y3l6dTWmc7XVQMsVxIZCKEZMie9KLtE0PRp3i1UyQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.13.tgz", + "integrity": "sha512-dBbyxs9g+mrIzmEH+UtrqJUmvcJB/60j0ijhBcVJMHCgl/rKjj8ey6r/pJOI0EhkVsckOu3Prc9AGzH88C+1pQ==", "dev": true, "funding": [ { @@ -1702,7 +1632,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -1716,9 +1646,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.10.tgz", - "integrity": "sha512-wYyhFLQ1zkirAhfRxh5BK9WRIJGBb7jtE9H9a2wPOf20kGbS/PmqxHtGmE+o1vSz/MaBIbW+6lqyS16yEzjQJA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.11.tgz", + "integrity": "sha512-c36FtMFptwGn5CmsfdONA40IlWG2lHeoC/TDyED/7lwiTht5okxe6iLAa9t2LjBBo5AHQSHfeMvOASdXk/SHog==", "dev": true, "funding": [ { @@ -1731,7 +1661,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -2078,9 +2008,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.11.tgz", - "integrity": "sha512-nIeOZqTFn/zJXSb70JwUcyUBb9658FED7saZlaZNEEhQ3GYxjRhdlV7hgflNi0FDdqNqaEeeI/B/BqnPG9+Q/Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.12.tgz", + "integrity": "sha512-RNitTHamFvUUh8x+MJuPd2tCekYexUrylGKfUoor5D2GGcgzY1WB6Bl3pIj9t8bAq5h/lcacKaB2wmvUOTfGgQ==", "dev": true, "funding": [ { @@ -2093,7 +2023,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -2132,9 +2062,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.11.tgz", - "integrity": "sha512-YmYGwGLoqZp71wXqjyFuG+JApL+CoZqUZ+MJshlokdqqryKX/zj/NrSrwMTAwB4xSx2DgHJUQK3iWumUse8rXw==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.12.tgz", + "integrity": "sha512-VreDGDgE634niwCytLtkoE5kRxfva7bnMzSoyok7Eh9VPYFOm8CK/oJXt9y3df71Bxc9PG4KC8RA3CxTknudnw==", "dev": true, "funding": [ { @@ -2147,7 +2077,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -3718,9 +3648,9 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.42.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.42.3.tgz", - "integrity": "sha512-JNLJFpGHz6ekjS6bvYXxUBeRGnSHeCMFNvRbCQ+7XXB/ZFrgLSMPwWtEq40AiWAy+oyG5a4RSNwdJTp0B2USvQ==", + "version": "7.43.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.43.0.tgz", + "integrity": "sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==", "dev": true, "dependencies": { "@microsoft/api-extractor-model": "7.28.13", @@ -3735,7 +3665,7 @@ "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", - "typescript": "5.3.3" + "typescript": "5.4.2" }, "bin": { "api-extractor": "bin/api-extractor" @@ -3774,9 +3704,9 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5345,9 +5275,9 @@ } }, "node_modules/@preact/signals-core": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.5.1.tgz", - "integrity": "sha512-dE6f+WCX5ZUDwXzUIWNMhhglmuLpqJhuy3X3xHrhZYI0Hm2LyQwOu0l9mdPiWrVNsE+Q7txOnJPgtIqHCYoBVA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.6.0.tgz", + "integrity": "sha512-O/XGxwP85h1F7+ouqTMOIZ3+V1whfaV9ToIVcuyGriD4JkSD00cQo54BKdqjvBJxbenvp7ynfqRHEwI6e+NIhw==", "peer": true, "funding": { "type": "opencollective", @@ -7322,15 +7252,16 @@ } }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -7490,9 +7421,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "funding": [ { @@ -7510,7 +7441,7 @@ ], "dependencies": { "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "caniuse-lite": "^1.0.30001599", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -7745,9 +7676,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", - "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", "dev": true, "optional": true, "peer": true @@ -7875,9 +7806,9 @@ }, "node_modules/braces": { "name": "@clevercanyon/braces.fork", - "version": "3.0.135", - "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.135.tgz", - "integrity": "sha512-p1Jzy3l/e3BDpJNFfIXD4ZoRYcsL9mHHFNsRgx0htGypA/PAnPRFYU3K96ed3pd35F77PDyRGpYfWQLzkLsqHg==", + "version": "3.0.136", + "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.136.tgz", + "integrity": "sha512-6vFjjnLh1ifaUL79wJKd+mnzA7Br11ZLFOlLTZWNcW8BRO/a4LaZgLB1zN/qzXgVHyPM/T1X86YbJMbZyUQmxQ==", "cpu": [ "x64", "arm64" @@ -7887,7 +7818,7 @@ "linux" ], "dependencies": { - "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.134" + "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.135" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -8134,9 +8065,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001597", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", - "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", "dev": true, "funding": [ { @@ -9563,9 +9494,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.708", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", - "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", + "version": "1.4.715", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", + "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==", "dev": true }, "node_modules/emittery": { @@ -9616,9 +9547,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.0.tgz", - "integrity": "sha512-vmuE7Uoevk2xkwu5Gwa7RfJk/ebVV6xRv7KuZNbUglmJHhWPMbLL20ztreVpBbdxBZijETx3Aml3NssX4SFMvQ==", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -9626,10 +9557,11 @@ "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.0", + "data-view-byte-length": "^1.0.1", "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", @@ -9640,7 +9572,7 @@ "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", @@ -9655,17 +9587,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", "string.prototype.trimstart": "^1.0.7", "typed-array-buffer": "^1.0.2", "typed-array-byte-length": "^1.0.1", "typed-array-byte-offset": "^1.0.2", "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -9740,6 +9672,18 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", @@ -12701,9 +12645,9 @@ }, "node_modules/fill-range": { "name": "@clevercanyon/fill-range.fork", - "version": "7.0.134", - "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.134.tgz", - "integrity": "sha512-P8bWaGZ6TNLWqZaaK/rVBuEtJ9EiYjLwoInxszdJfFUMdHZOUcSDfQua5rPt+rXygl/2vyY4BTQTGswKlNhhEg==", + "version": "7.0.135", + "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.135.tgz", + "integrity": "sha512-kQN75wmIlIZ2GBsoh3c7TT3XJbdm/9jo1iYF/SGImOpNPlY+ovc+lAkLg3Dzv15B5aVabiio1j38PM3XeIoQsQ==", "cpu": [ "x64", "arm64" @@ -12713,7 +12657,7 @@ "linux" ], "dependencies": { - "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.134" + "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.135" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -14296,9 +14240,9 @@ }, "node_modules/is-number": { "name": "@clevercanyon/is-number.fork", - "version": "7.0.137", - "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.137.tgz", - "integrity": "sha512-hm0ZrwjCCuUhvn8rRWjOIoUfCeRrrrBLl8gmRWPdKL8+0kVAwj8xyitNXRYRpuP35VPnrPGgZ17ITcN78DaKMA==", + "version": "7.0.138", + "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.138.tgz", + "integrity": "sha512-BVPco+gwyk5gnvXaXHSiSZIXJ1OJHA+7KSWcSkRWsR6v2ymQcrYSAzrfPL0r6r99+8YE/cYumRl9zxAThPUlyA==", "cpu": [ "x64", "arm64" @@ -20038,9 +19982,9 @@ }, "node_modules/micromatch": { "name": "@clevercanyon/micromatch.fork", - "version": "4.0.139", - "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.139.tgz", - "integrity": "sha512-CKR43EOuMO5dYt97LNejX9rqaGN5Z+Ko0/qEU1CQsSFprKBTPsUNZbr8TImPeQo+sBF5+CMhpdWDpBWgJHsRqQ==", + "version": "4.0.140", + "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.140.tgz", + "integrity": "sha512-/8PSoHqtpufElvZOel7ZlijjGM0I+D9Co9uYYF5Hrrrc7glx17nZ48IwD2lDOTjU2ws6ypgqlCaOdDGgwJABcw==", "cpu": [ "x64", "arm64" @@ -20050,8 +19994,8 @@ "linux" ], "dependencies": { - "braces": "npm:@clevercanyon/braces.fork@^3.0.135", - "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.134" + "braces": "npm:@clevercanyon/braces.fork@^3.0.136", + "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.135" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -20063,9 +20007,9 @@ }, "node_modules/micromatch/node_modules/picomatch": { "name": "@clevercanyon/picomatch.fork", - "version": "2.3.134", - "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.134.tgz", - "integrity": "sha512-TYMbVyRnw3AHXPIS7y2DKwJpJeUYiQw0zoEIuqqdKm+5GpFtdZtgVRlNC6HmgNXKsFMOKkOuNQbHEOeYQ2SeHg==", + "version": "2.3.135", + "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.135.tgz", + "integrity": "sha512-YnRs4mqGA0hfcLHWhg228ylwXJVRar2VDSLSROd9RFOgy6fedQfspuzL1nX0x5myPDa0ykJgu8IeQbsQvCf+rg==", "cpu": [ "x64", "arm64" @@ -20719,28 +20663,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -20750,14 +20695,14 @@ } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -21429,9 +21374,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.6.tgz", - "integrity": "sha512-2GENDVgEk1dt+OdVhPO+zO4Dzj31Xs9EuKgQLbY9RSkKS3jUqnbTAh33bUhKce5JM1ZmsXm0azCb7Bh8j6W6Nw==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.7.tgz", + "integrity": "sha512-VwzaVfu1kEYDK2yM8ixeKA/QbgQ8k0uxpRevLH9Wam+R3C1sg68vnRB7m2AMhYfjqb5khp4p0EQk5aO90ASAkw==", "dev": true, "funding": [ { @@ -21444,7 +21389,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -21840,9 +21785,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.11.tgz", - "integrity": "sha512-toTAozTlBBhqSynSJ32O6ssukZFphS58AAQcVqMA8kG/E04+v+e7E5OKRqq68M/VJaWIeMdpyeBEO51buMrdvw==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.12.tgz", + "integrity": "sha512-flHW2jdRCRe8ClhMgrylR1BCiyyqLLvp1qKfO5wuAclUihldfRsoDIFQWFVW7rJbruil9/LCoHNUvY9JwTlLPw==", "dev": true, "funding": [ { @@ -21855,7 +21800,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^1.6.0", + "@csstools/css-color-parser": "^1.6.2", "@csstools/css-parser-algorithms": "^2.6.1", "@csstools/css-tokenizer": "^2.2.4", "@csstools/postcss-progressive-custom-properties": "^3.1.1", @@ -22902,9 +22847,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -23226,16 +23171,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -27266,9 +27211,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -27311,9 +27256,9 @@ }, "node_modules/spawn-please": { "name": "@clevercanyon/spawn-please.fork", - "version": "2.0.131", - "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.131.tgz", - "integrity": "sha512-gl+A8eJ0bgDx/vApEp64CMEjaAVk6OKADQxhcF6kmRX7uDA1DqOc4ff9HmKoRKL1P7/bk9imJurqkaM13tMJXA==", + "version": "2.0.132", + "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.132.tgz", + "integrity": "sha512-6r9khXYF/YwhQy4i/xd22ftAn4Vg7x0gp/pEu5WN4dWI6d6VBNcdyJw5oLMIVUfpLHaU3MmhAIQMLJIYkqMiNg==", "cpu": [ "x64", "arm64" @@ -27567,14 +27512,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -27584,28 +27530,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -28629,9 +28578,9 @@ }, "node_modules/to-regex-range": { "name": "@clevercanyon/to-regex-range.fork", - "version": "5.0.134", - "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.134.tgz", - "integrity": "sha512-PeAV/CyGbs+ghF2rASonzJz1KejLDvSo4N4eCh2TRcyFfVcQdhr4+F9KEFCFA7FqPdjcfBv8qyekUTZKWAkQOA==", + "version": "5.0.135", + "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.135.tgz", + "integrity": "sha512-WVPVx+2iIpjoxM8XoRqqpxpDDArXsuBXVuGqWy+ixUCY4EokDmc+DC89d+R97kC/13S/ELpvrb44cjKFFjWZcA==", "cpu": [ "x64", "arm64" @@ -28641,7 +28590,7 @@ "linux" ], "dependencies": { - "is-number": "npm:@clevercanyon/is-number.fork@^7.0.137" + "is-number": "npm:@clevercanyon/is-number.fork@^7.0.138" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -29395,9 +29344,9 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -29457,9 +29406,9 @@ } }, "node_modules/ufo": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.1.tgz", - "integrity": "sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", "dev": true }, "node_modules/unbox-primitive": { diff --git a/package.json b/package.json index 69fddbb..62cd6df 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "1.0.300", + "version": "1.0.301", "license": "GPL-3.0-or-later", "name": "@clevercanyon/utilities.cfw", "description": "Utilities for JavaScript apps running in a Cloudflare Worker environment.", @@ -69,7 +69,7 @@ }, "dependencies": {}, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.918", + "@clevercanyon/utilities": "^1.0.923", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" @@ -78,7 +78,7 @@ "optionalDependencies": {}, "bundleDependencies": [], "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.372" + "@clevercanyon/dev-deps": "^1.0.373" }, "overrides": {}, "cpu": ["x64", "arm64"], diff --git a/src/proxy.ts b/src/proxy.ts index 959c06f..1ddeac5 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -4,7 +4,7 @@ import '#@initialize.ts'; -import { $root, cfw } from '#index.ts'; +import { cfw } from '#index.ts'; import { $arr, $crypto, $env, $gzip, $http, $is, $mime, $obj, $str, $time, $url, type $type } from '@clevercanyon/utilities'; /** @@ -66,8 +66,8 @@ export const fetch = async (rcData: $type.$cfw.RequestContextData, parseable: $t opts.headers = $http.parseHeaders(opts.headers) as $type.cfw.Headers; if (!opts.headers.has('user-agent')) - for (const [name, value] of Object.entries(await $root.uaHeaders(rcData))) { - opts.headers.set(name, value); + for (const [name, value] of Object.entries($http.browserUAHeaders())) { + if (!opts.headers.has(name)) opts.headers.set(name, value); } if (opts.uaBotAppend /* e.g., `SomeCoolBot/1.0.0` */) { const currentUA = opts.headers.get('user-agent') || ''; // Current user-agent header. diff --git a/src/redis.ts b/src/redis.ts index a56de5e..396abfc 100644 --- a/src/redis.ts +++ b/src/redis.ts @@ -4,7 +4,7 @@ import '#@initialize.ts'; -import { $class, $env, $fn, $http, $is, $json, $mime, $obj, type $type } from '@clevercanyon/utilities'; +import { $class, $env, $fn, $http, $is, $json, $mime, $obj, $time, type $type } from '@clevercanyon/utilities'; import { Ratelimit as RateLimiterCore } from '@upstash/ratelimit'; import { Redis } from '@upstash/redis/cloudflare.mjs'; @@ -27,7 +27,7 @@ export type RateLimiterOptions = InstanceOptions & { ]; ephemeralCacheMaxSize?: number; analytics?: boolean; - timeout?: number; + timeout?: number; // In milliseconds. }; export type RateLimiter = { limiter: RateLimiterCore; @@ -107,7 +107,7 @@ export const instance = $fn.memo( * all the time that a single worker request is allowed to take via `ctx.waitUntil()` promises. */ }, - signal: undefined, // Not used at this time. + signal: AbortSignal.timeout($time.secondInMilliseconds * 5), }, { UPSTASH_DISABLE_TELEMETRY: '1' }, // Don’t report back to Upstash. ); diff --git a/src/root.ts b/src/root.ts index 448f3bb..ce62e5a 100644 --- a/src/root.ts +++ b/src/root.ts @@ -5,30 +5,7 @@ import '#@initialize.ts'; import { $cfw } from '#index.ts'; -import { $app, $crypto, $is, $obj, $to, type $type } from '@clevercanyon/utilities'; - -/** - * Defines types. - */ -export type UAHeaderOptions = { - randomIndex?: number; -}; -export type UAHeaders = $type.ReadonlyDeep<{ - 'user-agent': string; - - 'accept': string; - 'accept-encoding': string; - 'accept-language': string; - - 'sec-ch-ua': string; - 'sec-ch-ua-mobile': string; - 'sec-ch-ua-platform': string; - 'sec-fetch-site': string; - 'sec-fetch-mod': string; - 'sec-fetch-user': string; - - 'upgrade-insecure-requests': string; -}>; +import { $app, type $type } from '@clevercanyon/utilities'; /** * Defines root package name. @@ -135,32 +112,9 @@ kv.isAvailable = (rcData: $type.$cfw.RequestContextData): boolean => { return rcData.env.RT_KV || (rootPkgName === $app.pkgName() && rcData.env.KV) ? true : false; }; -// --- -// UA header utilities. - -/** - * Fetches root UA headers. - * - * @param rcData Request context data. - * @param options All optional; {@see UAHeaderOptions}. - * - * @returns Promise of root UA headers. - */ -export const uaHeaders = async (rcData: $type.$cfw.RequestContextData, options?: UAHeaderOptions): Promise => { - const opts = $obj.defaults({}, options || {}, { randomIndex: $crypto.randomNumber(1, 100) }) as Required, - kvKey = 'ua-headers:' + String($to.integerBetween(opts.randomIndex, 1, 100)), - headers = (await kv(rcData).get(kvKey, { type: 'json' })) as UAHeaders; - - if (!$is.plainObject(headers)) { - throw Error('UA headers failure.'); - } - return headers; -}; -uaHeaders.urlSafeOptionKeys = ['randomIndex'] as string[]; -uaHeaders.isAvailable = kv.isAvailable; - // --- // Counter utilities. +// @todo: Deprecate in favor of app-specific counters. /** * Gets root counter value. diff --git a/tsconfig.json b/tsconfig.json index 3335cca..7b67c2a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ * @note This entire file will be updated automatically. * @note Instead of editing here, please review `./tsconfig.mjs`. * - * Last generated using `./tsconfig.mjs` Mar 16, 2024 6:34 PM UTC. + * Last generated using `./tsconfig.mjs` Mar 22, 2024 8:39 AM UTC. */ { "include": ["./src/**/*", "./dev-types.d.ts"], @@ -115,6 +115,7 @@ "dayjs/plugin/advancedFormat", "dayjs/plugin/customParseFormat", "dayjs/plugin/localizedFormat", + "dayjs/plugin/relativeTime", "dayjs/plugin/timezone", "dayjs/plugin/toObject", "dayjs/plugin/utc" diff --git a/wrangler.toml b/wrangler.toml index 5586dec..f9354af 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -7,7 +7,7 @@ # @note This entire file will be updated automatically. # @note Instead of editing here, please review `./wrangler.mjs`. # -# Last generated using `./wrangler.mjs` Mar 16, 2024 6:34 PM UTC. +# Last generated using `./wrangler.mjs` Mar 22, 2024 8:39 AM UTC. ## send_metrics = false