diff --git a/.browserslistrc b/.browserslistrc index 5b4deb0..3d269ef 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. [production] node >= 20.9.0 diff --git a/.dockerignore b/.dockerignore index 0018ed3..a788b2a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Locals diff --git a/.env.vault b/.env.vault index bc0a743..8cdbdcb 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="Z0rSLcAmxSnqoiu2C+Wrk+2aJdYhMG4S1Xsqx7G0ZUeNAmb5p7Q6gCGKb6AG/jnFCEYa13jqnaNDqMt2ajRemVYRRVjiOlow5fu1fQK4j+j0NXn9/2VNaffpXmfXVv8GrfyJISTAzTg4GpYpA+UN83/SaPeD5uebs3mX03tVbGk2v4Gm+eCkGdq9fGA5ohfMrUBdBUMQ34kwyrNqbAeHr+ngWn45dAAfvEumUrCm0oZicE0LtOgPzbEj+H9YwZgFmucz/Kq9nIqT73NrntCTTPdZS5Zvj6V8oufTeD/oBAKgT60jSsV4D08LDY+mlKJ5hf8/otLsEL3MEM0AeqZNZmKB+AjkRyzK6nUKlk2GYAh4uqp+F9X7hZPk9qPiEnW5aDSSilsi3WsbBmkCdG1wkV8+UUqOUJzX1ppFyQfcfq8o60QfkV7vn7yCWO+lIkPMyJ13dor91LoonFW7pe2cNeSAEONyMzA3cChw3iepgNksZo6qtMK5K6pNBdeZbGZU0Vn9Wnq6mfzk+9RP+I1PN4gvu1clPwnuMTIraidSuLYQchFXxtVP+SRNarkRgQKxHbuQ8ZWNzynaNjKfkSoLOQXEWwnknsKqJMnEzT+lSUmxlgdHPpv+8wKcqaYkvjSEkdM9LFL425g0Ibe8wJJ7y4MIiJxBUNMGsc05l76+ba/dOrx4MAOdP2TrmOqE5D+T09tvwoYU2hOTpRK0Z6/CHcqz5SliQyG9pGcz9nCRYVWsFzkA/7Zw4I9/Bdh6APFuA4TD+cPfWVJ2CL344+m686TOwLEhFf3CP6XutLHqMH6PYYGh5ZX/Xz5dq+1z9oRRVVCR4iBKDhQV8X8ZW3dRhCJoD6p5CPaBjz0hRbLg6ud/Lsc1zy+CyBhKK0zt" -DOTENV_VAULT_DEV_VERSION=335 +DOTENV_VAULT_DEV="s/YLNsjY6MEujxjGf+3B6sKT4P+v7xMw8EEAsMBDVNNrATuxg+gvly7ZR+xpFK3poLg1OuzB9EJRy01u0joA3mjaeR5kECreG7LWJU/wDE8e3gNvPv1avfvumfWLkkumFzr2KUT9+Covj1CAC0KPXD1FqPyFD5DmkTm6xlYnhe5eW3mcdi0MHmUAPaM4F/Nh3X+1xCBnsLWjpKPh+xMy0yWtQlATq9b7K2N/IYykctMSosMB2KS0cQ8SRmqB0zhiUnFeS/zVtAun3p20iTpgFXKObhKMMceBQf6oMoc0CZnE0v90wAw2YtI54GyRK/58zItzH/yM0CwDjB1jA/+hsOah21WH2WoX/Y9shvm9G8VDPTcr8RAj7Zpst72XjIj4Et3AbHaY5DxcSXPhxr8D1iFRuzzDEYoNIdM2HzKwCntoZA9++FdIOrkn0QT8yMav/oGFWrJ5tNWFMcCjkMY8l6JIJs8r8kNZzIB2rS+QaPHqj8Sdu/gUeTglWXBmw4PBKc2vI1eukMYEs5uO5bQEOJ6qMNIACl7YdP+G/Z3SEaCxDB54DWeXlU4g7YVVLSbM7pWOnxOGQcCMSdrZgjlfQJgtpX0L2aMLCQgn+1IrEQZmSrvnjPq83rBk9Xtky2PcqRi95Yk7KRcxrmkhSZ569XQPFNuKqhLVDjUTnr9W9FAThl6TG06SuW+AG5evgeVBslxZ5x2OuVQ7JGJ2WZ/mxPbba1v7euscdtDhz06gTJfrNxK7+AA2x05eY/qEtoYLhoSE2UbuoSITnCVYQb/3MxrQi0QZ4RIBZVqFNDj5w1JByIqPqmqTeRdZ5VCcXnoou/JGaWdtGT8xFJJH/l/xfcCsQ3WQ+TnNzURJXQjNwS9YhuDkM1f4l4jTT+fC" +DOTENV_VAULT_DEV_VERSION=337 # ci -DOTENV_VAULT_CI="2zdo/98cve7FQEMF09qYfBx0C42ivGPDzDu5vHgrFqXexCuw/ipttKqAu7PLWKxCMetAB+44VJyddk1TVFc0uKZfuijUpurQl77L0pq39D0AIAuZcMzluFES/zbCc/SoF8W9IUFZFibeaNuFYuIQBmvgX/QhdJ6JFNdO/lYe9d7sPpG+FIQBYQsx/tRc/R9/q/g6FGJO1hGOCq0o6+XRaIjN0jaPIlwOuCbGvpnhPStWp9cAfTaj5It/Wq3Xsv6hZUSCEjk2WCcfAf+2FaUuZHSWUEpUHXNPPT4zlAjuZGT27NmYY8E70xtpDdwEBOPnK0X6x4sZKyYpS7gJfWx5tWS44Ksfh2G+p3D4uz5yBSn7MAjL0EmYdoR3kszuMzG3rqdqY06wLd4I86QyNF43QsyM+VHqBqTSfRNAFaTENBuvlCN4OJgirCL1zTiyzmGFbo2vjQIZ5Fc6wau/2cXZiMbRutg6CIWxsDsWfntXmnLkUbMz96xPRX1B32N5E4Ze5SkCoR83DTrUZ7lU6WUHIJVj8d8CrwEoarOjkF7S0sSJu2ey/buE2ocNgBP9LB5OvFCeh4GXBzeELQ464epMnTtWCp+XC0y3Jpi6mtbh+Yr5QV15PKZ8kesaYAh5ylfmWOft5xcMIZXN4l7nJcmV3/sW2az/wmzsgghb5nKTgDWMm+p9W4Yz+hs1wX4MOzxY84Lq/oX2oa5+/RB1aGFt2qEYL6XQveZ2GCnztdOD8rHHWx8ncPzv1qSWZX6EzDKX7KGzjNOwYSXQDwhLydoNsPM9cZf8WGO8SK3qieW0gtMyj23AhSvWVwoVV7SnoKnfjy2X398mMkXToj48Y2NBQ2QZ6FM1kZ9a6Xu4aL7tVrnSGQedTWBWXiDEtKCF" -DOTENV_VAULT_CI_VERSION=335 +DOTENV_VAULT_CI="Rh1RnEQGpeQkc0ddqHWCpjDBYMJ93x/0OCK6mACN2KdGGdqbXKeIowKb3kig/qfeU0hzagtM5+NaieHWgjitAtyyWur9bTUmJH6CwS3R1M+fmBd6N73ZyH9JE9Fd0h+/nYkdJox99wdS0eZdILrSIDkfcpKJO0MzVE3qJmQzC7fStmGOPBzh3JYNyIpNtb/UObGbRmqBCnCNq6chpwhTKg2AymYWwmSgZ3QEI7wtewbVqTKOcG/ENbU0vqdbs1WShbTMOkYRy3gUzt60xenW1jtCQm1HypLERVYIX5Vh9gQV6JZplmHAtzcvtaGW17hZEMl931M2AqIkydVfFfueBJZqjLTDiiboCVIBg6nHUeJlcbQTyrDoHdy/hDG/X4hnTv+Sdd43984KAlg8rs/ik9jdBKoksZGVccPhtITWCSwT48QNrnotdszp9ZfBzrfhSaW0PzulBnRL4PG9X2ZXdv5RterEeaE1TpzRYkQGIufr033ubo4nKU2X/U1jA+nQTUBFBJV8PVJn5JogojM7Y6aR/8YE3v2a6MHeBtnQ3dcYUGOZVi7BkI6UVGw9+6KH32CPGnKtWD0tIIuPkNusS1HFQuFh+RJapIyRhNrrYB2KFn19417/QI2Y0wWIDF0gVZA/t+/fv5qzqKb0P72oYjbpxfYeoJIKI+RmP2nEn1LqmJqe1DryPsbAjzGtrerm4x6I7s7ZbQoV7tacyBuVjSC8VeLliBbHGWQ/dAb3Ll3ifjflDN6BKoxhc9Dpt6dYCIYaTrktvRWl4tld+E7fwavSiS7I8JIvPJHI5kxg7Utx5Nr1UP5raoGqAQuWZFaFpP/F7qCDq8IPeiceMBPOCh5o4y87TFwlqmJDq+DU5NbFNFGGQfweNJOPYlUh" +DOTENV_VAULT_CI_VERSION=337 # stage DOTENV_VAULT_STAGE="bfqZYD8oVLWMZ0JR5LICV+sB/btaXavszxZLxTfwSH8U5fg=" diff --git a/.gitattributes b/.gitattributes index 4827964..b60ab9d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Default diff --git a/.gitignore b/.gitignore index d5b586d..7561d9a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Locals diff --git a/.npmignore b/.npmignore index f4755ba..da5ac17 100644 --- a/.npmignore +++ b/.npmignore @@ -25,7 +25,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Locals diff --git a/.prettierignore b/.prettierignore index 8e2a5ff..afe4713 100644 --- a/.prettierignore +++ b/.prettierignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Packages diff --git a/.vscode/settings.json b/.vscode/settings.json index b7f9175..4d489af 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` Apr 11, 2024 9:01 AM UTC. + * Last generated using `./settings.mjs` Apr 11, 2024 11:10 AM UTC. */ { "editor.formatOnType": false, diff --git a/.vscodeignore b/.vscodeignore index d0b9079..666b102 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Apr 11, 2024 9:01 AM UTC. +# Last generated Apr 11, 2024 11:10 AM UTC. # Locals diff --git a/package-lock.json b/package-lock.json index 745b3f4..0404bf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@clevercanyon/utilities.cfw", - "version": "1.0.320", + "version": "1.0.321", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@clevercanyon/utilities.cfw", - "version": "1.0.320", + "version": "1.0.321", "cpu": [ "x64", "arm64" @@ -17,7 +17,7 @@ "linux" ], "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.381" + "@clevercanyon/dev-deps": "^1.0.382" }, "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.955", + "@clevercanyon/utilities": "^1.0.957", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" @@ -768,9 +768,9 @@ "dev": true }, "node_modules/@clevercanyon/dev-deps": { - "version": "1.0.381", - "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.381.tgz", - "integrity": "sha512-B5or/4HgaeCbOF3k8YaeOAXSrkw6PGJXhGxKaRSJLhjKkl4yxtSl11q01zvbv/J3vMA3NGsQhdvSHusQNPO2qQ==", + "version": "1.0.382", + "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.382.tgz", + "integrity": "sha512-deRx4/BgenptwKz9OhA02X4mghFult4fS8i7iA/n2Oy6BQn482asZhPtb1PnikGxIgpbMs31Jkn55xcyCx2xFw==", "cpu": [ "x64", "arm64" @@ -781,11 +781,11 @@ "linux" ], "dependencies": { - "@clevercanyon/madrun": "^1.0.198", - "@clevercanyon/utilities": "^1.0.954", - "@clevercanyon/utilities.bash": "^1.0.212", - "@clevercanyon/utilities.cfp": "^1.0.256", - "@clevercanyon/utilities.node": "^1.0.207", + "@clevercanyon/madrun": "^1.0.199", + "@clevercanyon/utilities": "^1.0.956", + "@clevercanyon/utilities.bash": "^1.0.213", + "@clevercanyon/utilities.cfp": "^1.0.257", + "@clevercanyon/utilities.node": "^1.0.208", "@cloudflare/workers-types": "4.20240208.0", "@eslint/js": "8.48.0", "@iarna/toml": "2.2.5", @@ -897,9 +897,9 @@ } }, "node_modules/@clevercanyon/madrun": { - "version": "1.0.199", - "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.199.tgz", - "integrity": "sha512-d6XF/NylCYKuEHmJH4d5uQO4YljXrZXxAjF8IRCjewtTv3DZB6TKj3GK05ZgOgXiys3hCQYYyRg3MGdV/gYm8g==", + "version": "1.0.200", + "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.200.tgz", + "integrity": "sha512-EvOpUrshcdW8TzDclg8tLYGhC4w/qsQA6F3U6yuy6zYIdsBhyfVFmEsrNMCL0l4SDFyuuJM1JGyP/eJHYgqC0A==", "cpu": [ "x64", "arm64" @@ -910,8 +910,8 @@ "linux" ], "dependencies": { - "@clevercanyon/utilities": "^1.0.954", - "@clevercanyon/utilities.node": "^1.0.207" + "@clevercanyon/utilities": "^1.0.956", + "@clevercanyon/utilities.node": "^1.0.208" }, "bin": { "madrun": "dist/bin/cli.js" @@ -925,9 +925,9 @@ } }, "node_modules/@clevercanyon/split-cmd.fork": { - "version": "1.0.144", - "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.144.tgz", - "integrity": "sha512-Cqn2TXUrCNR+GIKQQCvkf+MCFnVnY0Snz+OfpXMFFMVhOHfcDlBG/74uE/AL2RDd162Ml4ByrHng0z8VXPL1og==", + "version": "1.0.145", + "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.145.tgz", + "integrity": "sha512-smhn/tqQFcXeb9D8jFjlZXnjWZ8cwQdaGXeV2to2q2FVJswSY7TsAsrwi8/lR+zett+HPwideltFRRR2ree0og==", "cpu": [ "x64", "arm64" @@ -947,9 +947,9 @@ } }, "node_modules/@clevercanyon/utilities": { - "version": "1.0.955", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.955.tgz", - "integrity": "sha512-wovlG8JyQ8v/pMIJ6ORJYjXvAah7fiWZCFu21V/nPtThF+LSHlqCBfm/kFBF4Qk0zuc/G1t4N/Fw9iSPc92n0w==", + "version": "1.0.957", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.957.tgz", + "integrity": "sha512-eaqsXXZ/Pw6qrXF+MNyo8ABI41bct88j0Ph2a88f2BlOdMb9g/gPdVQ30iprZrcxDlNSOU5j0FwWd2ygzfk9zQ==", "cpu": [ "x64", "arm64" @@ -973,7 +973,7 @@ "ignore": "5.3.0", "ip-regex": "5.0.0", "micro-memoize": "4.1.2", - "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.146", + "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.147", "parse-css-color": "0.2.1", "preact": "10.20.1", "preact-render-to-string": "6.4.1", @@ -982,9 +982,9 @@ } }, "node_modules/@clevercanyon/utilities.bash": { - "version": "1.0.212", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.bash/-/utilities.bash-1.0.212.tgz", - "integrity": "sha512-QTup44cVh+rfJAG+74dxIlhnVcevSb0JmYxxLLcII4r0+Rb+fFj5JTZX4D/PpbzDRQsS0uHNiBE1CvVC2D+5IQ==", + "version": "1.0.213", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.bash/-/utilities.bash-1.0.213.tgz", + "integrity": "sha512-1nJ2KkIzWEZ4qQGxAFnzRlx2lqHdNO69Y7wcsEYUWAQiKfXAP8FOwcQpZN23eTHUahZb5gKKSKrj9LKIX8Zfvg==", "cpu": [ "x64", "arm64" @@ -1002,14 +1002,14 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.954", - "@clevercanyon/utilities.node": "^1.0.207" + "@clevercanyon/utilities": "^1.0.955", + "@clevercanyon/utilities.node": "^1.0.208" } }, "node_modules/@clevercanyon/utilities.cfp": { - "version": "1.0.256", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.256.tgz", - "integrity": "sha512-0PIHGlLTqtolcJyM8wBVz22F5pYcPMTWDiA9EIDwBblHItTnllefU/4CSc2U+8TI7tgp19VZPKtoQJbMLiMxLQ==", + "version": "1.0.257", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.257.tgz", + "integrity": "sha512-57vj361rOljof59K1/Ah5Ng4RPOdOSBxROD5tqGVBG+H6CV25X5wFfYvxabreYYPnedbYPmx9v9oLMaoLXdOrQ==", "cpu": [ "x64", "arm64" @@ -1027,15 +1027,15 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.954", - "@clevercanyon/utilities.cfw": "^1.0.320", - "@clevercanyon/utilities.web": "^1.0.160" + "@clevercanyon/utilities": "^1.0.955", + "@clevercanyon/utilities.cfw": "^1.0.321", + "@clevercanyon/utilities.web": "^1.0.161" } }, "node_modules/@clevercanyon/utilities.cfw": { - "version": "1.0.320", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.320.tgz", - "integrity": "sha512-imFC3+CNQaI7DR9YI6qITM506mc6clTgLOFAi9PUcqvC6zlOpPtPMsPrR2lEUAWmX0RjR6qkc7sQ11U08h0B6w==", + "version": "1.0.321", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.321.tgz", + "integrity": "sha512-bQGUxt9NxRS5hbRKd55GGsh9DfB5qpGOZG/om2eQ0Kk2uwtzA0j5HRPjivzsFyJsHuRnYmoPMZ37+MS3sH2/pQ==", "cpu": [ "x64", "arm64" @@ -1054,16 +1054,16 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.954", + "@clevercanyon/utilities": "^1.0.955", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" } }, "node_modules/@clevercanyon/utilities.node": { - "version": "1.0.208", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.208.tgz", - "integrity": "sha512-Qdox6kDxAqc8f18HZ/N2qaDbfufzDUvu+UQL2f5bUSsWzpFM8bmGNUvo7z4XQ6V4z0s/XzkcZR0F91LtQ8mEqw==", + "version": "1.0.209", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.209.tgz", + "integrity": "sha512-hxFmk64nWnww2HxSHxEUw2JvbSaxykvwRGm6ieW5uYUkqtXHzvXQ8477VX5nUKhalzhzid9NQCrA7iF3KpY80w==", "cpu": [ "x64", "arm64" @@ -1081,8 +1081,8 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/split-cmd.fork": "^1.0.144", - "@clevercanyon/utilities": "^1.0.955", + "@clevercanyon/split-cmd.fork": "^1.0.145", + "@clevercanyon/utilities": "^1.0.957", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0", "archiver": "6.0.1", @@ -1095,16 +1095,16 @@ "globby": "14.0.0", "prettier": "3.1.0", "shescape": "2.0.2", - "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.138", + "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.139", "term-img": "6.0.0", "yargs": "17.7.2", "yargs-parser": "21.1.1" } }, "node_modules/@clevercanyon/utilities.web": { - "version": "1.0.161", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.web/-/utilities.web-1.0.161.tgz", - "integrity": "sha512-Uzd4lTYTX6wKDQhBCG1LJzkKXY/nAhgWrmLG9f6VYkDI/fMtbMy1no1uzQBRQHjcXvfq6lRn9H1tVFx4Yjfnzw==", + "version": "1.0.162", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.web/-/utilities.web-1.0.162.tgz", + "integrity": "sha512-26zD3v2JWZuLfM7ir3ytUHCGr3ACpHeQSCnvGg0JFPwRGNAjrRc0ITzT/eEwxebMAUlW2QHR4jO7ZWJdGOn0Xg==", "cpu": [ "x64", "arm64" @@ -1123,7 +1123,7 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.954" + "@clevercanyon/utilities": "^1.0.955" } }, "node_modules/@cloudflare/ai": { @@ -7803,9 +7803,9 @@ }, "node_modules/braces": { "name": "@clevercanyon/braces.fork", - "version": "3.0.142", - "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.142.tgz", - "integrity": "sha512-oojVToPqZTSFKkJ/azDMBa9f2tUbtp6waewCUawOwLzSpKwWyl1b3efhEuedE5KHATMwgPQxMPZEPNM/PdjNag==", + "version": "3.0.143", + "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.143.tgz", + "integrity": "sha512-C6ZaDOlEi99ozOyWoojqIxvYJYlKzMfcpyztkAHqgZPLYJHz6aXn6TPpvdYnd5Mm8rYNVumAqeZlpSZA8OO9TA==", "cpu": [ "x64", "arm64" @@ -7815,7 +7815,7 @@ "linux" ], "dependencies": { - "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.141" + "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.142" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -12650,9 +12650,9 @@ }, "node_modules/fill-range": { "name": "@clevercanyon/fill-range.fork", - "version": "7.0.141", - "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.141.tgz", - "integrity": "sha512-qK61enXMusIAcoPGZ3LgV8dFjkmZ5y/IP+2hy3KY/dwmoNMl5VfwzP7iIAkY/DMa238bR8Ozha27H8BzEVf7ZQ==", + "version": "7.0.142", + "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.142.tgz", + "integrity": "sha512-iCcPexbF2fjJpmh7QLXu+28spXgt82vJN0dDENHI8cRfulTOq3PSqZVAaC/nA4to7pmSq9b4prQxZLD7rf47BQ==", "cpu": [ "x64", "arm64" @@ -12662,7 +12662,7 @@ "linux" ], "dependencies": { - "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.141" + "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.142" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -14245,9 +14245,9 @@ }, "node_modules/is-number": { "name": "@clevercanyon/is-number.fork", - "version": "7.0.144", - "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.144.tgz", - "integrity": "sha512-04livG+EeQd0pDugWkI1UvMeAfiGi8ojaTm2XYTHLwF/awaa3gEKObUZJV23ejpoDFYJCsHRarrZ2O+LQ0DyeA==", + "version": "7.0.145", + "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.145.tgz", + "integrity": "sha512-2XQtrJmDat125UxWmpKxD8AKyWVNlGDkn2Wz23/AvrnnAMhXZhl/a9MLbwOTOWi0dwELiuuTM7kCMrpPH0tmjw==", "cpu": [ "x64", "arm64" @@ -19978,9 +19978,9 @@ }, "node_modules/micromatch": { "name": "@clevercanyon/micromatch.fork", - "version": "4.0.146", - "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.146.tgz", - "integrity": "sha512-VD8DlISMjVOJuoAnDe/idAnKZG75vjA28pcrdggVndLQHJclH29OQIkZJJiHSOBRSNPQtkc8pCALtjyH36SLEw==", + "version": "4.0.147", + "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.147.tgz", + "integrity": "sha512-Vnm52aPwVXnChMD3PMARNA6dCbaI4NK1WchBJPsST2XdThyIwB8r/y2O2FfYHHv2VFYEaWeFkPXzjJ+tJkJrWQ==", "cpu": [ "x64", "arm64" @@ -19990,8 +19990,8 @@ "linux" ], "dependencies": { - "braces": "npm:@clevercanyon/braces.fork@^3.0.142", - "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.141" + "braces": "npm:@clevercanyon/braces.fork@^3.0.143", + "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.142" }, "engines": { "node": "^20.5.0 || ^20.9.0 || ^21.6.2", @@ -20003,9 +20003,9 @@ }, "node_modules/micromatch/node_modules/picomatch": { "name": "@clevercanyon/picomatch.fork", - "version": "2.3.141", - "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.141.tgz", - "integrity": "sha512-o2lcV1axDyL3MxfTsDSwSZ8eaaQRcXrTSTG1fQiuzuT67B3XpDfmo2EMnhjm9ZdUgqOrzo0fdASORy3sI5DuCQ==", + "version": "2.3.142", + "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.142.tgz", + "integrity": "sha512-SHTTQ6BSFI/8n7+/Ql7qgbzzqACnB2f+JVKob+UevssXhXTNDJcjECzpIXWXTXrIx8wVD9rwLoM5GuwcOEksgg==", "cpu": [ "x64", "arm64" @@ -27254,9 +27254,9 @@ }, "node_modules/spawn-please": { "name": "@clevercanyon/spawn-please.fork", - "version": "2.0.138", - "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.138.tgz", - "integrity": "sha512-E7JU3KlSZTGN69+7t4o3hezFAbSwvzyZYxq/hT6R9UnJKbwnPWP5vnvcMa3yiWF7S6ir3XsZrcjgdkUgL0Enew==", + "version": "2.0.139", + "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.139.tgz", + "integrity": "sha512-eA7fI9vNzdyANRH/zKcl0J9X9PUyuu2ZlxAqbiT08aVR8F4VhkcJ1tWUs27Q2sg9tdZducTkzJ5YlUMWrck7uw==", "cpu": [ "x64", "arm64" @@ -28582,9 +28582,9 @@ }, "node_modules/to-regex-range": { "name": "@clevercanyon/to-regex-range.fork", - "version": "5.0.141", - "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.141.tgz", - "integrity": "sha512-QNiqIFp8/63M1o0bmNBKZQW7F6WCifklKfMAQXTrj02Z7TuSyNccldl8bAjBQUFtocdXUPcf137hgsf8mIx24Q==", + "version": "5.0.142", + "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.142.tgz", + "integrity": "sha512-X6thZhQOZy/YT4BKXUMjn8rYCA13Q6Gn004sNRHOWYQrMh9U2+w/9Se7ocGSKQNAJUmRAm5+jJHh3+hoNvyI6g==", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 6635abb..1a784d3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "1.0.321", + "version": "1.0.322", "license": "GPL-3.0-or-later", "name": "@clevercanyon/utilities.cfw", "description": "Utilities for JavaScript apps running in a Cloudflare Worker environment.", @@ -79,7 +79,7 @@ }, "dependencies": {}, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.955", + "@clevercanyon/utilities": "^1.0.957", "@cloudflare/ai": "1.0.53", "@upstash/ratelimit": "1.0.0", "@upstash/redis": "1.28.0" @@ -88,7 +88,7 @@ "optionalDependencies": {}, "bundleDependencies": [], "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.381" + "@clevercanyon/dev-deps": "^1.0.382" }, "overrides": {}, "cpu": ["x64", "arm64"], diff --git a/src/cfw.ts b/src/cfw.ts index 91405a9..0ac9f43 100644 --- a/src/cfw.ts +++ b/src/cfw.ts @@ -304,20 +304,21 @@ export const serviceBindingRequest = async ( */ export const handleRouteCache = async (rcData: Type, route: $type.$cfw.Route): Promise<$type.cfw.Response> => { const { Request } = cfw, - { ctx, url, request, caches } = rcData; + { ctx, url, request, caches } = rcData, + routeConfig = $http.routeConfig(route.config); // Populates cache key. let key, cachedResponse; // Initialize. - const varyOn = new Set(route.config?.varyOn || []); + const varyOn = new Set(routeConfig.varyOn); for (const v of varyOn) if (!request.headers.has(v)) varyOn.delete(v); - if ((!route.config || route.config.enableCORs) && request.headers.has('origin')) { + if (routeConfig.enableCORs && request.headers.has('origin')) { varyOn.add('origin'); // CORs requires us to vary on origin. } else varyOn.delete('origin'); // Must not vary on origin. - key = 'v=' + (route.config?.cacheVersion || $app.buildTime().toStamp()).toString(); + key = 'v=' + (routeConfig.cacheVersion || $app.buildTime().toStamp()).toString(); for (const v of varyOn) key += '&' + v + '=' + (request.headers.get(v) || ''); const keyURL = $url.removeCSOQueryVars(url); // e.g., `ut[mx]_`, `_ck`, etc. @@ -326,33 +327,33 @@ export const handleRouteCache = async ; } - // Routes request and writes response to HTTP cache. + // Routes request and potentially writes response to HTTP cache. const response = await route(rcData); // Awaits response so we can cache. if ( !response.webSocket && 206 !== response.status && 'GET' === keyRequest.method && - // '*' !== response.headers.get('vary') && - !(response.headers.get('cdn-cache-control') || '') - .toLowerCase().split(/\s*,\s*/u).includes('no-store') && // response.headers.has('content-length') && // Our own limit is 25 MiB max. - Number(response.headers.get('content-length')) <= $bytes.inMebibyte * 25 // prettier-ignore + Number(response.headers.get('content-length')) <= $bytes.inMebibyte * 25 && + // + !(response.headers.get('cdn-cache-control') || '').toLowerCase().split(/\s*,\s*/u) + .some((directive) => ['no-store', 'max-age=0'].includes(directive)) // prettier-ignore ) { ctx.waitUntil( (async (/* Caching occurs in background via `waitUntil()`. */): Promise => { diff --git a/tsconfig.json b/tsconfig.json index 499cd5f..6beccc4 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` Apr 11, 2024 9:01 AM UTC. + * Last generated using `./tsconfig.mjs` Apr 11, 2024 11:10 AM UTC. */ { "include": ["./src/**/*", "./dev-types.d.ts"], diff --git a/wrangler.toml b/wrangler.toml index c52cb71..ff88db3 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` Apr 11, 2024 9:01 AM UTC. +# Last generated using `./wrangler.mjs` Apr 11, 2024 11:10 AM UTC. ## send_metrics = false