diff --git a/HISTORY.md b/HISTORY.md index 01ca054..a8d2982 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ # History +## v7.4.0 2023 December 27 + +- Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) +- Thank you to the sponsors: [Andrew Nesbitt](https://nesbitt.io), [Balsa](https://balsa.com), [Codecov](https://codecov.io/), [Poonacha Medappa](https://poonachamedappa.com), [Rob Morris](https://github.com/Rob-Morris), [Sentry](https://sentry.io), [Syntax](https://syntax.fm) + ## v7.3.0 2023 December 6 - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) diff --git a/LICENSE.md b/LICENSE.md index b8c35e5..876f0ff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,16 +1,16 @@ -

License

+# License Unless stated otherwise all works are: - +- Copyright © [Benjamin Lupton](https://balupton.com) and licensed under: - +- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html) -

The Artistic License 2.0

+## The Artistic License 2.0
 Copyright (c) 2000-2006, The Perl Foundation.
diff --git a/package-lock.json b/package-lock.json
index 9ab9b8c..266e689 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,30 +1,29 @@
 {
   "name": "unicode-symbols",
-  "version": "7.3.0",
+  "version": "7.4.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "unicode-symbols",
-      "version": "7.3.0",
+      "version": "7.4.0",
       "license": "Artistic-2.0",
       "devDependencies": {
-        "@bevry/update-contributors": "^1.23.0",
-        "@types/node": "^20.10.3",
-        "@typescript-eslint/eslint-plugin": "^6.13.2",
-        "@typescript-eslint/parser": "^6.13.2",
-        "assert-helpers": "^11.9.0",
-        "eslint": "^8.55.0",
-        "eslint-config-bevry": "^5.2.0",
+        "@types/node": "^20.10.5",
+        "@typescript-eslint/eslint-plugin": "^6.16.0",
+        "@typescript-eslint/parser": "^6.16.0",
+        "assert-helpers": "^11.11.0",
+        "eslint": "^8.56.0",
+        "eslint-config-bevry": "^5.3.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-prettier": "^5.0.1",
-        "kava": "^7.5.0",
-        "make-deno-edition": "^2.0.1",
-        "prettier": "^3.1.0",
-        "projectz": "^3.4.0",
+        "eslint-plugin-prettier": "^5.1.2",
+        "kava": "^7.6.0",
+        "make-deno-edition": "^2.1.0",
+        "prettier": "^3.1.1",
+        "projectz": "^4.0.0",
         "typedoc": "^0.25.4",
-        "typescript": "5.3.2",
-        "valid-directory": "^4.6.0",
+        "typescript": "5.3.3",
+        "valid-directory": "^4.7.0",
         "valid-module": "^2.6.0"
       },
       "engines": {
@@ -44,12 +43,12 @@
       }
     },
     "node_modules/@bevry/ansi": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/@bevry/ansi/-/ansi-6.7.0.tgz",
-      "integrity": "sha512-ApvNj7gXXCKsQLJhrAMwoZ+KZ3xMuJ7TS/f3O+IoS03Op2c0AUE9uR9gJfTlwaCzvwIe4XFr6Y7ET/TXnxe6ZA==",
+      "version": "6.8.0",
+      "resolved": "https://registry.npmjs.org/@bevry/ansi/-/ansi-6.8.0.tgz",
+      "integrity": "sha512-yHL8505MFE1yqvSL6Az5jce0WQVkuRctw2q5gtvFzVt0FTe36V18QyP/JH1pQ5GP0lgFTmpWawRLjQuZsGpYyg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=4"
@@ -58,13 +57,13 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/fs-accessible": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-accessible/-/fs-accessible-2.3.0.tgz",
-      "integrity": "sha512-B3toe0GoyVzQpRMpQ3DRIOaA3GiBh2GAkjsiVycYs7E1m2rg+h0NvUWmIHNnOGiWOuFY1vuB2fO9Gf4GW909TQ==",
+    "node_modules/@bevry/argument": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@bevry/argument/-/argument-1.0.0.tgz",
+      "integrity": "sha512-Wd5tlSDqv49ANautIW+yIx35d4qRVkFQIB9t089q83vnxVoNy7MTQLZ8VctuzvefA7wOjGsJ1q7V9+6ktukYdw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.19.0"
+        "errlop": "^8.2.0"
       },
       "engines": {
         "node": ">=4"
@@ -73,16 +72,13 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/fs-list": {
+    "node_modules/@bevry/fs-accessible": {
       "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-list/-/fs-list-2.4.0.tgz",
-      "integrity": "sha512-GPIqbxvMXWr+8183qdO+c3xW08n2qZO7/tmfzrwyedD3pPrsGwhj6eFBUaxWhrmBKJDAkdcN8gUDx7TsUp996A==",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-accessible/-/fs-accessible-2.4.0.tgz",
+      "integrity": "sha512-N5pmTQa7pAbZXPyNkDAD57j6M54N0aqZehSWpI6JUTmP8K61PDK+cVGwxItQX77B1mm5xiBi4vwnm22D7jdbVA==",
       "dev": true,
       "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0",
-        "version-compare": "^3.8.0"
+        "editions": "^6.20.0"
       },
       "engines": {
         "node": ">=4"
@@ -91,13 +87,16 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/fs-list/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+    "node_modules/@bevry/fs-list": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-list/-/fs-list-2.5.0.tgz",
+      "integrity": "sha512-1LP3EdMZrx3bjU1pMzRfI2KqBaLIFxO/aXCA+YBaf0OIWut0850wEKobxjS4ygEKzCDQ6FoBIHFCqOLItnG2SA==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0",
+        "version-compare": "^3.9.0"
       },
       "engines": {
         "node": ">=4"
@@ -107,30 +106,15 @@
       }
     },
     "node_modules/@bevry/fs-mkdirp": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-mkdirp/-/fs-mkdirp-1.4.0.tgz",
-      "integrity": "sha512-Bqf+31YadlF+aW4a26dz1zsgvkndf36XuLZOI9LpMfum1WHTqyUx3bLdt59DRqmwaw+2L/Vb/rpuycCKMv89SA==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0",
-        "version-compare": "^3.8.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/fs-mkdirp/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-mkdirp/-/fs-mkdirp-1.5.0.tgz",
+      "integrity": "sha512-6KPpyLvOcdV0wAmDwD6iyvgn7hdWRpTJ0apY5fb7+29yVVglRIM0qqSFb87C1UellxQch6REx73XqsZlwv0RXg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0",
+        "version-compare": "^3.9.0"
       },
       "engines": {
         "node": ">=4"
@@ -140,29 +124,14 @@
       }
     },
     "node_modules/@bevry/fs-read": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-read/-/fs-read-1.4.0.tgz",
-      "integrity": "sha512-oNohxiOof2SvRJ8d9WqATWAeuNplb+BKhCknvPzU5ZcxmylZPwhodpGMpxYOUjvi2UzgumrVA7NLRGB1XgMbYg==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/fs-read/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-read/-/fs-read-1.5.0.tgz",
+      "integrity": "sha512-5l50fxAUCYVYr8rjxqEZivVbfWIMwGU3gOFfa/xn0VCHx1FDPmbxnluwYPdFx3i7UuiTA3h1ueRHb5Xujumh/g==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -172,13 +141,13 @@
       }
     },
     "node_modules/@bevry/fs-readable": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-readable/-/fs-readable-2.3.0.tgz",
-      "integrity": "sha512-+bLwxu49AcWtTh+5F0Sss1YJVp+JUMl8Z9ibgNvincfoZVR4Gqn3/+zedpA8eIPTb8WBMs26IF9FeWK47u72nQ==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-readable/-/fs-readable-2.4.0.tgz",
+      "integrity": "sha512-YyP/VmLwBi0BnyLCqMW7inTHlHcVzrHCKekDWyRmOuA0oT/N1Z/YJkgNGGh0p72D4TBvmI+9PhoxKAqiv8Dcvw==",
       "dev": true,
       "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0"
       },
       "engines": {
         "node": ">=4"
@@ -188,30 +157,15 @@
       }
     },
     "node_modules/@bevry/fs-remove": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-remove/-/fs-remove-1.4.0.tgz",
-      "integrity": "sha512-S/4ZP/8qeCnWyzRqybcKkQRE+GkBWWlXDZChNJNDpR2Utr+7LEwoxqSp7sCbWOpbIqOH5ReAti1Sx25GcPou9Q==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0",
-        "version-compare": "^3.8.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/fs-remove/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-remove/-/fs-remove-1.5.0.tgz",
+      "integrity": "sha512-FRXVDrZntPGKVxGwSNNUt2C+/FwALINdsytwEUotzARekShx17TrAKHIQR30wl78mvn06hWRBULhW85uszHBcg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0",
+        "version-compare": "^3.9.0"
       },
       "engines": {
         "node": ">=4"
@@ -221,29 +175,14 @@
       }
     },
     "node_modules/@bevry/fs-unlink": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-unlink/-/fs-unlink-1.4.0.tgz",
-      "integrity": "sha512-ZM5RUwwXLnp5j7Nl9pgko7n7x+OVBA1lSTAJTv2lqB+coe8baprvEbAl2e8agY65V+DwQXxzOwDk2Vz0fUREnQ==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/fs-unlink/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-unlink/-/fs-unlink-1.5.0.tgz",
+      "integrity": "sha512-iX50UsFf4WMnnTbbZ6MsRK2p7gna29j26va3faYtueeVogPeM+2Y1nruWZ4UirOi8qjj/voA/aGefq9A2NNlzA==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -253,30 +192,15 @@
       }
     },
     "node_modules/@bevry/fs-write": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@bevry/fs-write/-/fs-write-1.4.0.tgz",
-      "integrity": "sha512-KVNb3rsYz7f0f8VGuvBEmxL1ICus/Hv1welBhYrqEvluGexZHj0+l9E540/9NMaxbx+4SGmctGows882D+ePkQ==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-accessible": "^2.3.0",
-        "@bevry/fs-mkdirp": "^1.4.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/fs-write/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@bevry/fs-write/-/fs-write-1.5.0.tgz",
+      "integrity": "sha512-gYw5A3u2HqC+AH9iCwliFwWaxseVjKnI2KUeGgGkSP7wFD+5FrB/SolSfAevKrdAUJ0znoEzMP4m0aLxJDzcJg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-accessible": "^2.4.0",
+        "@bevry/fs-mkdirp": "^1.5.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -286,32 +210,27 @@
       }
     },
     "node_modules/@bevry/github-api": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/@bevry/github-api/-/github-api-10.2.0.tgz",
-      "integrity": "sha512-jmTi25/DumuTbKBSZTrGTnZD2HFOfx6CaJYLxF7jZmlyKmifXPbXAt/Aia9CCAbDBmc1tI4KyN4YYiNEMuGaeg==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/wait": "^2.1.0",
-        "simplytyped": "^3.3.0"
-      },
-      "engines": {
-        "node": ">=18"
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/@bevry/github-api/-/github-api-11.0.0.tgz",
+      "integrity": "sha512-gOSFeauDKQRomaxVRCiIzI7XMRBLKTIpme1814FRiEhJr1gd82+AFAQ4rmlZL550atqkUYxU1wD9gWqYupljVQ==",
+      "dev": true,
+      "dependencies": {
+        "@bevry/argument": "^1.0.0",
+        "@bevry/fs-readable": "^2.3.0",
+        "@bevry/json": "^2.2.1",
+        "@bevry/list": "^2.3.0",
+        "@bevry/wait": "^2.4.0",
+        "@octokit/graphql": "^7.0.2",
+        "arrange-package-json": "^5.0.1",
+        "errlop": "^8.2.0",
+        "fellow": "^7.0.4",
+        "js-yaml": "^4.1.0",
+        "native-promise-pool": "^3.26.0",
+        "simplytyped": "^3.3.0",
+        "trim-empty-keys": "^1.0.1"
       },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/github-contributors": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/@bevry/github-contributors/-/github-contributors-4.2.0.tgz",
-      "integrity": "sha512-dsp9nnmsBdCD3k68pYmVPdskqDF9ZcriydbytIqnoR74Aji5vX0X5/CiLvB0Y6wOz+/tlztMDK2Q5fXMStNfzQ==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/github-api": "^10.2.0",
-        "@bevry/github-repos": "^7.0.0",
-        "fellow": "^6.25.0",
-        "native-promise-pool": "^3.23.0",
-        "simplytyped": "^3.3.0"
+      "bin": {
+        "github-backers": "bin.cjs"
       },
       "engines": {
         "node": ">=18"
@@ -320,77 +239,56 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/github-repos": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@bevry/github-repos/-/github-repos-7.0.0.tgz",
-      "integrity": "sha512-Io8uu1TJmfojkMeHEuURjPRbqHeIkHCzU5kxvaOYU9T09KTPCG7eF04E9rQlaFG7mI/Vov9cG3n1XUh43x2GpQ==",
+    "node_modules/@bevry/json": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.3.0.tgz",
+      "integrity": "sha512-d3CgyXe7Qxf2KaqHIBYQ61/zUJQWwQYXd3g0OdQt/62YfCO725RWEWcCvr16PrgxtQZBJi8WOV6x2SAJpDF37w==",
       "dev": true,
       "dependencies": {
-        "@bevry/github-api": "^10.0.0",
-        "@bevry/list": "^1.7.0",
-        "native-promise-pool": "^3.19.0",
-        "simplytyped": "^3.3.0"
+        "@bevry/fs-read": "^1.5.0",
+        "@bevry/fs-unlink": "^1.5.0",
+        "@bevry/fs-write": "^1.5.0",
+        "editions": "^6.20.0",
+        "errlop": "^8.3.0"
       },
       "engines": {
-        "node": ">=18"
+        "node": ">=4"
       },
       "funding": {
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/json": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/@bevry/json/-/json-1.10.0.tgz",
-      "integrity": "sha512-OdAglhqfMDeetuUqZHJe40+sKfWDSbamKimwTyv7eJu6ODWvVJNzi20V7RkgYmzeifODX0rNwCBmPn9b+j54MA==",
+    "node_modules/@bevry/list": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@bevry/list/-/list-2.3.0.tgz",
+      "integrity": "sha512-7BZeYa0rPq2xCrZ4biItwDsxl+Pp5yh1KkV4OE2fmUlZ6F8lxjSHH8VOTM2EJuanu5GBwF+ENk8l0Oz/tAglVg==",
       "dev": true,
       "dependencies": {
-        "@bevry/fs-read": "^1.1.0",
-        "@bevry/fs-unlink": "^1.1.0",
-        "@bevry/fs-write": "^1.1.0",
-        "errlop": "^7.3.0"
+        "editions": "^6.19.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=4"
       },
       "funding": {
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/@bevry/list": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/@bevry/list/-/list-1.8.0.tgz",
-      "integrity": "sha512-qkLuLrM+AO2XDX87pySdRX31qXeB0jDBEL0PfY+LJSV56QhfDS1PGrqkCz4Ux+/eq/PfiQ/2hQhNgOHGb2HvSw==",
+    "node_modules/@bevry/render": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@bevry/render/-/render-1.1.0.tgz",
+      "integrity": "sha512-uWfdRfj/8fhvQvhTPdJjN2ARD9nR94GVqufK+6rO3KTH97RB5vbFRjhMPxR1KXStHxtOaO3RFc/rizcYVhVqUw==",
       "dev": true,
       "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/@bevry/update-contributors": {
-      "version": "1.23.0",
-      "resolved": "https://registry.npmjs.org/@bevry/update-contributors/-/update-contributors-1.23.0.tgz",
-      "integrity": "sha512-H3bWFAhZMa22IHMzlyE+JAou7n1ONsrs72Yv6Tt9V5+E/CYAltfQWz/8YJtu2/yEay3LqaW1FSAtvzQiXRu2yg==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/github-contributors": "^4.1.0",
-        "@bevry/json": "^1.5.0"
-      },
-      "bin": {
-        "update-contributors": "bin.cjs"
-      },
-      "engines": {
-        "node": ">=10"
+        "node": ">=4"
       },
       "funding": {
         "url": "https://bevry.me/fund"
       }
     },
     "node_modules/@bevry/valid-filename": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@bevry/valid-filename/-/valid-filename-2.3.0.tgz",
-      "integrity": "sha512-9i36jNVzGffqFM1OukhUWs0L6P4ijPQBnOvYyiCjdSzd/QZlILOYz6EI+sS2GBjQi5Q9PMvkSRIlRxJAQ+lKAw==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@bevry/valid-filename/-/valid-filename-2.4.0.tgz",
+      "integrity": "sha512-MbLRTjQQA9PoHYGvFyhLv5ZGOfP1kowb5nh5aVflETvmq38WhR3oBGnALYfk7EX/IWZGXInH5/IjJ0Ydf13ABQ==",
       "dev": true,
       "bin": {
         "valid-filename": "bin.cjs"
@@ -403,9 +301,9 @@
       }
     },
     "node_modules/@bevry/wait": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@bevry/wait/-/wait-2.3.0.tgz",
-      "integrity": "sha512-hTv3HveVtJHLVNiFa1C9Wkc4LfmeDZi/7ZBXC8gEHIPtDI7VbpVk/4doaUIA21vVf27qjqTgJRIgG5/uGVg9Rw==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@bevry/wait/-/wait-2.4.0.tgz",
+      "integrity": "sha512-GqYbJnQ0CIqvFIMv8G4W98+EYSgvxq4UqxbKLamOGHiuQiVhKXIr3JAm9gct6Syo3cpU9sIP2q7FrQXW3aByjg==",
       "dev": true,
       "engines": {
         "node": ">=4"
@@ -461,10 +359,32 @@
         "url": "https://opencollective.com/eslint"
       }
     },
+    "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/@eslint/js": {
-      "version": "8.55.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
-      "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
+      "version": "8.56.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+      "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -484,6 +404,28 @@
         "node": ">=10.10.0"
       }
     },
+    "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/@humanwhocodes/module-importer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -538,19 +480,82 @@
         "node": ">= 8"
       }
     },
-    "node_modules/@pkgr/utils": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
-      "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+    "node_modules/@octokit/endpoint": {
+      "version": "9.0.4",
+      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz",
+      "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==",
       "dev": true,
       "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "fast-glob": "^3.3.0",
-        "is-glob": "^4.0.3",
-        "open": "^9.1.0",
-        "picocolors": "^1.0.0",
-        "tslib": "^2.6.0"
+        "@octokit/types": "^12.0.0",
+        "universal-user-agent": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 18"
+      }
+    },
+    "node_modules/@octokit/graphql": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
+      "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
+      "dev": true,
+      "dependencies": {
+        "@octokit/request": "^8.0.1",
+        "@octokit/types": "^12.0.0",
+        "universal-user-agent": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 18"
+      }
+    },
+    "node_modules/@octokit/openapi-types": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz",
+      "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==",
+      "dev": true
+    },
+    "node_modules/@octokit/request": {
+      "version": "8.1.6",
+      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz",
+      "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==",
+      "dev": true,
+      "dependencies": {
+        "@octokit/endpoint": "^9.0.0",
+        "@octokit/request-error": "^5.0.0",
+        "@octokit/types": "^12.0.0",
+        "universal-user-agent": "^6.0.0"
       },
+      "engines": {
+        "node": ">= 18"
+      }
+    },
+    "node_modules/@octokit/request-error": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
+      "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
+      "dev": true,
+      "dependencies": {
+        "@octokit/types": "^12.0.0",
+        "deprecation": "^2.0.0",
+        "once": "^1.4.0"
+      },
+      "engines": {
+        "node": ">= 18"
+      }
+    },
+    "node_modules/@octokit/types": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz",
+      "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==",
+      "dev": true,
+      "dependencies": {
+        "@octokit/openapi-types": "^19.1.0"
+      }
+    },
+    "node_modules/@pkgr/core": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz",
+      "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==",
+      "dev": true,
       "engines": {
         "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
       },
@@ -565,9 +570,9 @@
       "dev": true
     },
     "node_modules/@types/node": {
-      "version": "20.10.3",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz",
-      "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==",
+      "version": "20.10.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz",
+      "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -580,16 +585,16 @@
       "dev": true
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz",
-      "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz",
+      "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==",
       "dev": true,
       "dependencies": {
         "@eslint-community/regexpp": "^4.5.1",
-        "@typescript-eslint/scope-manager": "6.13.2",
-        "@typescript-eslint/type-utils": "6.13.2",
-        "@typescript-eslint/utils": "6.13.2",
-        "@typescript-eslint/visitor-keys": "6.13.2",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/type-utils": "6.16.0",
+        "@typescript-eslint/utils": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4",
         "graphemer": "^1.4.0",
         "ignore": "^5.2.4",
@@ -615,15 +620,15 @@
       }
     },
     "node_modules/@typescript-eslint/parser": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz",
-      "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz",
+      "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/scope-manager": "6.13.2",
-        "@typescript-eslint/types": "6.13.2",
-        "@typescript-eslint/typescript-estree": "6.13.2",
-        "@typescript-eslint/visitor-keys": "6.13.2",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/typescript-estree": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4"
       },
       "engines": {
@@ -643,13 +648,13 @@
       }
     },
     "node_modules/@typescript-eslint/scope-manager": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
-      "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz",
+      "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.13.2",
-        "@typescript-eslint/visitor-keys": "6.13.2"
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0"
       },
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -660,13 +665,13 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz",
-      "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz",
+      "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "6.13.2",
-        "@typescript-eslint/utils": "6.13.2",
+        "@typescript-eslint/typescript-estree": "6.16.0",
+        "@typescript-eslint/utils": "6.16.0",
         "debug": "^4.3.4",
         "ts-api-utils": "^1.0.1"
       },
@@ -687,9 +692,9 @@
       }
     },
     "node_modules/@typescript-eslint/types": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz",
-      "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz",
+      "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==",
       "dev": true,
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
@@ -700,16 +705,17 @@
       }
     },
     "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
-      "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz",
+      "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.13.2",
-        "@typescript-eslint/visitor-keys": "6.13.2",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/visitor-keys": "6.16.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
+        "minimatch": "9.0.3",
         "semver": "^7.5.4",
         "ts-api-utils": "^1.0.1"
       },
@@ -727,17 +733,17 @@
       }
     },
     "node_modules/@typescript-eslint/utils": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz",
-      "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz",
+      "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@types/json-schema": "^7.0.12",
         "@types/semver": "^7.5.0",
-        "@typescript-eslint/scope-manager": "6.13.2",
-        "@typescript-eslint/types": "6.13.2",
-        "@typescript-eslint/typescript-estree": "6.13.2",
+        "@typescript-eslint/scope-manager": "6.16.0",
+        "@typescript-eslint/types": "6.16.0",
+        "@typescript-eslint/typescript-estree": "6.16.0",
         "semver": "^7.5.4"
       },
       "engines": {
@@ -752,12 +758,12 @@
       }
     },
     "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "6.13.2",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
-      "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
+      "version": "6.16.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz",
+      "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "6.13.2",
+        "@typescript-eslint/types": "6.16.0",
         "eslint-visitor-keys": "^3.4.1"
       },
       "engines": {
@@ -912,25 +918,27 @@
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "dev": true
     },
-    "node_modules/array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+    "node_modules/arrange-package-json": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/arrange-package-json/-/arrange-package-json-5.0.2.tgz",
+      "integrity": "sha512-fdk7dHhebrc3X8qnCKZBXm8fxk0HmkVC5z0CGGI3enXCQY4guHnkH1QUvq2wY4Bw/06Iskv3dxS4q1D7vXwbcw==",
       "dev": true,
+      "dependencies": {
+        "arrangekeys": "^6.5.0",
+        "editions": "^6.19.0"
+      },
       "engines": {
-        "node": ">=8"
+        "node": ">=4"
+      },
+      "funding": {
+        "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/assert-helpers": {
-      "version": "11.9.0",
-      "resolved": "https://registry.npmjs.org/assert-helpers/-/assert-helpers-11.9.0.tgz",
-      "integrity": "sha512-nFb4nEv+E1kGppjGlPl8QPxXA+HcZqV1gX7ltbiBMiUvzT2pbv5Jfo1dIGvm+ZXkEstvn7mPUtkZIVevwmTLBA==",
+    "node_modules/arrangekeys": {
+      "version": "6.6.0",
+      "resolved": "https://registry.npmjs.org/arrangekeys/-/arrangekeys-6.6.0.tgz",
+      "integrity": "sha512-yU9DBpdOCb1Mgb95BiKMjh91A1HyKFy0xY9nO0Hqj8ny4zms+Y3t+Ik6YXGAktN6eertY1B516nVvYgB6vcbrA==",
       "dev": true,
-      "dependencies": {
-        "@bevry/ansi": "^6.7.0",
-        "editions": "^6.18.0",
-        "errlop": "^8.2.0"
-      },
       "engines": {
         "node": ">=4"
       },
@@ -938,13 +946,24 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/assert-helpers/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/assert-helpers": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/assert-helpers/-/assert-helpers-11.11.0.tgz",
+      "integrity": "sha512-NB3iZr7ejlSwZQaqJe9zTf5zVtyeVm/SWpDfoiQqY1EYbJuO4Gtodyw8UtYpoqwUqnZxdEIeDFjMszPkZm+Cpw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/ansi": "^6.8.0",
+        "editions": "^6.19.0",
+        "errlop": "^8.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -966,9 +985,9 @@
       }
     },
     "node_modules/badges": {
-      "version": "4.38.0",
-      "resolved": "https://registry.npmjs.org/badges/-/badges-4.38.0.tgz",
-      "integrity": "sha512-X1ESSh+HvznvX1sK3+XWX9GgOVN4C7cM1VM7TBQKzVav4KDiggunCRbuJ8JltT8zmOeBSvSpwLjnHUCHexzPQw==",
+      "version": "4.39.0",
+      "resolved": "https://registry.npmjs.org/badges/-/badges-4.39.0.tgz",
+      "integrity": "sha512-IC4Li+FK8gnM4FOTjfT8xubZXFRajFfMki+jfn2ygWQWJfmcHBvNX2FaCSFgIC+3IjvVOUHeMvdL9+xTcqEUaQ==",
       "dev": true,
       "engines": {
         "node": ">=10"
@@ -1003,15 +1022,6 @@
         }
       ]
     },
-    "node_modules/big-integer": {
-      "version": "1.6.52",
-      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
-      "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
     "node_modules/bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -1023,26 +1033,13 @@
         "readable-stream": "^3.4.0"
       }
     },
-    "node_modules/bplist-parser": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
-      "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
-      "dev": true,
-      "dependencies": {
-        "big-integer": "^1.6.44"
-      },
-      "engines": {
-        "node": ">= 5.10.0"
-      }
-    },
     "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
       "dev": true,
       "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
+        "balanced-match": "^1.0.0"
       }
     },
     "node_modules/braces": {
@@ -1081,21 +1078,6 @@
         "ieee754": "^1.1.13"
       }
     },
-    "node_modules/bundle-name": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
-      "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
-      "dev": true,
-      "dependencies": {
-        "run-applescript": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/callsites": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -1106,18 +1088,18 @@
       }
     },
     "node_modules/caterpillar": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/caterpillar/-/caterpillar-7.0.0.tgz",
-      "integrity": "sha512-xZBdJ+r5SCHlmbkYs7xV4aUgUFa2Lc2MXH8gQCDg9CKLk7ui/Z2Ahq2b/LSYmyTj3XCJQRvn5ECabEU8peSQMg==",
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/caterpillar/-/caterpillar-8.0.0.tgz",
+      "integrity": "sha512-kH7v5aT5sag65OMCI6Hp4sVItAeYFVWcc6iKj+k43S8tRrSS9vSD98vNcyhCWjb96ad/9Snk6CWH1AGRRtiKrg==",
       "dev": true,
       "dependencies": {
-        "@bevry/ansi": "^6.5.0",
-        "editions": "^6.15.0",
-        "get-current-line": "^7.0.0",
-        "rfc-log-levels": "^3.21.0"
+        "@bevry/ansi": "^6.7.0",
+        "editions": "^6.19.0",
+        "get-current-line": "^7.1.0",
+        "rfc-log-levels": "^4.0.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=4"
       },
       "funding": {
         "url": "https://bevry.me/fund"
@@ -1200,51 +1182,11 @@
       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
       "dev": true
     },
-    "node_modules/default-browser": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
-      "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
-      "dev": true,
-      "dependencies": {
-        "bundle-name": "^3.0.0",
-        "default-browser-id": "^3.0.0",
-        "execa": "^7.1.1",
-        "titleize": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/default-browser-id": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
-      "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
-      "dev": true,
-      "dependencies": {
-        "bplist-parser": "^0.2.0",
-        "untildify": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/define-lazy-prop": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
-      "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
+    "node_modules/deprecation": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+      "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
+      "dev": true
     },
     "node_modules/dir-glob": {
       "version": "3.0.1",
@@ -1271,28 +1213,13 @@
       }
     },
     "node_modules/eachr": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/eachr/-/eachr-7.2.0.tgz",
-      "integrity": "sha512-zv0Vtm0c0mvTvamW3duiGqadnu4w9oIpG7p8YLb2z7bDj5wGRvzNJTLyMeWiuOvYXj9kT411ox0UAa8fziUIeg==",
-      "dev": true,
-      "dependencies": {
-        "editions": "^6.19.0",
-        "typechecker": "^9.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/eachr/node_modules/typechecker": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-9.2.0.tgz",
-      "integrity": "sha512-WrIeSNqD6gW0Ss8OPHB0xHLyihoCsE57NZ5aLeYkLG75SOwP2uE9MtAnqKyca48X70vuJ3SNiSMRtop7Dnmg8A==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/eachr/-/eachr-7.3.0.tgz",
+      "integrity": "sha512-L4dgCLYGloNh4wjaZgKWZq/9X4Tl65It+7JN6rXsRIcn2ialVe99fMe66nWsK2TtUQwmGdaiT9L8Nr/qxhGRtA==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.19.0"
+        "editions": "^6.20.0",
+        "typechecker": "^9.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -1302,12 +1229,12 @@
       }
     },
     "node_modules/editions": {
-      "version": "6.19.0",
-      "resolved": "https://registry.npmjs.org/editions/-/editions-6.19.0.tgz",
-      "integrity": "sha512-mJabiGaqoKWjgz0kqrVPzLBsk4sh11zcNXKFXBZ3eLwwHBWylz5OcrBrZRRaLPWoRpm9m428CLzKcituabUuFg==",
+      "version": "6.20.0",
+      "resolved": "https://registry.npmjs.org/editions/-/editions-6.20.0.tgz",
+      "integrity": "sha512-5je+78ri3gtfO+q9cerK8jPNam5YUpYe5OPHQFjrGKvb28D2qVBFiQmmeEyVHeZDLGAUkPtQqwv98t5CR733rg==",
       "dev": true,
       "dependencies": {
-        "version-range": "^4.11.0"
+        "version-range": "^4.12.0"
       },
       "engines": {
         "node": ">=4"
@@ -1317,12 +1244,12 @@
       }
     },
     "node_modules/errlop": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-7.5.0.tgz",
-      "integrity": "sha512-a+Gfi8cGPEydVJ61AAflAldvShSW1zoELe39O6fOOi2QBCC9/+kIaNphyg6BIEXZ6fTSvEJBwDG6OeBYiXjZwg==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.3.0.tgz",
+      "integrity": "sha512-bURkSJZa8lHBO1PGLBwWVclgmqnVE6W8Ob9/YYuFfdDzqoUcqvyQUuBJfmfICavXBGtjUCDJCEQ5oW7eor6I1A==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.16.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=4"
@@ -1344,15 +1271,15 @@
       }
     },
     "node_modules/eslint": {
-      "version": "8.55.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
-      "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
+      "version": "8.56.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+      "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
         "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.55.0",
+        "@eslint/js": "8.56.0",
         "@humanwhocodes/config-array": "^0.11.13",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
@@ -1399,12 +1326,12 @@
       }
     },
     "node_modules/eslint-config-bevry": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/eslint-config-bevry/-/eslint-config-bevry-5.2.0.tgz",
-      "integrity": "sha512-fST7kg8t2rYHwjO1dV6DoB4ufrYnm5h4ATWD/y1whfXUa+qy22V4yKQSGjoD/uQWmg+z38ny+fPARWxtymoOZQ==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-bevry/-/eslint-config-bevry-5.3.0.tgz",
+      "integrity": "sha512-Evt7Z+djPEMRG/IHA/BvwrzE6u50x8jicCJG0+HLBQjQ9pj4BTsQ9s3BOPScissv6+Klw1EC29hceWTs5EKj9A==",
       "dev": true,
       "dependencies": {
-        "version-clean": "^1.1.0"
+        "version-clean": "^1.6.0"
       },
       "engines": {
         "node": ">=6"
@@ -1426,23 +1353,24 @@
       }
     },
     "node_modules/eslint-plugin-prettier": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz",
-      "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz",
+      "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==",
       "dev": true,
       "dependencies": {
         "prettier-linter-helpers": "^1.0.0",
-        "synckit": "^0.8.5"
+        "synckit": "^0.8.6"
       },
       "engines": {
         "node": "^14.18.0 || >=16.0.0"
       },
       "funding": {
-        "url": "https://opencollective.com/prettier"
+        "url": "https://opencollective.com/eslint-plugin-prettier"
       },
       "peerDependencies": {
         "@types/eslint": ">=8.0.0",
         "eslint": ">=8.0.0",
+        "eslint-config-prettier": "*",
         "prettier": ">=3.0.0"
       },
       "peerDependenciesMeta": {
@@ -1482,6 +1410,28 @@
         "url": "https://opencollective.com/eslint"
       }
     },
+    "node_modules/eslint/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/eslint/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/espree": {
       "version": "9.6.1",
       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -1558,52 +1508,14 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/execa": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
-      "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.1",
-        "human-signals": "^4.3.0",
-        "is-stream": "^3.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^5.1.0",
-        "onetime": "^6.0.0",
-        "signal-exit": "^3.0.7",
-        "strip-final-newline": "^3.0.0"
-      },
-      "engines": {
-        "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
     "node_modules/extendr": {
-      "version": "7.7.0",
-      "resolved": "https://registry.npmjs.org/extendr/-/extendr-7.7.0.tgz",
-      "integrity": "sha512-WNe03/We28gFV/oZv0T+B02oFMKp3iWTtnC9YkpDcKO8NhaUXSEif8R7CegYRTQ0Qfn2VVydT79hdhuW6NtLRQ==",
+      "version": "7.8.0",
+      "resolved": "https://registry.npmjs.org/extendr/-/extendr-7.8.0.tgz",
+      "integrity": "sha512-4Sh1PnvyvWe7mLne6eqb66ueLwz5Gp+dtlf4KNl8QsVRmQHeIfUJWFLcqLIM8o8iuFhha3g6lxGy6MRQsFAUgw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.19.0",
-        "typechecker": "^9.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/extendr/node_modules/typechecker": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-9.2.0.tgz",
-      "integrity": "sha512-WrIeSNqD6gW0Ss8OPHB0xHLyihoCsE57NZ5aLeYkLG75SOwP2uE9MtAnqKyca48X70vuJ3SNiSMRtop7Dnmg8A==",
-      "dev": true,
-      "dependencies": {
-        "editions": "^6.19.0"
+        "editions": "^6.20.0",
+        "typechecker": "^9.3.0"
       },
       "engines": {
         "node": ">=4"
@@ -1665,19 +1577,23 @@
       "dev": true
     },
     "node_modules/fastq": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
-      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+      "version": "1.16.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+      "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
       "dev": true,
       "dependencies": {
         "reusify": "^1.0.4"
       }
     },
     "node_modules/fellow": {
-      "version": "6.25.0",
-      "resolved": "https://registry.npmjs.org/fellow/-/fellow-6.25.0.tgz",
-      "integrity": "sha512-/eYuI5Cr9hi2Llw5VHIdiDQKe4cL4Qa1a9EE8NxuT/xa7KsfsnF7pBcYXIhmqSLxPbWS1ozF1vzYcN4VTf9OwA==",
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/fellow/-/fellow-7.0.4.tgz",
+      "integrity": "sha512-yQo/A5v7IPNo2IPRVlD/j9H2oV3Jw44Ep0X6X3kOywGwQSme3x6cjbZ6d9R8pB0kxj5AhljKek/oOZc3/nGU4A==",
       "dev": true,
+      "dependencies": {
+        "@bevry/render": "^1.0.0",
+        "editions": "^6.19.0"
+      },
       "engines": {
         "node": ">=10"
       },
@@ -1752,12 +1668,12 @@
       "dev": true
     },
     "node_modules/get-cli-arg": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/get-cli-arg/-/get-cli-arg-8.3.0.tgz",
-      "integrity": "sha512-oZhUYqxhpFJyBX/Oc6I47cv0d0fNKJHMocUIXmnb2jwzXy+Yo0HIGOtsdx1z/I27Gwi12tDfG4Z6iTzd+eTSEA==",
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/get-cli-arg/-/get-cli-arg-8.4.0.tgz",
+      "integrity": "sha512-eWC8UMQgiy8RvXof1uFu1//2PZu8VlLzCuhqho/UfEEKXI+yvX8pv7/V3H2V3mVfa4U2s70MNoSmN0lGhnWSZQ==",
       "dev": true,
       "dependencies": {
-        "normalify": "^2.28.0"
+        "normalify": "^2.30.0"
       },
       "engines": {
         "node": ">=8"
@@ -1767,12 +1683,12 @@
       }
     },
     "node_modules/get-current-line": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/get-current-line/-/get-current-line-7.1.0.tgz",
-      "integrity": "sha512-s0pz6fWzYT+nxEw/n7+wOO/mqQ0DBnjMLA42Xg6P5iRmJoJMenw5XF0ML0OyqJ8q+Slc/FXlktQ6tQMkvXfeRg==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/get-current-line/-/get-current-line-7.2.0.tgz",
+      "integrity": "sha512-k/On1QP4i5+3ZeyISc7vodzmEypo43VIpk+agCEeee11uqGJ3OUiz/SzfJxHV+nitZF/29EwDPJvbngvNgW3uA==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.16.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=4"
@@ -1781,18 +1697,6 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/glob": {
       "version": "7.2.3",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -1825,10 +1729,32 @@
         "node": ">=10.13.0"
       }
     },
+    "node_modules/glob/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/glob/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/globals": {
-      "version": "13.23.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
-      "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+      "version": "13.24.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
       "dev": true,
       "dependencies": {
         "type-fest": "^0.20.2"
@@ -1875,15 +1801,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/human-signals": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
-      "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=14.18.0"
-      }
-    },
     "node_modules/ieee754": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -1954,21 +1871,6 @@
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
       "dev": true
     },
-    "node_modules/is-docker": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
-      "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
-      "dev": true,
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -1990,24 +1892,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/is-inside-container": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
-      "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
-      "dev": true,
-      "dependencies": {
-        "is-docker": "^3.0.0"
-      },
-      "bin": {
-        "is-inside-container": "cli.js"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -2026,45 +1910,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/is-stream": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
-      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-wsl": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-      "dev": true,
-      "dependencies": {
-        "is-docker": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-wsl/node_modules/is-docker": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-      "dev": true,
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -2108,14 +1953,14 @@
       "dev": true
     },
     "node_modules/kava": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/kava/-/kava-7.5.0.tgz",
-      "integrity": "sha512-gqQiikuO2dcO1fSJhGvVYIRwAGg+1cEcyFA7IlluKNJf4IqXR/tPUS1nA9Kk/jlq9FQ1uXRZsHN5nwIxaztfig==",
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/kava/-/kava-7.6.0.tgz",
+      "integrity": "sha512-73r6Lo741JF535S2QPo/BLi9MxdzUC4FNAcpsMYOcSRD+/6LQVPOmmDfTQxBvDP5BDJQ60sEC6PJWxV3eSh4RA==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.19.0",
+        "editions": "^6.20.0",
         "event-emitter-grouped": "^6.4.0",
-        "taskgroup": "^9.5.1"
+        "taskgroup": "^9.6.0"
       },
       "engines": {
         "node": ">=4"
@@ -2186,61 +2031,27 @@
       "dev": true
     },
     "node_modules/make-deno-edition": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/make-deno-edition/-/make-deno-edition-2.0.1.tgz",
-      "integrity": "sha512-JflMwb3prODWvenwY5kInUgbIyF5oyFnV3Cf6DyivyRFzajx3LU5Abmuz5PxzcuHkLjUcPJmyh8o/rK0RFuhkw==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/ansi": "^6.4.0",
-        "@bevry/fs-list": "^2.2.0",
-        "@bevry/fs-read": "^1.2.0",
-        "@bevry/fs-readable": "^2.1.0",
-        "@bevry/fs-remove": "^1.2.0",
-        "@bevry/fs-write": "^1.2.0",
-        "@bevry/json": "^2.0.0",
-        "await-spawn": "^4.0.2",
-        "errlop": "^7.3.0",
-        "get-cli-arg": "^8.2.0"
-      },
-      "bin": {
-        "make-deno-edition": "bin.cjs"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/make-deno-edition/node_modules/@bevry/json": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.2.0.tgz",
-      "integrity": "sha512-lmP/7FP9cHY2PQhrbFTxkdzOlMpIjdfe9ognyEWO4WyJlGhCoz6jTEN7b5YINeyHgQ02iUZ78TuKrJHFu/OD3g==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/make-deno-edition/-/make-deno-edition-2.1.0.tgz",
+      "integrity": "sha512-MNHn3nWVfyylYdabG0qPptAwF09Ln7zdEDMgmjyeGtv9ri1ToBkhvhhFiZkltsztNUwkoAVFmKR7aDKw6v9Gwg==",
       "dev": true,
       "dependencies": {
+        "@bevry/ansi": "^6.7.0",
+        "@bevry/fs-list": "^2.4.0",
         "@bevry/fs-read": "^1.4.0",
-        "@bevry/fs-unlink": "^1.4.0",
-        "@bevry/fs-write": "^1.4.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/make-deno-edition/node_modules/@bevry/json/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
-      "dev": true,
-      "dependencies": {
-        "editions": "^6.18.0"
+        "@bevry/fs-readable": "^2.3.0",
+        "@bevry/fs-remove": "^1.4.0",
+        "@bevry/fs-write": "^1.4.0",
+        "@bevry/json": "^2.2.0",
+        "await-spawn": "^4.0.2",
+        "errlop": "^8.2.0",
+        "get-cli-arg": "^8.4.0"
+      },
+      "bin": {
+        "make-deno-edition": "bin.cjs"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=18"
       },
       "funding": {
         "url": "https://bevry.me/fund"
@@ -2258,12 +2069,6 @@
         "node": ">= 12"
       }
     },
-    "node_modules/merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
     "node_modules/merge2": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -2286,28 +2091,19 @@
         "node": ">=8.6"
       }
     },
-    "node_modules/mimic-fn": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
-      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "version": "9.0.3",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+      "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
       "dev": true,
       "dependencies": {
-        "brace-expansion": "^1.1.7"
+        "brace-expansion": "^2.0.1"
       },
       "engines": {
-        "node": "*"
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
     "node_modules/ms": {
@@ -2317,12 +2113,12 @@
       "dev": true
     },
     "node_modules/native-promise-pool": {
-      "version": "3.25.0",
-      "resolved": "https://registry.npmjs.org/native-promise-pool/-/native-promise-pool-3.25.0.tgz",
-      "integrity": "sha512-FrtUErgKMbshbyL3iNMm2yRywBzf2vFc/rkLPmixWTnYUaeIALjF5Os9R/D12D6PA0L8vzqrhKjuDELzhsypxg==",
+      "version": "3.26.0",
+      "resolved": "https://registry.npmjs.org/native-promise-pool/-/native-promise-pool-3.26.0.tgz",
+      "integrity": "sha512-vIzAV+BzQaTctUgPs2WMJmXma/0EA+lJFgwY+/ghMS5UB4U9Eq/OiUbAqsk/e9BM9DL/3QG3Rhp3xuThBh66kw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.16.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=10"
@@ -2349,33 +2145,6 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/npm-run-path": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
-      "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/npm-run-path/node_modules/path-key": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
-      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -2385,39 +2154,6 @@
         "wrappy": "1"
       }
     },
-    "node_modules/onetime": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
-      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/open": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
-      "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
-      "dev": true,
-      "dependencies": {
-        "default-browser": "^4.0.0",
-        "define-lazy-prop": "^3.0.0",
-        "is-inside-container": "^1.0.0",
-        "is-wsl": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/optionator": {
       "version": "0.9.3",
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
@@ -2513,12 +2249,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
-    },
     "node_modules/picomatch": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -2541,9 +2271,9 @@
       }
     },
     "node_modules/prettier": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
-      "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
+      "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
       "dev": true,
       "bin": {
         "prettier": "bin/prettier.cjs"
@@ -2568,22 +2298,25 @@
       }
     },
     "node_modules/projectz": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/projectz/-/projectz-3.4.0.tgz",
-      "integrity": "sha512-T3A/ioNJAhFhCxR33JBCH5OMXoJeDCTmmftC1XlfQl8wI3BTrSK7kUEym0OtbmCrpYmvxE/+x4NDoROliPkMdA==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-list": "^2.3.0",
-        "@bevry/fs-read": "^1.3.0",
-        "@bevry/fs-write": "^1.3.0",
-        "@bevry/json": "^2.1.0",
-        "badges": "^4.37.0",
-        "caterpillar": "^7.0.0",
-        "fellow": "^6.25.0",
-        "get-cli-arg": "^8.3.0",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/projectz/-/projectz-4.0.0.tgz",
+      "integrity": "sha512-bUJ5mjvTgD0bI0tbpC8AO4a7FgYkXXGtN49MRNxVNLRNxvwd4yr2oVXmbngz5XN/lHpJU3fgOYBbf+PYCd3U5A==",
+      "dev": true,
+      "dependencies": {
+        "@bevry/argument": "^1.0.0",
+        "@bevry/fs-list": "^2.4.0",
+        "@bevry/fs-read": "^1.4.0",
+        "@bevry/fs-write": "^1.4.0",
+        "@bevry/github-api": "^11.0.0",
+        "@bevry/json": "^2.2.1",
+        "@bevry/render": "^1.0.0",
+        "arrange-package-json": "^5.0.2",
+        "badges": "^4.38.0",
+        "caterpillar": "^8.0.0",
         "spdx-expression-parse": "^4.0.0",
         "spdx-license-list": "^6.8.0",
-        "typechecker": "^8.5.0"
+        "trim-empty-keys": "^1.0.1",
+        "typechecker": "^9.2.0"
       },
       "bin": {
         "projectz": "bin.cjs"
@@ -2595,40 +2328,6 @@
         "url": "https://bevry.me/fund"
       }
     },
-    "node_modules/projectz/node_modules/@bevry/json": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.2.0.tgz",
-      "integrity": "sha512-lmP/7FP9cHY2PQhrbFTxkdzOlMpIjdfe9ognyEWO4WyJlGhCoz6jTEN7b5YINeyHgQ02iUZ78TuKrJHFu/OD3g==",
-      "dev": true,
-      "dependencies": {
-        "@bevry/fs-read": "^1.4.0",
-        "@bevry/fs-unlink": "^1.4.0",
-        "@bevry/fs-write": "^1.4.0",
-        "editions": "^6.19.0",
-        "errlop": "^8.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
-    "node_modules/projectz/node_modules/errlop": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.2.0.tgz",
-      "integrity": "sha512-jwhRvDRvl9osF8Z1jnRtq3R9vUTkHxP6bZbijo702kzdWyw8yP95YXF4gDcYoCMVbH16Hthz1vkz+HoZQ8DehA==",
-      "dev": true,
-      "dependencies": {
-        "editions": "^6.18.0"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "funding": {
-        "url": "https://bevry.me/fund"
-      }
-    },
     "node_modules/punycode": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -2692,12 +2391,15 @@
       }
     },
     "node_modules/rfc-log-levels": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/rfc-log-levels/-/rfc-log-levels-3.21.0.tgz",
-      "integrity": "sha512-AP+S8PnysICJ8XD4MGM5yyODJFmQW30Xs37FGkheWGosUVlYsTnK1gYTytyVbc4CYzKai6Jmh//7C2aUErp79g==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/rfc-log-levels/-/rfc-log-levels-4.1.0.tgz",
+      "integrity": "sha512-y+fVhL1sywPejgdtM8UypjvroP+CKLdtlqCV+QkwEfFDQh4IzFZuqQS7Z9pyZLHngc3wYmuQpy4K0sS/CI9z3A==",
       "dev": true,
+      "dependencies": {
+        "editions": "^6.19.0"
+      },
       "engines": {
-        "node": ">=10"
+        "node": ">=4"
       },
       "funding": {
         "url": "https://bevry.me/fund"
@@ -2718,110 +2420,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/run-applescript": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
-      "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/run-applescript/node_modules/execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.0",
-        "human-signals": "^2.1.0",
-        "is-stream": "^2.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^4.0.1",
-        "onetime": "^5.1.2",
-        "signal-exit": "^3.0.3",
-        "strip-final-newline": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
-    "node_modules/run-applescript/node_modules/human-signals": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
-      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.17.0"
-      }
-    },
-    "node_modules/run-applescript/node_modules/is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/run-applescript/node_modules/mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/run-applescript/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/run-applescript/node_modules/onetime": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/run-applescript/node_modules/strip-final-newline": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/run-parallel": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -2902,9 +2500,9 @@
       }
     },
     "node_modules/shiki": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz",
-      "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==",
+      "version": "0.14.7",
+      "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz",
+      "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==",
       "dev": true,
       "dependencies": {
         "ansi-sequence-parser": "^1.1.0",
@@ -2913,12 +2511,6 @@
         "vscode-textmate": "^8.0.0"
       }
     },
-    "node_modules/signal-exit": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-      "dev": true
-    },
     "node_modules/simplytyped": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/simplytyped/-/simplytyped-3.3.0.tgz",
@@ -2992,18 +2584,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/strip-final-newline": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
-      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/strip-json-comments": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -3029,12 +2609,12 @@
       }
     },
     "node_modules/synckit": {
-      "version": "0.8.6",
-      "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz",
-      "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==",
+      "version": "0.8.8",
+      "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
+      "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
       "dev": true,
       "dependencies": {
-        "@pkgr/utils": "^2.4.2",
+        "@pkgr/core": "^0.1.0",
         "tslib": "^2.6.2"
       },
       "engines": {
@@ -3045,16 +2625,16 @@
       }
     },
     "node_modules/taskgroup": {
-      "version": "9.5.1",
-      "resolved": "https://registry.npmjs.org/taskgroup/-/taskgroup-9.5.1.tgz",
-      "integrity": "sha512-2bbc54OtPOn0t8qk771XPhlMSM8nZK74DISvjM275EcwLDt+7ArJqLOOJbCnEidvd5K2lwQjzsJWtezqyKyccQ==",
+      "version": "9.6.0",
+      "resolved": "https://registry.npmjs.org/taskgroup/-/taskgroup-9.6.0.tgz",
+      "integrity": "sha512-/QFF4wiY1wSxswvz2NUpG5oFiW928Dpe5nrNDqeMDJnou7j5BtCyONpW7XIoX4h/6xgbVEVKAUKkrYANJ1uwCw==",
       "dev": true,
       "dependencies": {
         "ambi": "3.2.0",
-        "eachr": "^7.1.0",
-        "editions": "^6.18.0",
-        "extendr": "^7.5.0",
-        "unbounded": "^6.0.0"
+        "eachr": "^7.3.0",
+        "editions": "^6.20.0",
+        "extendr": "^7.8.0",
+        "unbounded": "^6.2.0"
       },
       "engines": {
         "node": ">=4"
@@ -3064,12 +2644,12 @@
       }
     },
     "node_modules/taskgroup/node_modules/unbounded": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/unbounded/-/unbounded-6.1.0.tgz",
-      "integrity": "sha512-Urd4W0lyK0wTs9T26m2DxZ+LCh/JGhAr9C9G4LojxRAaxnAiT0Uv5+qgbjAFAQQavD8hzgcKCwMldJfrPekWow==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/unbounded/-/unbounded-6.2.0.tgz",
+      "integrity": "sha512-gQx0OS8Mg5usDTCmqaBGAfbbeRtBkFGWP6WqHbLsoEaRtCW7sY/1BrpkoW83SRZYROhF+lVOjK6y/mKz9VSjXw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.19.0"
+        "editions": "^6.20.0"
       },
       "engines": {
         "node": ">=4"
@@ -3084,18 +2664,6 @@
       "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
       "dev": true
     },
-    "node_modules/titleize": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
-      "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -3108,6 +2676,21 @@
         "node": ">=8.0"
       }
     },
+    "node_modules/trim-empty-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-empty-keys/-/trim-empty-keys-1.0.1.tgz",
+      "integrity": "sha512-ewq4ybzbCpezfVXZHfOE5MYP8CBGJYOka6z3xTHsIdsDmO/NGDav0OyNY4IC/N+KQZxaLU2fJDT2nDDvsRg8lg==",
+      "dev": true,
+      "dependencies": {
+        "typechecker": "^9.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://bevry.me/fund"
+      }
+    },
     "node_modules/ts-api-utils": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
@@ -3151,12 +2734,12 @@
       }
     },
     "node_modules/typechecker": {
-      "version": "8.6.0",
-      "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-8.6.0.tgz",
-      "integrity": "sha512-s803IhKCZLZ9ZbYArmRzI+0gqUGE9TEzz4hR2EXF0ecFaZTIHv6QFduYhwbhdTruIO+R9UkhB6hOP5SGsv9ksw==",
+      "version": "9.3.0",
+      "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-9.3.0.tgz",
+      "integrity": "sha512-7NKr0EkLaL5fkYE56DPwqgQx1FjepvDRZ64trUgb1NgeFqLkaZThI2L33vFJzN4plVyAN5zWcov57QcZIU3bjg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.16.0"
+        "editions": "^6.20.0"
       },
       "engines": {
         "node": ">=4"
@@ -3186,34 +2769,10 @@
         "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x"
       }
     },
-    "node_modules/typedoc/node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/typedoc/node_modules/minimatch": {
-      "version": "9.0.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
-      "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
     "node_modules/typescript": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz",
-      "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==",
+      "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+      "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
       "dev": true,
       "bin": {
         "tsc": "bin/tsc",
@@ -3244,14 +2803,11 @@
       "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
       "dev": true
     },
-    "node_modules/untildify": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
-      "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
+    "node_modules/universal-user-agent": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
+      "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
+      "dev": true
     },
     "node_modules/uri-js": {
       "version": "4.4.1",
@@ -3269,12 +2825,12 @@
       "dev": true
     },
     "node_modules/valid-directory": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/valid-directory/-/valid-directory-4.6.0.tgz",
-      "integrity": "sha512-RmyZBz+X2IkJ1TP6VRYQm6CHQTTydLWv3h1PSdJ4l/MJc/5m9LGK7NdkJCfDaI/I3fHCMcRPiPVBD5HYOlsKYg==",
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/valid-directory/-/valid-directory-4.7.0.tgz",
+      "integrity": "sha512-DGxoViQM+cV9mZf2mGrMfcTcZNd5uJ2dOOitdgt1OmRjk3dkvLRilUoEFpeVtSgPga2xHtQzB9rcgZvSeIDh8A==",
       "dev": true,
       "dependencies": {
-        "@bevry/valid-filename": "^2.2.0",
+        "@bevry/valid-filename": "^2.4.0",
         "fdir": "^6.1.1"
       },
       "bin": {
@@ -3333,13 +2889,28 @@
         "url": "https://bevry.me/fund"
       }
     },
+    "node_modules/valid-module/node_modules/errlop": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/errlop/-/errlop-7.5.0.tgz",
+      "integrity": "sha512-a+Gfi8cGPEydVJ61AAflAldvShSW1zoELe39O6fOOi2QBCC9/+kIaNphyg6BIEXZ6fTSvEJBwDG6OeBYiXjZwg==",
+      "dev": true,
+      "dependencies": {
+        "editions": "^6.16.0"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "funding": {
+        "url": "https://bevry.me/fund"
+      }
+    },
     "node_modules/version-clean": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/version-clean/-/version-clean-1.6.0.tgz",
-      "integrity": "sha512-3U9p8b28wM3EwzokF22qNAVK3bArQU9SQYMoGv8e55MaTutMbndwdDnc5X2nQoZySZOSm/BykdUdZ/Zkm6R6pQ==",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/version-clean/-/version-clean-1.7.0.tgz",
+      "integrity": "sha512-tVBoblMMBxMBVw79pKpU0RyirDNl82MfQxR2HyhdM497g+FmDVng4zdxZoRiL33zoRJJQ2TxXSd7z4IV0tMyXg==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=4"
@@ -3349,12 +2920,12 @@
       }
     },
     "node_modules/version-compare": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/version-compare/-/version-compare-3.8.0.tgz",
-      "integrity": "sha512-90rv+kdT8VyU45h6hOQeP9w8EuxHDdBOzHbHZZKrhw3zpaK3nJXgKDSCkV/OlUgvmt7vprCB1R9VuHrgjffpIg==",
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/version-compare/-/version-compare-3.9.0.tgz",
+      "integrity": "sha512-X8PJVO+oT97rMFzdRtQNpxyXvUrJGJYl0EuUDGUqg5bBWTIwxeunjjqx6ZSbHf5ZiSXOvfC6ReO/BxmujlSVtw==",
       "dev": true,
       "dependencies": {
-        "editions": "^6.18.0"
+        "editions": "^6.19.0"
       },
       "engines": {
         "node": ">=4"
@@ -3364,9 +2935,9 @@
       }
     },
     "node_modules/version-range": {
-      "version": "4.11.0",
-      "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.11.0.tgz",
-      "integrity": "sha512-h6ZOpIbN1Dk6hfDAmni/lOMncSUcIU1/6XsDc54kQe9/lMzzzv53ovpTr0CbNDJz2GLbmr/yyrQjD8vntyxXxg==",
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.12.0.tgz",
+      "integrity": "sha512-bMQpI+oTiKgu210v610sSUAyAXA9PwNQpAyjKxev2ykBeX1hcKvmoMvy7RorPYR1out62dyH/AvrT3HhGPkkCw==",
       "dev": true,
       "engines": {
         "node": ">=4"
diff --git a/package.json b/package.json
index 715b1f3..7d8c287 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,17 @@
 {
   "name": "unicode-symbols",
-  "version": "7.3.0",
+  "version": "7.4.0",
+  "license": "Artistic-2.0",
   "description": "Unicode Symbols",
   "homepage": "https://github.com/bevry/unicode-symbols",
-  "license": "Artistic-2.0",
+  "funding": "https://bevry.me/fund",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bevry/unicode-symbols.git"
+  },
+  "bugs": {
+    "url": "https://github.com/bevry/unicode-symbols/issues"
+  },
   "keywords": [
     "browser",
     "characters",
@@ -67,32 +75,52 @@
       "npmPackageName": "unicode-symbols"
     }
   },
-  "funding": "https://bevry.me/fund",
-  "author": "2023+ Benjamin Lupton  (https://balupton.com)",
+  "author": "Benjamin Lupton  (https://balupton.com) (https://github.com/balupton)",
+  "authors": [
+    "Benjamin Lupton  (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."
+  ],
   "maintainers": [
-    "Benjamin Lupton  (https://github.com/balupton)"
+    "Benjamin Lupton  (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."
   ],
   "contributors": [
-    "Benjamin Lupton  (https://github.com/balupton)",
+    "Benjamin Lupton  (https://balupton.com) (https://github.com/balupton)",
     "Brandon Smith (https://github.com/brandon93s)",
-    "Christophe Hurpeau  (https://github.com/christophehurpeau)",
-    "Corey Farrell  (https://github.com/coreyfarrell)",
+    "Christophe Hurpeau  (https://christophe.hurpeau.com) (https://github.com/christophehurpeau)",
+    "Corey Farrell  (https://fosstodon.org/@coreyfarrell) (https://github.com/coreyfarrell)",
     "Dimitri B. (https://github.com/BendingBender)",
-    "Jannis R  (https://github.com/derhuerst)",
+    "ehmicky (https://fosstodon.org/@ehmicky) (https://github.com/ehmicky)",
+    "Jannis R  (https://jannisr.de) (https://github.com/derhuerst)",
     "Kevin Goslar  (https://github.com/kevgo)",
     "Richard Gibson (https://github.com/gibson042)",
-    "Richie Bendall  (https://github.com/Richienb)",
-    "Sam Verschueren (https://github.com/SamVerschueren)",
-    "Sindre Sorhus  (https://github.com/sindresorhus)",
-    "ehmicky (https://github.com/ehmicky)"
+    "Richie Bendall  (https://github.com/richienb)",
+    "Sam Verschueren (https://github.com/SamVerschueren) (https://twitter.com/SamVerschueren)",
+    "Sindre Sorhus  (https://sindresorhus.com/apps) (https://github.com/sindresorhus)"
+  ],
+  "sponsors": [
+    "Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher",
+    "Balsa  (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.",
+    "Codecov  (https://codecov.io/) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.",
+    "Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)",
+    "Rob Morris  (https://github.com/Rob-Morris)",
+    "Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.",
+    "Syntax  (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"
+  ],
+  "donors": [
+    "Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)",
+    "Balsa  (https://balsa.com) (https://github.com/balsa)",
+    "Chad (https://opencollective.com/chad8)",
+    "Codecov  (https://codecov.io/) (https://github.com/codecov)",
+    "entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)",
+    "Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)",
+    "Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)",
+    "Mohammed Shah  (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)",
+    "Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)",
+    "Rob Morris  (https://github.com/Rob-Morris)",
+    "Sentry (https://sentry.io) (https://github.com/getsentry)",
+    "ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)",
+    "Skunk Team (https://skunk.team) (https://github.com/skunkteam)",
+    "Syntax  (https://syntax.fm) (https://github.com/syntaxfm)"
   ],
-  "bugs": {
-    "url": "https://github.com/bevry/unicode-symbols/issues"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/bevry/unicode-symbols.git"
-  },
   "engines": {
     "node": ">=4"
   },
@@ -123,7 +151,7 @@
       }
     },
     {
-      "description": "TypeScript compiled against ES2022 for Node.js 21 with Require for modules",
+      "description": "TypeScript compiled against ES2022 for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules",
       "directory": "edition-es2022",
       "entry": "index.js",
       "tags": [
@@ -138,7 +166,7 @@
       }
     },
     {
-      "description": "TypeScript compiled against ES2022 for Node.js 21 with Import for modules",
+      "description": "TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Import for modules",
       "directory": "edition-es2022-esm",
       "entry": "index.js",
       "tags": [
@@ -196,22 +224,21 @@
   "browser": "edition-browsers/index.js",
   "module": "edition-browsers/index.js",
   "devDependencies": {
-    "@bevry/update-contributors": "^1.23.0",
-    "@types/node": "^20.10.3",
-    "@typescript-eslint/eslint-plugin": "^6.13.2",
-    "@typescript-eslint/parser": "^6.13.2",
-    "assert-helpers": "^11.9.0",
-    "eslint": "^8.55.0",
-    "eslint-config-bevry": "^5.2.0",
+    "@types/node": "^20.10.5",
+    "@typescript-eslint/eslint-plugin": "^6.16.0",
+    "@typescript-eslint/parser": "^6.16.0",
+    "assert-helpers": "^11.11.0",
+    "eslint": "^8.56.0",
+    "eslint-config-bevry": "^5.3.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-prettier": "^5.0.1",
-    "kava": "^7.5.0",
-    "make-deno-edition": "^2.0.1",
-    "prettier": "^3.1.0",
-    "projectz": "^3.4.0",
+    "eslint-plugin-prettier": "^5.1.2",
+    "kava": "^7.6.0",
+    "make-deno-edition": "^2.1.0",
+    "prettier": "^3.1.1",
+    "projectz": "^4.0.0",
     "typedoc": "^0.25.4",
-    "typescript": "5.3.2",
-    "valid-directory": "^4.6.0",
+    "typescript": "5.3.3",
+    "valid-directory": "^4.7.0",
     "valid-module": "^2.6.0"
   },
   "scripts": {
@@ -223,11 +250,10 @@
     "our:compile:edition-es2022-esm": "tsc --module ESNext --target ES2022 --outDir ./edition-es2022-esm --project tsconfig.json && ( test ! -d edition-es2022-esm/source || ( mv edition-es2022-esm/source edition-temp && rm -rf edition-es2022-esm && mv edition-temp edition-es2022-esm ) ) && printf '%s' '{\"type\": \"module\"}' > edition-es2022-esm/package.json",
     "our:compile:edition-types": "tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )",
     "our:deploy": "printf '%s\n' 'no need for this project'",
-    "our:meta": "npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz",
-    "our:meta:contributors": "update-contributors",
+    "our:meta": "npm run our:meta:docs && npm run our:meta:projectz",
     "our:meta:docs": "npm run our:meta:docs:typedoc",
     "our:meta:docs:typedoc": "rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source",
-    "our:meta:projectz": "projectz compile",
+    "our:meta:projectz": "projectz",
     "our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push",
     "our:release:check-changelog": "cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)",
     "our:release:check-dirty": "git diff --exit-code",
@@ -237,13 +263,15 @@
     "our:setup": "npm run our:setup:install",
     "our:setup:install": "npm install",
     "our:test": "npm run our:verify && npm test",
-    "our:verify": "npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:module && npm run our:verify:prettier",
-    "our:verify:directory": "valid-directory",
+    "our:verify": "npm run our:verify:eslint && npm run our:verify:module && npm run our:verify:prettier",
     "our:verify:eslint": "eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source",
     "our:verify:module": "valid-module",
     "our:verify:prettier": "prettier --write .",
     "test": "node ./edition-es2022/test.js"
   },
+  "boundation": {
+    "browser": true
+  },
   "eslintConfig": {
     "extends": [
       "bevry"
@@ -254,8 +282,5 @@
     "singleQuote": true,
     "trailingComma": "all",
     "endOfLine": "lf"
-  },
-  "boundation": {
-    "browser": true
   }
-}
\ No newline at end of file
+}
diff --git a/readme.md b/readme.md
index c194b54..d86a01b 100644
--- a/readme.md
+++ b/readme.md
@@ -1,10 +1,9 @@
 
 
-

unicode-symbols

+# unicode-symbols - Status of the GitHub Workflow: bevry @@ -25,7 +24,6 @@ - Unicode Symbols @@ -41,91 +39,93 @@ Forked from [sindresorhus/figures](https://github.com/sindresorhus/figures) -

Install

+## Install + +### [npm](https://npmjs.com "npm is a package manager for javascript") -

npm

-
    -
  • Install: npm install --save unicode-symbols
  • -
  • Import: import * as pkg from ('unicode-symbols')
  • -
  • Require: const pkg = require('unicode-symbols')
  • -
+- Install: `npm install --save unicode-symbols` +- Import: `import * as pkg from ('unicode-symbols')` +- Require: `const pkg = require('unicode-symbols')` -

Deno

+### [Deno](https://deno.land "Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js") ``` typescript -import * as pkg from 'https://unpkg.com/unicode-symbols@^7.3.0/edition-deno/index.ts' +import * as pkg from 'https://unpkg.com/unicode-symbols@^7.4.0/edition-deno/index.ts' ``` - -

Skypack

+### [Skypack](https://www.skypack.dev "Skypack is a JavaScript Delivery Network for modern web apps") ``` html ``` - -

unpkg

+### [unpkg](https://unpkg.com "unpkg is a fast, global content delivery network for everything on npm") ``` html ``` - -

jspm

+### [jspm](https://jspm.io "Native ES Modules CDN") ``` html ``` +### [Editions](https://editions.bevry.me "Editions are the best way to produce and consume packages you care about.") -

Editions

- -

This package is published with the following editions:

- -
  • unicode-symbols/source/index.ts is TypeScript source code with Import for modules
  • -
  • unicode-symbols/edition-browsers/index.js is TypeScript compiled against ES2022 for web browsers with Import for modules
  • -
  • unicode-symbols aliases unicode-symbols/edition-es2022/index.js
  • -
  • unicode-symbols/edition-es2022/index.js is TypeScript compiled against ES2022 for Node.js 21 with Require for modules
  • -
  • unicode-symbols/edition-es2022-esm/index.js is TypeScript compiled against ES2022 for Node.js 21 with Import for modules
  • -
  • unicode-symbols/edition-types/index.d.ts is TypeScript compiled Types with Import for modules
  • -
  • unicode-symbols/edition-deno/index.ts is TypeScript source code made to be compatible with Deno
+This package is published with the following editions: +- `unicode-symbols/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules +- `unicode-symbols/edition-browsers/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for web browsers with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules +- `unicode-symbols` aliases `unicode-symbols/edition-es2022/index.js` +- `unicode-symbols/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules +- `unicode-symbols/edition-es2022-esm/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 12 || 14 || 16 || 18 || 20 || 21 with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules +- `unicode-symbols/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules +- `unicode-symbols/edition-deno/index.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") source code made to be compatible with [Deno](https://deno.land "Deno is a secure runtime for JavaScript and TypeScript, it is an alternative to Node.js") - -

History

+## History -Discover the release history by heading on over to the HISTORY.md file. +[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/unicode-symbols/blob/HEAD/HISTORY.md#files) + - - -

Contribute

- -Discover how you can contribute by heading on over to the CONTRIBUTING.md file. +## Backers - +### Code +[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/unicode-symbols/blob/HEAD/CONTRIBUTING.md#files) - +#### Authors -

Backers

+- [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom. -

Maintainers

+#### Maintainers -These amazing people are maintaining this project: +- [Benjamin Lupton](https://github.com/balupton) — Accelerating collaborative wisdom. - +#### Contributors -

Sponsors

+- [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=balupton "View the GitHub contributions of Benjamin Lupton on repository bevry/unicode-symbols") +- [Brandon Smith](https://github.com/brandon93s) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=brandon93s "View the GitHub contributions of Brandon Smith on repository bevry/unicode-symbols") +- [Christophe Hurpeau](https://github.com/christophehurpeau) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=christophehurpeau "View the GitHub contributions of Christophe Hurpeau on repository bevry/unicode-symbols") +- [Corey Farrell](https://github.com/coreyfarrell) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=coreyfarrell "View the GitHub contributions of Corey Farrell on repository bevry/unicode-symbols") +- [Dimitri B.](https://github.com/BendingBender) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=BendingBender "View the GitHub contributions of Dimitri B. on repository bevry/unicode-symbols") +- [ehmicky](https://github.com/ehmicky) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=ehmicky "View the GitHub contributions of ehmicky on repository bevry/unicode-symbols") +- [Jannis R](https://github.com/derhuerst) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=derhuerst "View the GitHub contributions of Jannis R on repository bevry/unicode-symbols") +- [Kevin Goslar](https://github.com/kevgo) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=kevgo "View the GitHub contributions of Kevin Goslar on repository bevry/unicode-symbols") +- [Richard Gibson](https://github.com/gibson042) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=gibson042 "View the GitHub contributions of Richard Gibson on repository bevry/unicode-symbols") +- [Richie Bendall](https://github.com/richienb) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=richienb "View the GitHub contributions of Richie Bendall on repository bevry/unicode-symbols") +- [Sam Verschueren](https://github.com/SamVerschueren) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=SamVerschueren "View the GitHub contributions of Sam Verschueren on repository bevry/unicode-symbols") +- [Sindre Sorhus](https://github.com/sindresorhus) — [view contributions](https://github.com/bevry/unicode-symbols/commits?author=sindresorhus "View the GitHub contributions of Sindre Sorhus on repository bevry/unicode-symbols") -No sponsors yet! Will you be the first? +### Finances GitHub Sponsors donate button ThanksDev donate button @@ -136,38 +136,45 @@ No sponsors yet! Will you be the first? crypto donate button PayPal donate button -

Contributors

- -These amazing people have contributed code to this project: - - - -Discover how you can contribute by heading on over to the CONTRIBUTING.md file. +#### Sponsors + +- [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher +- [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders. +- [Codecov](https://codecov.io/) — Empower developers with tools to improve code quality and testing. +- [Poonacha Medappa](https://poonachamedappa.com) +- [Rob Morris](https://github.com/Rob-Morris) +- [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games. +- [Syntax](https://syntax.fm) — Syntax Podcast + +#### Donors + +- [Andrew Nesbitt](https://nesbitt.io) +- [Balsa](https://balsa.com) +- [Chad](https://opencollective.com/chad8) +- [Codecov](https://codecov.io/) +- [entroniq](https://gitlab.com/entroniq) +- [Jean-Luc Geering](https://github.com/jlgeering) +- [Michael Duane Mooring](https://mdm.cc) +- [Mohammed Shah](https://github.com/smashah) +- [Poonacha Medappa](https://poonachamedappa.com) +- [Rob Morris](https://github.com/Rob-Morris) +- [Sentry](https://sentry.io) +- [ServieJS](https://github.com/serviejs) +- [Skunk Team](https://skunk.team) +- [Syntax](https://syntax.fm) - -

License

+## License Unless stated otherwise all works are: - +- Copyright © [Benjamin Lupton](https://balupton.com) and licensed under: - +- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)