[READ-ONLY] Mirror of https://github.com/FoxxMD/logging. A typed, opinionated, batteries-included, Pino-based logging solution for backend TS/JS projects foxxmd.github.io/logging
child-logger logging logging-library nodejs pinojs typescript-library
0

Configure Feed

Select the types of activity you want to include in your feed.

Initial commit

FoxxMD (Feb 23, 2024, 3:30 PM EST) 0f1520c2

+3025
+29
.github/workflows/typedoc_deploy.yml
··· 1 + # https://github.com/TypeStrong/typedoc/issues/1485#issuecomment-889376169 2 + name: Typedoc Deploy 3 + 4 + on: [push, pull_request] 5 + 6 + jobs: 7 + build_and_deploy: 8 + runs-on: ubuntu-latest 9 + steps: 10 + - name: Checkout the repository 11 + uses: actions/checkout@v3 12 + 13 + - name: Setup Node.js 14 + uses: actions/setup-node@v3 15 + with: 16 + node-version: 18.x 17 + cache: 'yarn' 18 + 19 + - run: yarn install --frozen-lockfile 20 + - run: yarn run build 21 + 22 + - name: Create the docs directory locally in CI 23 + run: npx typedoc 24 + 25 + - name: Deploy 🚀 26 + uses: JamesIves/github-pages-deploy-action@4.1.4 27 + with: 28 + branch: gh-pages 29 + folder: docs
+12
.gitignore
··· 1 + **/src/**/*.map 2 + **/src/**/*.js 3 + **/src/**/*.d.ts 4 + **/tests/**/*.map 5 + **/tests/**/*.js 6 + **/tests/**/*.d.ts 7 + node_modules/ 8 + /.idea 9 + /docs 10 + .tshy 11 + .tshy-build-tmp 12 + dist
+5
.mocharc.json
··· 1 + { 2 + "reporter": "dot", 3 + "extension": "ts", 4 + "import": "tsx/esm" 5 + }
+1
.nvmrc
··· 1 + lts/hydrogen
+21
LICENSE
··· 1 + MIT License 2 + 3 + Copyright (c) 2024 Matt Foxx 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+2536
package-lock.json
··· 1 + { 2 + "name": "@foxxmd/logging", 3 + "version": "0.1.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "@foxxmd/logging", 9 + "version": "0.1.0", 10 + "license": "MIT", 11 + "dependencies": { 12 + "pino": "^8.19.0", 13 + "pino-pretty": "^10.3.1", 14 + "pino-roll": "^1.0.0-rc.1", 15 + "pony-cause": "^2.1.10", 16 + "tsx": "^4.7.0" 17 + }, 18 + "devDependencies": { 19 + "@types/chai": "^4.3.0", 20 + "@types/chai-as-promised": "^7.1.5", 21 + "@types/mocha": "^9.1.0", 22 + "@types/node": "^18.0.0", 23 + "chai": "^4.3.6", 24 + "chai-as-promised": "^7.1.1", 25 + "mocha": "^10.2.0", 26 + "ts-node": "^10.9.1", 27 + "tsconfig-paths": "^4.2.0", 28 + "tshy": "^1.7.0", 29 + "typescript": "^5.3.3", 30 + "yaml": "^2.3.4" 31 + }, 32 + "engines": { 33 + "node": ">=18.0.0", 34 + "npm": ">=9.3.0" 35 + } 36 + }, 37 + "node_modules/@cspotcode/source-map-support": { 38 + "version": "0.8.1", 39 + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 40 + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 41 + "dev": true, 42 + "dependencies": { 43 + "@jridgewell/trace-mapping": "0.3.9" 44 + }, 45 + "engines": { 46 + "node": ">=12" 47 + } 48 + }, 49 + "node_modules/@esbuild/aix-ppc64": { 50 + "version": "0.19.12", 51 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", 52 + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", 53 + "cpu": [ 54 + "ppc64" 55 + ], 56 + "optional": true, 57 + "os": [ 58 + "aix" 59 + ], 60 + "engines": { 61 + "node": ">=12" 62 + } 63 + }, 64 + "node_modules/@esbuild/android-arm": { 65 + "version": "0.19.12", 66 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", 67 + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", 68 + "cpu": [ 69 + "arm" 70 + ], 71 + "optional": true, 72 + "os": [ 73 + "android" 74 + ], 75 + "engines": { 76 + "node": ">=12" 77 + } 78 + }, 79 + "node_modules/@esbuild/android-arm64": { 80 + "version": "0.19.12", 81 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", 82 + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", 83 + "cpu": [ 84 + "arm64" 85 + ], 86 + "optional": true, 87 + "os": [ 88 + "android" 89 + ], 90 + "engines": { 91 + "node": ">=12" 92 + } 93 + }, 94 + "node_modules/@esbuild/android-x64": { 95 + "version": "0.19.12", 96 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", 97 + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", 98 + "cpu": [ 99 + "x64" 100 + ], 101 + "optional": true, 102 + "os": [ 103 + "android" 104 + ], 105 + "engines": { 106 + "node": ">=12" 107 + } 108 + }, 109 + "node_modules/@esbuild/darwin-arm64": { 110 + "version": "0.19.12", 111 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", 112 + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", 113 + "cpu": [ 114 + "arm64" 115 + ], 116 + "optional": true, 117 + "os": [ 118 + "darwin" 119 + ], 120 + "engines": { 121 + "node": ">=12" 122 + } 123 + }, 124 + "node_modules/@esbuild/darwin-x64": { 125 + "version": "0.19.12", 126 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", 127 + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", 128 + "cpu": [ 129 + "x64" 130 + ], 131 + "optional": true, 132 + "os": [ 133 + "darwin" 134 + ], 135 + "engines": { 136 + "node": ">=12" 137 + } 138 + }, 139 + "node_modules/@esbuild/freebsd-arm64": { 140 + "version": "0.19.12", 141 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", 142 + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", 143 + "cpu": [ 144 + "arm64" 145 + ], 146 + "optional": true, 147 + "os": [ 148 + "freebsd" 149 + ], 150 + "engines": { 151 + "node": ">=12" 152 + } 153 + }, 154 + "node_modules/@esbuild/freebsd-x64": { 155 + "version": "0.19.12", 156 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", 157 + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", 158 + "cpu": [ 159 + "x64" 160 + ], 161 + "optional": true, 162 + "os": [ 163 + "freebsd" 164 + ], 165 + "engines": { 166 + "node": ">=12" 167 + } 168 + }, 169 + "node_modules/@esbuild/linux-arm": { 170 + "version": "0.19.12", 171 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", 172 + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", 173 + "cpu": [ 174 + "arm" 175 + ], 176 + "optional": true, 177 + "os": [ 178 + "linux" 179 + ], 180 + "engines": { 181 + "node": ">=12" 182 + } 183 + }, 184 + "node_modules/@esbuild/linux-arm64": { 185 + "version": "0.19.12", 186 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", 187 + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", 188 + "cpu": [ 189 + "arm64" 190 + ], 191 + "optional": true, 192 + "os": [ 193 + "linux" 194 + ], 195 + "engines": { 196 + "node": ">=12" 197 + } 198 + }, 199 + "node_modules/@esbuild/linux-ia32": { 200 + "version": "0.19.12", 201 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", 202 + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", 203 + "cpu": [ 204 + "ia32" 205 + ], 206 + "optional": true, 207 + "os": [ 208 + "linux" 209 + ], 210 + "engines": { 211 + "node": ">=12" 212 + } 213 + }, 214 + "node_modules/@esbuild/linux-loong64": { 215 + "version": "0.19.12", 216 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", 217 + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", 218 + "cpu": [ 219 + "loong64" 220 + ], 221 + "optional": true, 222 + "os": [ 223 + "linux" 224 + ], 225 + "engines": { 226 + "node": ">=12" 227 + } 228 + }, 229 + "node_modules/@esbuild/linux-mips64el": { 230 + "version": "0.19.12", 231 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", 232 + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", 233 + "cpu": [ 234 + "mips64el" 235 + ], 236 + "optional": true, 237 + "os": [ 238 + "linux" 239 + ], 240 + "engines": { 241 + "node": ">=12" 242 + } 243 + }, 244 + "node_modules/@esbuild/linux-ppc64": { 245 + "version": "0.19.12", 246 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", 247 + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", 248 + "cpu": [ 249 + "ppc64" 250 + ], 251 + "optional": true, 252 + "os": [ 253 + "linux" 254 + ], 255 + "engines": { 256 + "node": ">=12" 257 + } 258 + }, 259 + "node_modules/@esbuild/linux-riscv64": { 260 + "version": "0.19.12", 261 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", 262 + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", 263 + "cpu": [ 264 + "riscv64" 265 + ], 266 + "optional": true, 267 + "os": [ 268 + "linux" 269 + ], 270 + "engines": { 271 + "node": ">=12" 272 + } 273 + }, 274 + "node_modules/@esbuild/linux-s390x": { 275 + "version": "0.19.12", 276 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", 277 + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", 278 + "cpu": [ 279 + "s390x" 280 + ], 281 + "optional": true, 282 + "os": [ 283 + "linux" 284 + ], 285 + "engines": { 286 + "node": ">=12" 287 + } 288 + }, 289 + "node_modules/@esbuild/linux-x64": { 290 + "version": "0.19.12", 291 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", 292 + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", 293 + "cpu": [ 294 + "x64" 295 + ], 296 + "optional": true, 297 + "os": [ 298 + "linux" 299 + ], 300 + "engines": { 301 + "node": ">=12" 302 + } 303 + }, 304 + "node_modules/@esbuild/netbsd-x64": { 305 + "version": "0.19.12", 306 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", 307 + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", 308 + "cpu": [ 309 + "x64" 310 + ], 311 + "optional": true, 312 + "os": [ 313 + "netbsd" 314 + ], 315 + "engines": { 316 + "node": ">=12" 317 + } 318 + }, 319 + "node_modules/@esbuild/openbsd-x64": { 320 + "version": "0.19.12", 321 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", 322 + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", 323 + "cpu": [ 324 + "x64" 325 + ], 326 + "optional": true, 327 + "os": [ 328 + "openbsd" 329 + ], 330 + "engines": { 331 + "node": ">=12" 332 + } 333 + }, 334 + "node_modules/@esbuild/sunos-x64": { 335 + "version": "0.19.12", 336 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", 337 + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", 338 + "cpu": [ 339 + "x64" 340 + ], 341 + "optional": true, 342 + "os": [ 343 + "sunos" 344 + ], 345 + "engines": { 346 + "node": ">=12" 347 + } 348 + }, 349 + "node_modules/@esbuild/win32-arm64": { 350 + "version": "0.19.12", 351 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", 352 + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", 353 + "cpu": [ 354 + "arm64" 355 + ], 356 + "optional": true, 357 + "os": [ 358 + "win32" 359 + ], 360 + "engines": { 361 + "node": ">=12" 362 + } 363 + }, 364 + "node_modules/@esbuild/win32-ia32": { 365 + "version": "0.19.12", 366 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", 367 + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", 368 + "cpu": [ 369 + "ia32" 370 + ], 371 + "optional": true, 372 + "os": [ 373 + "win32" 374 + ], 375 + "engines": { 376 + "node": ">=12" 377 + } 378 + }, 379 + "node_modules/@esbuild/win32-x64": { 380 + "version": "0.19.12", 381 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", 382 + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", 383 + "cpu": [ 384 + "x64" 385 + ], 386 + "optional": true, 387 + "os": [ 388 + "win32" 389 + ], 390 + "engines": { 391 + "node": ">=12" 392 + } 393 + }, 394 + "node_modules/@isaacs/cliui": { 395 + "version": "8.0.2", 396 + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 397 + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 398 + "dev": true, 399 + "dependencies": { 400 + "string-width": "^5.1.2", 401 + "string-width-cjs": "npm:string-width@^4.2.0", 402 + "strip-ansi": "^7.0.1", 403 + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 404 + "wrap-ansi": "^8.1.0", 405 + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 406 + }, 407 + "engines": { 408 + "node": ">=12" 409 + } 410 + }, 411 + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 412 + "version": "6.0.1", 413 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 414 + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 415 + "dev": true, 416 + "engines": { 417 + "node": ">=12" 418 + }, 419 + "funding": { 420 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 421 + } 422 + }, 423 + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { 424 + "version": "6.2.1", 425 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 426 + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 427 + "dev": true, 428 + "engines": { 429 + "node": ">=12" 430 + }, 431 + "funding": { 432 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 433 + } 434 + }, 435 + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 436 + "version": "9.2.2", 437 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 438 + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 439 + "dev": true 440 + }, 441 + "node_modules/@isaacs/cliui/node_modules/string-width": { 442 + "version": "5.1.2", 443 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 444 + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 445 + "dev": true, 446 + "dependencies": { 447 + "eastasianwidth": "^0.2.0", 448 + "emoji-regex": "^9.2.2", 449 + "strip-ansi": "^7.0.1" 450 + }, 451 + "engines": { 452 + "node": ">=12" 453 + }, 454 + "funding": { 455 + "url": "https://github.com/sponsors/sindresorhus" 456 + } 457 + }, 458 + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 459 + "version": "7.1.0", 460 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 461 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 462 + "dev": true, 463 + "dependencies": { 464 + "ansi-regex": "^6.0.1" 465 + }, 466 + "engines": { 467 + "node": ">=12" 468 + }, 469 + "funding": { 470 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 471 + } 472 + }, 473 + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 474 + "version": "8.1.0", 475 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 476 + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 477 + "dev": true, 478 + "dependencies": { 479 + "ansi-styles": "^6.1.0", 480 + "string-width": "^5.0.1", 481 + "strip-ansi": "^7.0.1" 482 + }, 483 + "engines": { 484 + "node": ">=12" 485 + }, 486 + "funding": { 487 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 488 + } 489 + }, 490 + "node_modules/@jridgewell/resolve-uri": { 491 + "version": "3.1.2", 492 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 493 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 494 + "dev": true, 495 + "engines": { 496 + "node": ">=6.0.0" 497 + } 498 + }, 499 + "node_modules/@jridgewell/sourcemap-codec": { 500 + "version": "1.4.15", 501 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 502 + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 503 + "dev": true 504 + }, 505 + "node_modules/@jridgewell/trace-mapping": { 506 + "version": "0.3.9", 507 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 508 + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 509 + "dev": true, 510 + "dependencies": { 511 + "@jridgewell/resolve-uri": "^3.0.3", 512 + "@jridgewell/sourcemap-codec": "^1.4.10" 513 + } 514 + }, 515 + "node_modules/@pkgjs/parseargs": { 516 + "version": "0.11.0", 517 + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 518 + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 519 + "dev": true, 520 + "optional": true, 521 + "engines": { 522 + "node": ">=14" 523 + } 524 + }, 525 + "node_modules/@tsconfig/node10": { 526 + "version": "1.0.9", 527 + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", 528 + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", 529 + "dev": true 530 + }, 531 + "node_modules/@tsconfig/node12": { 532 + "version": "1.0.11", 533 + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 534 + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 535 + "dev": true 536 + }, 537 + "node_modules/@tsconfig/node14": { 538 + "version": "1.0.3", 539 + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 540 + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 541 + "dev": true 542 + }, 543 + "node_modules/@tsconfig/node16": { 544 + "version": "1.0.4", 545 + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", 546 + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", 547 + "dev": true 548 + }, 549 + "node_modules/@types/chai": { 550 + "version": "4.3.12", 551 + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", 552 + "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", 553 + "dev": true 554 + }, 555 + "node_modules/@types/chai-as-promised": { 556 + "version": "7.1.8", 557 + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", 558 + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", 559 + "dev": true, 560 + "dependencies": { 561 + "@types/chai": "*" 562 + } 563 + }, 564 + "node_modules/@types/mocha": { 565 + "version": "9.1.1", 566 + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", 567 + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", 568 + "dev": true 569 + }, 570 + "node_modules/@types/node": { 571 + "version": "18.19.18", 572 + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.18.tgz", 573 + "integrity": "sha512-80CP7B8y4PzZF0GWx15/gVWRrB5y/bIjNI84NK3cmQJu0WZwvmj2WMA5LcofQFVfLqqCSp545+U2LsrVzX36Zg==", 574 + "dev": true, 575 + "dependencies": { 576 + "undici-types": "~5.26.4" 577 + } 578 + }, 579 + "node_modules/abort-controller": { 580 + "version": "3.0.0", 581 + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 582 + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 583 + "dependencies": { 584 + "event-target-shim": "^5.0.0" 585 + }, 586 + "engines": { 587 + "node": ">=6.5" 588 + } 589 + }, 590 + "node_modules/acorn": { 591 + "version": "8.11.3", 592 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 593 + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 594 + "dev": true, 595 + "bin": { 596 + "acorn": "bin/acorn" 597 + }, 598 + "engines": { 599 + "node": ">=0.4.0" 600 + } 601 + }, 602 + "node_modules/acorn-walk": { 603 + "version": "8.3.2", 604 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", 605 + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", 606 + "dev": true, 607 + "engines": { 608 + "node": ">=0.4.0" 609 + } 610 + }, 611 + "node_modules/ansi-colors": { 612 + "version": "4.1.1", 613 + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 614 + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 615 + "dev": true, 616 + "engines": { 617 + "node": ">=6" 618 + } 619 + }, 620 + "node_modules/ansi-regex": { 621 + "version": "5.0.1", 622 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 623 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 624 + "dev": true, 625 + "engines": { 626 + "node": ">=8" 627 + } 628 + }, 629 + "node_modules/ansi-styles": { 630 + "version": "4.3.0", 631 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 632 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 633 + "dev": true, 634 + "dependencies": { 635 + "color-convert": "^2.0.1" 636 + }, 637 + "engines": { 638 + "node": ">=8" 639 + }, 640 + "funding": { 641 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 642 + } 643 + }, 644 + "node_modules/anymatch": { 645 + "version": "3.1.3", 646 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 647 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 648 + "dev": true, 649 + "dependencies": { 650 + "normalize-path": "^3.0.0", 651 + "picomatch": "^2.0.4" 652 + }, 653 + "engines": { 654 + "node": ">= 8" 655 + } 656 + }, 657 + "node_modules/arg": { 658 + "version": "4.1.3", 659 + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 660 + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 661 + "dev": true 662 + }, 663 + "node_modules/argparse": { 664 + "version": "2.0.1", 665 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 666 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 667 + "dev": true 668 + }, 669 + "node_modules/assertion-error": { 670 + "version": "1.1.0", 671 + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 672 + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 673 + "dev": true, 674 + "engines": { 675 + "node": "*" 676 + } 677 + }, 678 + "node_modules/atomic-sleep": { 679 + "version": "1.0.0", 680 + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", 681 + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", 682 + "engines": { 683 + "node": ">=8.0.0" 684 + } 685 + }, 686 + "node_modules/balanced-match": { 687 + "version": "1.0.2", 688 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 689 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 690 + "dev": true 691 + }, 692 + "node_modules/base64-js": { 693 + "version": "1.5.1", 694 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 695 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 696 + "funding": [ 697 + { 698 + "type": "github", 699 + "url": "https://github.com/sponsors/feross" 700 + }, 701 + { 702 + "type": "patreon", 703 + "url": "https://www.patreon.com/feross" 704 + }, 705 + { 706 + "type": "consulting", 707 + "url": "https://feross.org/support" 708 + } 709 + ] 710 + }, 711 + "node_modules/binary-extensions": { 712 + "version": "2.2.0", 713 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 714 + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 715 + "dev": true, 716 + "engines": { 717 + "node": ">=8" 718 + } 719 + }, 720 + "node_modules/brace-expansion": { 721 + "version": "2.0.1", 722 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 723 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 724 + "dev": true, 725 + "dependencies": { 726 + "balanced-match": "^1.0.0" 727 + } 728 + }, 729 + "node_modules/braces": { 730 + "version": "3.0.2", 731 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 732 + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 733 + "dev": true, 734 + "dependencies": { 735 + "fill-range": "^7.0.1" 736 + }, 737 + "engines": { 738 + "node": ">=8" 739 + } 740 + }, 741 + "node_modules/browser-stdout": { 742 + "version": "1.3.1", 743 + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 744 + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 745 + "dev": true 746 + }, 747 + "node_modules/buffer": { 748 + "version": "6.0.3", 749 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 750 + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 751 + "funding": [ 752 + { 753 + "type": "github", 754 + "url": "https://github.com/sponsors/feross" 755 + }, 756 + { 757 + "type": "patreon", 758 + "url": "https://www.patreon.com/feross" 759 + }, 760 + { 761 + "type": "consulting", 762 + "url": "https://feross.org/support" 763 + } 764 + ], 765 + "dependencies": { 766 + "base64-js": "^1.3.1", 767 + "ieee754": "^1.2.1" 768 + } 769 + }, 770 + "node_modules/camelcase": { 771 + "version": "6.3.0", 772 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 773 + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 774 + "dev": true, 775 + "engines": { 776 + "node": ">=10" 777 + }, 778 + "funding": { 779 + "url": "https://github.com/sponsors/sindresorhus" 780 + } 781 + }, 782 + "node_modules/chai": { 783 + "version": "4.4.1", 784 + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", 785 + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", 786 + "dev": true, 787 + "dependencies": { 788 + "assertion-error": "^1.1.0", 789 + "check-error": "^1.0.3", 790 + "deep-eql": "^4.1.3", 791 + "get-func-name": "^2.0.2", 792 + "loupe": "^2.3.6", 793 + "pathval": "^1.1.1", 794 + "type-detect": "^4.0.8" 795 + }, 796 + "engines": { 797 + "node": ">=4" 798 + } 799 + }, 800 + "node_modules/chai-as-promised": { 801 + "version": "7.1.1", 802 + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", 803 + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", 804 + "dev": true, 805 + "dependencies": { 806 + "check-error": "^1.0.2" 807 + }, 808 + "peerDependencies": { 809 + "chai": ">= 2.1.2 < 5" 810 + } 811 + }, 812 + "node_modules/chalk": { 813 + "version": "4.1.2", 814 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 815 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 816 + "dev": true, 817 + "dependencies": { 818 + "ansi-styles": "^4.1.0", 819 + "supports-color": "^7.1.0" 820 + }, 821 + "engines": { 822 + "node": ">=10" 823 + }, 824 + "funding": { 825 + "url": "https://github.com/chalk/chalk?sponsor=1" 826 + } 827 + }, 828 + "node_modules/chalk/node_modules/supports-color": { 829 + "version": "7.2.0", 830 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 831 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 832 + "dev": true, 833 + "dependencies": { 834 + "has-flag": "^4.0.0" 835 + }, 836 + "engines": { 837 + "node": ">=8" 838 + } 839 + }, 840 + "node_modules/check-error": { 841 + "version": "1.0.3", 842 + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", 843 + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", 844 + "dev": true, 845 + "dependencies": { 846 + "get-func-name": "^2.0.2" 847 + }, 848 + "engines": { 849 + "node": "*" 850 + } 851 + }, 852 + "node_modules/chokidar": { 853 + "version": "3.5.3", 854 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 855 + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 856 + "dev": true, 857 + "funding": [ 858 + { 859 + "type": "individual", 860 + "url": "https://paulmillr.com/funding/" 861 + } 862 + ], 863 + "dependencies": { 864 + "anymatch": "~3.1.2", 865 + "braces": "~3.0.2", 866 + "glob-parent": "~5.1.2", 867 + "is-binary-path": "~2.1.0", 868 + "is-glob": "~4.0.1", 869 + "normalize-path": "~3.0.0", 870 + "readdirp": "~3.6.0" 871 + }, 872 + "engines": { 873 + "node": ">= 8.10.0" 874 + }, 875 + "optionalDependencies": { 876 + "fsevents": "~2.3.2" 877 + } 878 + }, 879 + "node_modules/cliui": { 880 + "version": "7.0.4", 881 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 882 + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 883 + "dev": true, 884 + "dependencies": { 885 + "string-width": "^4.2.0", 886 + "strip-ansi": "^6.0.0", 887 + "wrap-ansi": "^7.0.0" 888 + } 889 + }, 890 + "node_modules/color-convert": { 891 + "version": "2.0.1", 892 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 893 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 894 + "dev": true, 895 + "dependencies": { 896 + "color-name": "~1.1.4" 897 + }, 898 + "engines": { 899 + "node": ">=7.0.0" 900 + } 901 + }, 902 + "node_modules/color-name": { 903 + "version": "1.1.4", 904 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 905 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 906 + "dev": true 907 + }, 908 + "node_modules/colorette": { 909 + "version": "2.0.20", 910 + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 911 + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" 912 + }, 913 + "node_modules/create-require": { 914 + "version": "1.1.1", 915 + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 916 + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 917 + "dev": true 918 + }, 919 + "node_modules/cross-spawn": { 920 + "version": "7.0.3", 921 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 922 + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 923 + "dev": true, 924 + "dependencies": { 925 + "path-key": "^3.1.0", 926 + "shebang-command": "^2.0.0", 927 + "which": "^2.0.1" 928 + }, 929 + "engines": { 930 + "node": ">= 8" 931 + } 932 + }, 933 + "node_modules/dateformat": { 934 + "version": "4.6.3", 935 + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", 936 + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", 937 + "engines": { 938 + "node": "*" 939 + } 940 + }, 941 + "node_modules/debug": { 942 + "version": "4.3.4", 943 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 944 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 945 + "dev": true, 946 + "dependencies": { 947 + "ms": "2.1.2" 948 + }, 949 + "engines": { 950 + "node": ">=6.0" 951 + }, 952 + "peerDependenciesMeta": { 953 + "supports-color": { 954 + "optional": true 955 + } 956 + } 957 + }, 958 + "node_modules/debug/node_modules/ms": { 959 + "version": "2.1.2", 960 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 961 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 962 + "dev": true 963 + }, 964 + "node_modules/decamelize": { 965 + "version": "4.0.0", 966 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 967 + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 968 + "dev": true, 969 + "engines": { 970 + "node": ">=10" 971 + }, 972 + "funding": { 973 + "url": "https://github.com/sponsors/sindresorhus" 974 + } 975 + }, 976 + "node_modules/deep-eql": { 977 + "version": "4.1.3", 978 + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", 979 + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", 980 + "dev": true, 981 + "dependencies": { 982 + "type-detect": "^4.0.0" 983 + }, 984 + "engines": { 985 + "node": ">=6" 986 + } 987 + }, 988 + "node_modules/diff": { 989 + "version": "5.0.0", 990 + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 991 + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 992 + "dev": true, 993 + "engines": { 994 + "node": ">=0.3.1" 995 + } 996 + }, 997 + "node_modules/eastasianwidth": { 998 + "version": "0.2.0", 999 + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1000 + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1001 + "dev": true 1002 + }, 1003 + "node_modules/emoji-regex": { 1004 + "version": "8.0.0", 1005 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1006 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1007 + "dev": true 1008 + }, 1009 + "node_modules/end-of-stream": { 1010 + "version": "1.4.4", 1011 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1012 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1013 + "dependencies": { 1014 + "once": "^1.4.0" 1015 + } 1016 + }, 1017 + "node_modules/esbuild": { 1018 + "version": "0.19.12", 1019 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", 1020 + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", 1021 + "hasInstallScript": true, 1022 + "bin": { 1023 + "esbuild": "bin/esbuild" 1024 + }, 1025 + "engines": { 1026 + "node": ">=12" 1027 + }, 1028 + "optionalDependencies": { 1029 + "@esbuild/aix-ppc64": "0.19.12", 1030 + "@esbuild/android-arm": "0.19.12", 1031 + "@esbuild/android-arm64": "0.19.12", 1032 + "@esbuild/android-x64": "0.19.12", 1033 + "@esbuild/darwin-arm64": "0.19.12", 1034 + "@esbuild/darwin-x64": "0.19.12", 1035 + "@esbuild/freebsd-arm64": "0.19.12", 1036 + "@esbuild/freebsd-x64": "0.19.12", 1037 + "@esbuild/linux-arm": "0.19.12", 1038 + "@esbuild/linux-arm64": "0.19.12", 1039 + "@esbuild/linux-ia32": "0.19.12", 1040 + "@esbuild/linux-loong64": "0.19.12", 1041 + "@esbuild/linux-mips64el": "0.19.12", 1042 + "@esbuild/linux-ppc64": "0.19.12", 1043 + "@esbuild/linux-riscv64": "0.19.12", 1044 + "@esbuild/linux-s390x": "0.19.12", 1045 + "@esbuild/linux-x64": "0.19.12", 1046 + "@esbuild/netbsd-x64": "0.19.12", 1047 + "@esbuild/openbsd-x64": "0.19.12", 1048 + "@esbuild/sunos-x64": "0.19.12", 1049 + "@esbuild/win32-arm64": "0.19.12", 1050 + "@esbuild/win32-ia32": "0.19.12", 1051 + "@esbuild/win32-x64": "0.19.12" 1052 + } 1053 + }, 1054 + "node_modules/escalade": { 1055 + "version": "3.1.2", 1056 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1057 + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1058 + "dev": true, 1059 + "engines": { 1060 + "node": ">=6" 1061 + } 1062 + }, 1063 + "node_modules/escape-string-regexp": { 1064 + "version": "4.0.0", 1065 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1066 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1067 + "dev": true, 1068 + "engines": { 1069 + "node": ">=10" 1070 + }, 1071 + "funding": { 1072 + "url": "https://github.com/sponsors/sindresorhus" 1073 + } 1074 + }, 1075 + "node_modules/event-target-shim": { 1076 + "version": "5.0.1", 1077 + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1078 + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 1079 + "engines": { 1080 + "node": ">=6" 1081 + } 1082 + }, 1083 + "node_modules/events": { 1084 + "version": "3.3.0", 1085 + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1086 + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1087 + "engines": { 1088 + "node": ">=0.8.x" 1089 + } 1090 + }, 1091 + "node_modules/fast-copy": { 1092 + "version": "3.0.1", 1093 + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", 1094 + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==" 1095 + }, 1096 + "node_modules/fast-redact": { 1097 + "version": "3.3.0", 1098 + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", 1099 + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", 1100 + "engines": { 1101 + "node": ">=6" 1102 + } 1103 + }, 1104 + "node_modules/fast-safe-stringify": { 1105 + "version": "2.1.1", 1106 + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", 1107 + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" 1108 + }, 1109 + "node_modules/fill-range": { 1110 + "version": "7.0.1", 1111 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1112 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1113 + "dev": true, 1114 + "dependencies": { 1115 + "to-regex-range": "^5.0.1" 1116 + }, 1117 + "engines": { 1118 + "node": ">=8" 1119 + } 1120 + }, 1121 + "node_modules/find-up": { 1122 + "version": "5.0.0", 1123 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1124 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1125 + "dev": true, 1126 + "dependencies": { 1127 + "locate-path": "^6.0.0", 1128 + "path-exists": "^4.0.0" 1129 + }, 1130 + "engines": { 1131 + "node": ">=10" 1132 + }, 1133 + "funding": { 1134 + "url": "https://github.com/sponsors/sindresorhus" 1135 + } 1136 + }, 1137 + "node_modules/flat": { 1138 + "version": "5.0.2", 1139 + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1140 + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1141 + "dev": true, 1142 + "bin": { 1143 + "flat": "cli.js" 1144 + } 1145 + }, 1146 + "node_modules/foreground-child": { 1147 + "version": "3.1.1", 1148 + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", 1149 + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 1150 + "dev": true, 1151 + "dependencies": { 1152 + "cross-spawn": "^7.0.0", 1153 + "signal-exit": "^4.0.1" 1154 + }, 1155 + "engines": { 1156 + "node": ">=14" 1157 + }, 1158 + "funding": { 1159 + "url": "https://github.com/sponsors/isaacs" 1160 + } 1161 + }, 1162 + "node_modules/fs.realpath": { 1163 + "version": "1.0.0", 1164 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1165 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1166 + "dev": true 1167 + }, 1168 + "node_modules/fsevents": { 1169 + "version": "2.3.3", 1170 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1171 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1172 + "hasInstallScript": true, 1173 + "optional": true, 1174 + "os": [ 1175 + "darwin" 1176 + ], 1177 + "engines": { 1178 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1179 + } 1180 + }, 1181 + "node_modules/get-caller-file": { 1182 + "version": "2.0.5", 1183 + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1184 + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1185 + "dev": true, 1186 + "engines": { 1187 + "node": "6.* || 8.* || >= 10.*" 1188 + } 1189 + }, 1190 + "node_modules/get-func-name": { 1191 + "version": "2.0.2", 1192 + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", 1193 + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", 1194 + "dev": true, 1195 + "engines": { 1196 + "node": "*" 1197 + } 1198 + }, 1199 + "node_modules/get-tsconfig": { 1200 + "version": "4.7.2", 1201 + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", 1202 + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", 1203 + "dependencies": { 1204 + "resolve-pkg-maps": "^1.0.0" 1205 + }, 1206 + "funding": { 1207 + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 1208 + } 1209 + }, 1210 + "node_modules/glob": { 1211 + "version": "8.1.0", 1212 + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1213 + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1214 + "dev": true, 1215 + "dependencies": { 1216 + "fs.realpath": "^1.0.0", 1217 + "inflight": "^1.0.4", 1218 + "inherits": "2", 1219 + "minimatch": "^5.0.1", 1220 + "once": "^1.3.0" 1221 + }, 1222 + "engines": { 1223 + "node": ">=12" 1224 + }, 1225 + "funding": { 1226 + "url": "https://github.com/sponsors/isaacs" 1227 + } 1228 + }, 1229 + "node_modules/glob-parent": { 1230 + "version": "5.1.2", 1231 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1232 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1233 + "dev": true, 1234 + "dependencies": { 1235 + "is-glob": "^4.0.1" 1236 + }, 1237 + "engines": { 1238 + "node": ">= 6" 1239 + } 1240 + }, 1241 + "node_modules/has-flag": { 1242 + "version": "4.0.0", 1243 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1244 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1245 + "dev": true, 1246 + "engines": { 1247 + "node": ">=8" 1248 + } 1249 + }, 1250 + "node_modules/he": { 1251 + "version": "1.2.0", 1252 + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1253 + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1254 + "dev": true, 1255 + "bin": { 1256 + "he": "bin/he" 1257 + } 1258 + }, 1259 + "node_modules/help-me": { 1260 + "version": "5.0.0", 1261 + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", 1262 + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" 1263 + }, 1264 + "node_modules/ieee754": { 1265 + "version": "1.2.1", 1266 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1267 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1268 + "funding": [ 1269 + { 1270 + "type": "github", 1271 + "url": "https://github.com/sponsors/feross" 1272 + }, 1273 + { 1274 + "type": "patreon", 1275 + "url": "https://www.patreon.com/feross" 1276 + }, 1277 + { 1278 + "type": "consulting", 1279 + "url": "https://feross.org/support" 1280 + } 1281 + ] 1282 + }, 1283 + "node_modules/inflight": { 1284 + "version": "1.0.6", 1285 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1286 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1287 + "dev": true, 1288 + "dependencies": { 1289 + "once": "^1.3.0", 1290 + "wrappy": "1" 1291 + } 1292 + }, 1293 + "node_modules/inherits": { 1294 + "version": "2.0.4", 1295 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1296 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1297 + "dev": true 1298 + }, 1299 + "node_modules/is-binary-path": { 1300 + "version": "2.1.0", 1301 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1302 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1303 + "dev": true, 1304 + "dependencies": { 1305 + "binary-extensions": "^2.0.0" 1306 + }, 1307 + "engines": { 1308 + "node": ">=8" 1309 + } 1310 + }, 1311 + "node_modules/is-extglob": { 1312 + "version": "2.1.1", 1313 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1314 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1315 + "dev": true, 1316 + "engines": { 1317 + "node": ">=0.10.0" 1318 + } 1319 + }, 1320 + "node_modules/is-fullwidth-code-point": { 1321 + "version": "3.0.0", 1322 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1323 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1324 + "dev": true, 1325 + "engines": { 1326 + "node": ">=8" 1327 + } 1328 + }, 1329 + "node_modules/is-glob": { 1330 + "version": "4.0.3", 1331 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1332 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1333 + "dev": true, 1334 + "dependencies": { 1335 + "is-extglob": "^2.1.1" 1336 + }, 1337 + "engines": { 1338 + "node": ">=0.10.0" 1339 + } 1340 + }, 1341 + "node_modules/is-number": { 1342 + "version": "7.0.0", 1343 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1344 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1345 + "dev": true, 1346 + "engines": { 1347 + "node": ">=0.12.0" 1348 + } 1349 + }, 1350 + "node_modules/is-plain-obj": { 1351 + "version": "2.1.0", 1352 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1353 + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1354 + "dev": true, 1355 + "engines": { 1356 + "node": ">=8" 1357 + } 1358 + }, 1359 + "node_modules/is-unicode-supported": { 1360 + "version": "0.1.0", 1361 + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1362 + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1363 + "dev": true, 1364 + "engines": { 1365 + "node": ">=10" 1366 + }, 1367 + "funding": { 1368 + "url": "https://github.com/sponsors/sindresorhus" 1369 + } 1370 + }, 1371 + "node_modules/isexe": { 1372 + "version": "2.0.0", 1373 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1374 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1375 + "dev": true 1376 + }, 1377 + "node_modules/jackspeak": { 1378 + "version": "2.3.6", 1379 + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", 1380 + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", 1381 + "dev": true, 1382 + "dependencies": { 1383 + "@isaacs/cliui": "^8.0.2" 1384 + }, 1385 + "engines": { 1386 + "node": ">=14" 1387 + }, 1388 + "funding": { 1389 + "url": "https://github.com/sponsors/isaacs" 1390 + }, 1391 + "optionalDependencies": { 1392 + "@pkgjs/parseargs": "^0.11.0" 1393 + } 1394 + }, 1395 + "node_modules/joycon": { 1396 + "version": "3.1.1", 1397 + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", 1398 + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", 1399 + "engines": { 1400 + "node": ">=10" 1401 + } 1402 + }, 1403 + "node_modules/js-yaml": { 1404 + "version": "4.1.0", 1405 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1406 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1407 + "dev": true, 1408 + "dependencies": { 1409 + "argparse": "^2.0.1" 1410 + }, 1411 + "bin": { 1412 + "js-yaml": "bin/js-yaml.js" 1413 + } 1414 + }, 1415 + "node_modules/json5": { 1416 + "version": "2.2.3", 1417 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1418 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1419 + "dev": true, 1420 + "bin": { 1421 + "json5": "lib/cli.js" 1422 + }, 1423 + "engines": { 1424 + "node": ">=6" 1425 + } 1426 + }, 1427 + "node_modules/locate-path": { 1428 + "version": "6.0.0", 1429 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1430 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1431 + "dev": true, 1432 + "dependencies": { 1433 + "p-locate": "^5.0.0" 1434 + }, 1435 + "engines": { 1436 + "node": ">=10" 1437 + }, 1438 + "funding": { 1439 + "url": "https://github.com/sponsors/sindresorhus" 1440 + } 1441 + }, 1442 + "node_modules/log-symbols": { 1443 + "version": "4.1.0", 1444 + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1445 + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1446 + "dev": true, 1447 + "dependencies": { 1448 + "chalk": "^4.1.0", 1449 + "is-unicode-supported": "^0.1.0" 1450 + }, 1451 + "engines": { 1452 + "node": ">=10" 1453 + }, 1454 + "funding": { 1455 + "url": "https://github.com/sponsors/sindresorhus" 1456 + } 1457 + }, 1458 + "node_modules/loupe": { 1459 + "version": "2.3.7", 1460 + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", 1461 + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", 1462 + "dev": true, 1463 + "dependencies": { 1464 + "get-func-name": "^2.0.1" 1465 + } 1466 + }, 1467 + "node_modules/lru-cache": { 1468 + "version": "10.2.0", 1469 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", 1470 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", 1471 + "dev": true, 1472 + "engines": { 1473 + "node": "14 || >=16.14" 1474 + } 1475 + }, 1476 + "node_modules/make-error": { 1477 + "version": "1.3.6", 1478 + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1479 + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1480 + "dev": true 1481 + }, 1482 + "node_modules/minimatch": { 1483 + "version": "5.0.1", 1484 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 1485 + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 1486 + "dev": true, 1487 + "dependencies": { 1488 + "brace-expansion": "^2.0.1" 1489 + }, 1490 + "engines": { 1491 + "node": ">=10" 1492 + } 1493 + }, 1494 + "node_modules/minimist": { 1495 + "version": "1.2.8", 1496 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1497 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1498 + "funding": { 1499 + "url": "https://github.com/sponsors/ljharb" 1500 + } 1501 + }, 1502 + "node_modules/minipass": { 1503 + "version": "7.0.4", 1504 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", 1505 + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", 1506 + "dev": true, 1507 + "engines": { 1508 + "node": ">=16 || 14 >=14.17" 1509 + } 1510 + }, 1511 + "node_modules/mkdirp": { 1512 + "version": "3.0.1", 1513 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", 1514 + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", 1515 + "dev": true, 1516 + "bin": { 1517 + "mkdirp": "dist/cjs/src/bin.js" 1518 + }, 1519 + "engines": { 1520 + "node": ">=10" 1521 + }, 1522 + "funding": { 1523 + "url": "https://github.com/sponsors/isaacs" 1524 + } 1525 + }, 1526 + "node_modules/mocha": { 1527 + "version": "10.3.0", 1528 + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", 1529 + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", 1530 + "dev": true, 1531 + "dependencies": { 1532 + "ansi-colors": "4.1.1", 1533 + "browser-stdout": "1.3.1", 1534 + "chokidar": "3.5.3", 1535 + "debug": "4.3.4", 1536 + "diff": "5.0.0", 1537 + "escape-string-regexp": "4.0.0", 1538 + "find-up": "5.0.0", 1539 + "glob": "8.1.0", 1540 + "he": "1.2.0", 1541 + "js-yaml": "4.1.0", 1542 + "log-symbols": "4.1.0", 1543 + "minimatch": "5.0.1", 1544 + "ms": "2.1.3", 1545 + "serialize-javascript": "6.0.0", 1546 + "strip-json-comments": "3.1.1", 1547 + "supports-color": "8.1.1", 1548 + "workerpool": "6.2.1", 1549 + "yargs": "16.2.0", 1550 + "yargs-parser": "20.2.4", 1551 + "yargs-unparser": "2.0.0" 1552 + }, 1553 + "bin": { 1554 + "_mocha": "bin/_mocha", 1555 + "mocha": "bin/mocha.js" 1556 + }, 1557 + "engines": { 1558 + "node": ">= 14.0.0" 1559 + } 1560 + }, 1561 + "node_modules/ms": { 1562 + "version": "2.1.3", 1563 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1564 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1565 + "dev": true 1566 + }, 1567 + "node_modules/normalize-path": { 1568 + "version": "3.0.0", 1569 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1570 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1571 + "dev": true, 1572 + "engines": { 1573 + "node": ">=0.10.0" 1574 + } 1575 + }, 1576 + "node_modules/on-exit-leak-free": { 1577 + "version": "2.1.2", 1578 + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", 1579 + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", 1580 + "engines": { 1581 + "node": ">=14.0.0" 1582 + } 1583 + }, 1584 + "node_modules/once": { 1585 + "version": "1.4.0", 1586 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1587 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1588 + "dependencies": { 1589 + "wrappy": "1" 1590 + } 1591 + }, 1592 + "node_modules/p-limit": { 1593 + "version": "3.1.0", 1594 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1595 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1596 + "dev": true, 1597 + "dependencies": { 1598 + "yocto-queue": "^0.1.0" 1599 + }, 1600 + "engines": { 1601 + "node": ">=10" 1602 + }, 1603 + "funding": { 1604 + "url": "https://github.com/sponsors/sindresorhus" 1605 + } 1606 + }, 1607 + "node_modules/p-locate": { 1608 + "version": "5.0.0", 1609 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1610 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1611 + "dev": true, 1612 + "dependencies": { 1613 + "p-limit": "^3.0.2" 1614 + }, 1615 + "engines": { 1616 + "node": ">=10" 1617 + }, 1618 + "funding": { 1619 + "url": "https://github.com/sponsors/sindresorhus" 1620 + } 1621 + }, 1622 + "node_modules/path-exists": { 1623 + "version": "4.0.0", 1624 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1625 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1626 + "dev": true, 1627 + "engines": { 1628 + "node": ">=8" 1629 + } 1630 + }, 1631 + "node_modules/path-key": { 1632 + "version": "3.1.1", 1633 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1634 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1635 + "dev": true, 1636 + "engines": { 1637 + "node": ">=8" 1638 + } 1639 + }, 1640 + "node_modules/path-scurry": { 1641 + "version": "1.10.1", 1642 + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", 1643 + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", 1644 + "dev": true, 1645 + "dependencies": { 1646 + "lru-cache": "^9.1.1 || ^10.0.0", 1647 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1648 + }, 1649 + "engines": { 1650 + "node": ">=16 || 14 >=14.17" 1651 + }, 1652 + "funding": { 1653 + "url": "https://github.com/sponsors/isaacs" 1654 + } 1655 + }, 1656 + "node_modules/pathval": { 1657 + "version": "1.1.1", 1658 + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 1659 + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 1660 + "dev": true, 1661 + "engines": { 1662 + "node": "*" 1663 + } 1664 + }, 1665 + "node_modules/picomatch": { 1666 + "version": "2.3.1", 1667 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1668 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1669 + "dev": true, 1670 + "engines": { 1671 + "node": ">=8.6" 1672 + }, 1673 + "funding": { 1674 + "url": "https://github.com/sponsors/jonschlinkert" 1675 + } 1676 + }, 1677 + "node_modules/pino": { 1678 + "version": "8.19.0", 1679 + "resolved": "https://registry.npmjs.org/pino/-/pino-8.19.0.tgz", 1680 + "integrity": "sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==", 1681 + "dependencies": { 1682 + "atomic-sleep": "^1.0.0", 1683 + "fast-redact": "^3.1.1", 1684 + "on-exit-leak-free": "^2.1.0", 1685 + "pino-abstract-transport": "v1.1.0", 1686 + "pino-std-serializers": "^6.0.0", 1687 + "process-warning": "^3.0.0", 1688 + "quick-format-unescaped": "^4.0.3", 1689 + "real-require": "^0.2.0", 1690 + "safe-stable-stringify": "^2.3.1", 1691 + "sonic-boom": "^3.7.0", 1692 + "thread-stream": "^2.0.0" 1693 + }, 1694 + "bin": { 1695 + "pino": "bin.js" 1696 + } 1697 + }, 1698 + "node_modules/pino-abstract-transport": { 1699 + "version": "1.1.0", 1700 + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", 1701 + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", 1702 + "dependencies": { 1703 + "readable-stream": "^4.0.0", 1704 + "split2": "^4.0.0" 1705 + } 1706 + }, 1707 + "node_modules/pino-pretty": { 1708 + "version": "10.3.1", 1709 + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.3.1.tgz", 1710 + "integrity": "sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==", 1711 + "dependencies": { 1712 + "colorette": "^2.0.7", 1713 + "dateformat": "^4.6.3", 1714 + "fast-copy": "^3.0.0", 1715 + "fast-safe-stringify": "^2.1.1", 1716 + "help-me": "^5.0.0", 1717 + "joycon": "^3.1.1", 1718 + "minimist": "^1.2.6", 1719 + "on-exit-leak-free": "^2.1.0", 1720 + "pino-abstract-transport": "^1.0.0", 1721 + "pump": "^3.0.0", 1722 + "readable-stream": "^4.0.0", 1723 + "secure-json-parse": "^2.4.0", 1724 + "sonic-boom": "^3.0.0", 1725 + "strip-json-comments": "^3.1.1" 1726 + }, 1727 + "bin": { 1728 + "pino-pretty": "bin.js" 1729 + } 1730 + }, 1731 + "node_modules/pino-roll": { 1732 + "version": "1.0.0-rc.1", 1733 + "resolved": "https://registry.npmjs.org/pino-roll/-/pino-roll-1.0.0-rc.1.tgz", 1734 + "integrity": "sha512-wJUXdRMlbbUQkBT8C0ePwPxJpP9Eg2FKUfBAKv2ATsS/+ujtV64l/sLtdQcI+F+aAac0/1QjJOjuVyxUTDq5zA==", 1735 + "dependencies": { 1736 + "sonic-boom": "^2.8.0" 1737 + } 1738 + }, 1739 + "node_modules/pino-roll/node_modules/sonic-boom": { 1740 + "version": "2.8.0", 1741 + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", 1742 + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", 1743 + "dependencies": { 1744 + "atomic-sleep": "^1.0.0" 1745 + } 1746 + }, 1747 + "node_modules/pino-std-serializers": { 1748 + "version": "6.2.2", 1749 + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", 1750 + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" 1751 + }, 1752 + "node_modules/polite-json": { 1753 + "version": "4.0.1", 1754 + "resolved": "https://registry.npmjs.org/polite-json/-/polite-json-4.0.1.tgz", 1755 + "integrity": "sha512-8LI5ZeCPBEb4uBbcYKNVwk4jgqNx1yHReWoW4H4uUihWlSqZsUDfSITrRhjliuPgxsNPFhNSudGO2Zu4cbWinQ==", 1756 + "dev": true, 1757 + "engines": { 1758 + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1759 + }, 1760 + "funding": { 1761 + "url": "https://github.com/sponsors/isaacs" 1762 + } 1763 + }, 1764 + "node_modules/pony-cause": { 1765 + "version": "2.1.10", 1766 + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", 1767 + "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", 1768 + "engines": { 1769 + "node": ">=12.0.0" 1770 + } 1771 + }, 1772 + "node_modules/process": { 1773 + "version": "0.11.10", 1774 + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1775 + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 1776 + "engines": { 1777 + "node": ">= 0.6.0" 1778 + } 1779 + }, 1780 + "node_modules/process-warning": { 1781 + "version": "3.0.0", 1782 + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", 1783 + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" 1784 + }, 1785 + "node_modules/pump": { 1786 + "version": "3.0.0", 1787 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1788 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1789 + "dependencies": { 1790 + "end-of-stream": "^1.1.0", 1791 + "once": "^1.3.1" 1792 + } 1793 + }, 1794 + "node_modules/quick-format-unescaped": { 1795 + "version": "4.0.4", 1796 + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", 1797 + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" 1798 + }, 1799 + "node_modules/randombytes": { 1800 + "version": "2.1.0", 1801 + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1802 + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1803 + "dev": true, 1804 + "dependencies": { 1805 + "safe-buffer": "^5.1.0" 1806 + } 1807 + }, 1808 + "node_modules/readable-stream": { 1809 + "version": "4.5.2", 1810 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", 1811 + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", 1812 + "dependencies": { 1813 + "abort-controller": "^3.0.0", 1814 + "buffer": "^6.0.3", 1815 + "events": "^3.3.0", 1816 + "process": "^0.11.10", 1817 + "string_decoder": "^1.3.0" 1818 + }, 1819 + "engines": { 1820 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1821 + } 1822 + }, 1823 + "node_modules/readdirp": { 1824 + "version": "3.6.0", 1825 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1826 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1827 + "dev": true, 1828 + "dependencies": { 1829 + "picomatch": "^2.2.1" 1830 + }, 1831 + "engines": { 1832 + "node": ">=8.10.0" 1833 + } 1834 + }, 1835 + "node_modules/real-require": { 1836 + "version": "0.2.0", 1837 + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", 1838 + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", 1839 + "engines": { 1840 + "node": ">= 12.13.0" 1841 + } 1842 + }, 1843 + "node_modules/require-directory": { 1844 + "version": "2.1.1", 1845 + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1846 + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1847 + "dev": true, 1848 + "engines": { 1849 + "node": ">=0.10.0" 1850 + } 1851 + }, 1852 + "node_modules/resolve-import": { 1853 + "version": "1.4.5", 1854 + "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-1.4.5.tgz", 1855 + "integrity": "sha512-HXb4YqODuuXT7Icq1Z++0g2JmhgbUHSs3VT2xR83gqvAPUikYT2Xk+562KHQgiaNkbBOlPddYrDLsC44qQggzw==", 1856 + "dev": true, 1857 + "dependencies": { 1858 + "glob": "^10.3.3", 1859 + "walk-up-path": "^3.0.1" 1860 + }, 1861 + "engines": { 1862 + "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" 1863 + }, 1864 + "funding": { 1865 + "url": "https://github.com/sponsors/isaacs" 1866 + } 1867 + }, 1868 + "node_modules/resolve-import/node_modules/glob": { 1869 + "version": "10.3.10", 1870 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", 1871 + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", 1872 + "dev": true, 1873 + "dependencies": { 1874 + "foreground-child": "^3.1.0", 1875 + "jackspeak": "^2.3.5", 1876 + "minimatch": "^9.0.1", 1877 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", 1878 + "path-scurry": "^1.10.1" 1879 + }, 1880 + "bin": { 1881 + "glob": "dist/esm/bin.mjs" 1882 + }, 1883 + "engines": { 1884 + "node": ">=16 || 14 >=14.17" 1885 + }, 1886 + "funding": { 1887 + "url": "https://github.com/sponsors/isaacs" 1888 + } 1889 + }, 1890 + "node_modules/resolve-import/node_modules/minimatch": { 1891 + "version": "9.0.3", 1892 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1893 + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1894 + "dev": true, 1895 + "dependencies": { 1896 + "brace-expansion": "^2.0.1" 1897 + }, 1898 + "engines": { 1899 + "node": ">=16 || 14 >=14.17" 1900 + }, 1901 + "funding": { 1902 + "url": "https://github.com/sponsors/isaacs" 1903 + } 1904 + }, 1905 + "node_modules/resolve-pkg-maps": { 1906 + "version": "1.0.0", 1907 + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 1908 + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 1909 + "funding": { 1910 + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 1911 + } 1912 + }, 1913 + "node_modules/rimraf": { 1914 + "version": "5.0.5", 1915 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", 1916 + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", 1917 + "dev": true, 1918 + "dependencies": { 1919 + "glob": "^10.3.7" 1920 + }, 1921 + "bin": { 1922 + "rimraf": "dist/esm/bin.mjs" 1923 + }, 1924 + "engines": { 1925 + "node": ">=14" 1926 + }, 1927 + "funding": { 1928 + "url": "https://github.com/sponsors/isaacs" 1929 + } 1930 + }, 1931 + "node_modules/rimraf/node_modules/glob": { 1932 + "version": "10.3.10", 1933 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", 1934 + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", 1935 + "dev": true, 1936 + "dependencies": { 1937 + "foreground-child": "^3.1.0", 1938 + "jackspeak": "^2.3.5", 1939 + "minimatch": "^9.0.1", 1940 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", 1941 + "path-scurry": "^1.10.1" 1942 + }, 1943 + "bin": { 1944 + "glob": "dist/esm/bin.mjs" 1945 + }, 1946 + "engines": { 1947 + "node": ">=16 || 14 >=14.17" 1948 + }, 1949 + "funding": { 1950 + "url": "https://github.com/sponsors/isaacs" 1951 + } 1952 + }, 1953 + "node_modules/rimraf/node_modules/minimatch": { 1954 + "version": "9.0.3", 1955 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1956 + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1957 + "dev": true, 1958 + "dependencies": { 1959 + "brace-expansion": "^2.0.1" 1960 + }, 1961 + "engines": { 1962 + "node": ">=16 || 14 >=14.17" 1963 + }, 1964 + "funding": { 1965 + "url": "https://github.com/sponsors/isaacs" 1966 + } 1967 + }, 1968 + "node_modules/safe-buffer": { 1969 + "version": "5.2.1", 1970 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1971 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1972 + "funding": [ 1973 + { 1974 + "type": "github", 1975 + "url": "https://github.com/sponsors/feross" 1976 + }, 1977 + { 1978 + "type": "patreon", 1979 + "url": "https://www.patreon.com/feross" 1980 + }, 1981 + { 1982 + "type": "consulting", 1983 + "url": "https://feross.org/support" 1984 + } 1985 + ] 1986 + }, 1987 + "node_modules/safe-stable-stringify": { 1988 + "version": "2.4.3", 1989 + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", 1990 + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", 1991 + "engines": { 1992 + "node": ">=10" 1993 + } 1994 + }, 1995 + "node_modules/secure-json-parse": { 1996 + "version": "2.7.0", 1997 + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", 1998 + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" 1999 + }, 2000 + "node_modules/serialize-javascript": { 2001 + "version": "6.0.0", 2002 + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 2003 + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 2004 + "dev": true, 2005 + "dependencies": { 2006 + "randombytes": "^2.1.0" 2007 + } 2008 + }, 2009 + "node_modules/shebang-command": { 2010 + "version": "2.0.0", 2011 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2012 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2013 + "dev": true, 2014 + "dependencies": { 2015 + "shebang-regex": "^3.0.0" 2016 + }, 2017 + "engines": { 2018 + "node": ">=8" 2019 + } 2020 + }, 2021 + "node_modules/shebang-regex": { 2022 + "version": "3.0.0", 2023 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2024 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2025 + "dev": true, 2026 + "engines": { 2027 + "node": ">=8" 2028 + } 2029 + }, 2030 + "node_modules/signal-exit": { 2031 + "version": "4.1.0", 2032 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2033 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2034 + "dev": true, 2035 + "engines": { 2036 + "node": ">=14" 2037 + }, 2038 + "funding": { 2039 + "url": "https://github.com/sponsors/isaacs" 2040 + } 2041 + }, 2042 + "node_modules/sonic-boom": { 2043 + "version": "3.8.0", 2044 + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.0.tgz", 2045 + "integrity": "sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==", 2046 + "dependencies": { 2047 + "atomic-sleep": "^1.0.0" 2048 + } 2049 + }, 2050 + "node_modules/split2": { 2051 + "version": "4.2.0", 2052 + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 2053 + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 2054 + "engines": { 2055 + "node": ">= 10.x" 2056 + } 2057 + }, 2058 + "node_modules/string_decoder": { 2059 + "version": "1.3.0", 2060 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2061 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2062 + "dependencies": { 2063 + "safe-buffer": "~5.2.0" 2064 + } 2065 + }, 2066 + "node_modules/string-width": { 2067 + "version": "4.2.3", 2068 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2069 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2070 + "dev": true, 2071 + "dependencies": { 2072 + "emoji-regex": "^8.0.0", 2073 + "is-fullwidth-code-point": "^3.0.0", 2074 + "strip-ansi": "^6.0.1" 2075 + }, 2076 + "engines": { 2077 + "node": ">=8" 2078 + } 2079 + }, 2080 + "node_modules/string-width-cjs": { 2081 + "name": "string-width", 2082 + "version": "4.2.3", 2083 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2084 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2085 + "dev": true, 2086 + "dependencies": { 2087 + "emoji-regex": "^8.0.0", 2088 + "is-fullwidth-code-point": "^3.0.0", 2089 + "strip-ansi": "^6.0.1" 2090 + }, 2091 + "engines": { 2092 + "node": ">=8" 2093 + } 2094 + }, 2095 + "node_modules/strip-ansi": { 2096 + "version": "6.0.1", 2097 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2098 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2099 + "dev": true, 2100 + "dependencies": { 2101 + "ansi-regex": "^5.0.1" 2102 + }, 2103 + "engines": { 2104 + "node": ">=8" 2105 + } 2106 + }, 2107 + "node_modules/strip-ansi-cjs": { 2108 + "name": "strip-ansi", 2109 + "version": "6.0.1", 2110 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2111 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2112 + "dev": true, 2113 + "dependencies": { 2114 + "ansi-regex": "^5.0.1" 2115 + }, 2116 + "engines": { 2117 + "node": ">=8" 2118 + } 2119 + }, 2120 + "node_modules/strip-bom": { 2121 + "version": "3.0.0", 2122 + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2123 + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", 2124 + "dev": true, 2125 + "engines": { 2126 + "node": ">=4" 2127 + } 2128 + }, 2129 + "node_modules/strip-json-comments": { 2130 + "version": "3.1.1", 2131 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2132 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2133 + "engines": { 2134 + "node": ">=8" 2135 + }, 2136 + "funding": { 2137 + "url": "https://github.com/sponsors/sindresorhus" 2138 + } 2139 + }, 2140 + "node_modules/supports-color": { 2141 + "version": "8.1.1", 2142 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2143 + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2144 + "dev": true, 2145 + "dependencies": { 2146 + "has-flag": "^4.0.0" 2147 + }, 2148 + "engines": { 2149 + "node": ">=10" 2150 + }, 2151 + "funding": { 2152 + "url": "https://github.com/chalk/supports-color?sponsor=1" 2153 + } 2154 + }, 2155 + "node_modules/sync-content": { 2156 + "version": "1.0.2", 2157 + "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-1.0.2.tgz", 2158 + "integrity": "sha512-znd3rYiiSxU3WteWyS9a6FXkTA/Wjk8WQsOyzHbineeL837dLn3DA4MRhsIX3qGcxDMH6+uuFV4axztssk7wEQ==", 2159 + "dev": true, 2160 + "dependencies": { 2161 + "glob": "^10.2.6", 2162 + "mkdirp": "^3.0.1", 2163 + "path-scurry": "^1.9.2", 2164 + "rimraf": "^5.0.1" 2165 + }, 2166 + "bin": { 2167 + "sync-content": "dist/mjs/bin.mjs" 2168 + }, 2169 + "engines": { 2170 + "node": ">=14" 2171 + }, 2172 + "funding": { 2173 + "url": "https://github.com/sponsors/isaacs" 2174 + } 2175 + }, 2176 + "node_modules/sync-content/node_modules/glob": { 2177 + "version": "10.3.10", 2178 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", 2179 + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", 2180 + "dev": true, 2181 + "dependencies": { 2182 + "foreground-child": "^3.1.0", 2183 + "jackspeak": "^2.3.5", 2184 + "minimatch": "^9.0.1", 2185 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", 2186 + "path-scurry": "^1.10.1" 2187 + }, 2188 + "bin": { 2189 + "glob": "dist/esm/bin.mjs" 2190 + }, 2191 + "engines": { 2192 + "node": ">=16 || 14 >=14.17" 2193 + }, 2194 + "funding": { 2195 + "url": "https://github.com/sponsors/isaacs" 2196 + } 2197 + }, 2198 + "node_modules/sync-content/node_modules/minimatch": { 2199 + "version": "9.0.3", 2200 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 2201 + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 2202 + "dev": true, 2203 + "dependencies": { 2204 + "brace-expansion": "^2.0.1" 2205 + }, 2206 + "engines": { 2207 + "node": ">=16 || 14 >=14.17" 2208 + }, 2209 + "funding": { 2210 + "url": "https://github.com/sponsors/isaacs" 2211 + } 2212 + }, 2213 + "node_modules/thread-stream": { 2214 + "version": "2.4.1", 2215 + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", 2216 + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", 2217 + "dependencies": { 2218 + "real-require": "^0.2.0" 2219 + } 2220 + }, 2221 + "node_modules/to-regex-range": { 2222 + "version": "5.0.1", 2223 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2224 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2225 + "dev": true, 2226 + "dependencies": { 2227 + "is-number": "^7.0.0" 2228 + }, 2229 + "engines": { 2230 + "node": ">=8.0" 2231 + } 2232 + }, 2233 + "node_modules/ts-node": { 2234 + "version": "10.9.2", 2235 + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 2236 + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 2237 + "dev": true, 2238 + "dependencies": { 2239 + "@cspotcode/source-map-support": "^0.8.0", 2240 + "@tsconfig/node10": "^1.0.7", 2241 + "@tsconfig/node12": "^1.0.7", 2242 + "@tsconfig/node14": "^1.0.0", 2243 + "@tsconfig/node16": "^1.0.2", 2244 + "acorn": "^8.4.1", 2245 + "acorn-walk": "^8.1.1", 2246 + "arg": "^4.1.0", 2247 + "create-require": "^1.1.0", 2248 + "diff": "^4.0.1", 2249 + "make-error": "^1.1.1", 2250 + "v8-compile-cache-lib": "^3.0.1", 2251 + "yn": "3.1.1" 2252 + }, 2253 + "bin": { 2254 + "ts-node": "dist/bin.js", 2255 + "ts-node-cwd": "dist/bin-cwd.js", 2256 + "ts-node-esm": "dist/bin-esm.js", 2257 + "ts-node-script": "dist/bin-script.js", 2258 + "ts-node-transpile-only": "dist/bin-transpile.js", 2259 + "ts-script": "dist/bin-script-deprecated.js" 2260 + }, 2261 + "peerDependencies": { 2262 + "@swc/core": ">=1.2.50", 2263 + "@swc/wasm": ">=1.2.50", 2264 + "@types/node": "*", 2265 + "typescript": ">=2.7" 2266 + }, 2267 + "peerDependenciesMeta": { 2268 + "@swc/core": { 2269 + "optional": true 2270 + }, 2271 + "@swc/wasm": { 2272 + "optional": true 2273 + } 2274 + } 2275 + }, 2276 + "node_modules/ts-node/node_modules/diff": { 2277 + "version": "4.0.2", 2278 + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 2279 + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 2280 + "dev": true, 2281 + "engines": { 2282 + "node": ">=0.3.1" 2283 + } 2284 + }, 2285 + "node_modules/tsconfig-paths": { 2286 + "version": "4.2.0", 2287 + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", 2288 + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", 2289 + "dev": true, 2290 + "dependencies": { 2291 + "json5": "^2.2.2", 2292 + "minimist": "^1.2.6", 2293 + "strip-bom": "^3.0.0" 2294 + }, 2295 + "engines": { 2296 + "node": ">=6" 2297 + } 2298 + }, 2299 + "node_modules/tshy": { 2300 + "version": "1.11.1", 2301 + "resolved": "https://registry.npmjs.org/tshy/-/tshy-1.11.1.tgz", 2302 + "integrity": "sha512-AzATR8weBaUW46Nh4B1k5cfxVuADKJTXe95xHh7BzcI1RjQQy6HeUXQDY+erGEGTLpiv6N6xMFmtEsMMc7x40Q==", 2303 + "dev": true, 2304 + "dependencies": { 2305 + "chalk": "^5.3.0", 2306 + "chokidar": "^3.5.3", 2307 + "foreground-child": "^3.1.1", 2308 + "mkdirp": "^3.0.1", 2309 + "polite-json": "^4.0.1", 2310 + "resolve-import": "^1.4.4", 2311 + "rimraf": "^5.0.1", 2312 + "sync-content": "^1.0.2", 2313 + "typescript": "5.2 || 5.3", 2314 + "walk-up-path": "^3.0.1" 2315 + }, 2316 + "bin": { 2317 + "tshy": "dist/esm/index.js" 2318 + }, 2319 + "engines": { 2320 + "node": "16 >=16.17 || 18 >=18.15.0 || >=20.6.1" 2321 + } 2322 + }, 2323 + "node_modules/tshy/node_modules/chalk": { 2324 + "version": "5.3.0", 2325 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 2326 + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 2327 + "dev": true, 2328 + "engines": { 2329 + "node": "^12.17.0 || ^14.13 || >=16.0.0" 2330 + }, 2331 + "funding": { 2332 + "url": "https://github.com/chalk/chalk?sponsor=1" 2333 + } 2334 + }, 2335 + "node_modules/tsx": { 2336 + "version": "4.7.1", 2337 + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", 2338 + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", 2339 + "dependencies": { 2340 + "esbuild": "~0.19.10", 2341 + "get-tsconfig": "^4.7.2" 2342 + }, 2343 + "bin": { 2344 + "tsx": "dist/cli.mjs" 2345 + }, 2346 + "engines": { 2347 + "node": ">=18.0.0" 2348 + }, 2349 + "optionalDependencies": { 2350 + "fsevents": "~2.3.3" 2351 + } 2352 + }, 2353 + "node_modules/type-detect": { 2354 + "version": "4.0.8", 2355 + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 2356 + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 2357 + "dev": true, 2358 + "engines": { 2359 + "node": ">=4" 2360 + } 2361 + }, 2362 + "node_modules/typescript": { 2363 + "version": "5.3.3", 2364 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 2365 + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 2366 + "dev": true, 2367 + "bin": { 2368 + "tsc": "bin/tsc", 2369 + "tsserver": "bin/tsserver" 2370 + }, 2371 + "engines": { 2372 + "node": ">=14.17" 2373 + } 2374 + }, 2375 + "node_modules/undici-types": { 2376 + "version": "5.26.5", 2377 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2378 + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2379 + "dev": true 2380 + }, 2381 + "node_modules/v8-compile-cache-lib": { 2382 + "version": "3.0.1", 2383 + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 2384 + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 2385 + "dev": true 2386 + }, 2387 + "node_modules/walk-up-path": { 2388 + "version": "3.0.1", 2389 + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", 2390 + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", 2391 + "dev": true 2392 + }, 2393 + "node_modules/which": { 2394 + "version": "2.0.2", 2395 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2396 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2397 + "dev": true, 2398 + "dependencies": { 2399 + "isexe": "^2.0.0" 2400 + }, 2401 + "bin": { 2402 + "node-which": "bin/node-which" 2403 + }, 2404 + "engines": { 2405 + "node": ">= 8" 2406 + } 2407 + }, 2408 + "node_modules/workerpool": { 2409 + "version": "6.2.1", 2410 + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 2411 + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 2412 + "dev": true 2413 + }, 2414 + "node_modules/wrap-ansi": { 2415 + "version": "7.0.0", 2416 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2417 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2418 + "dev": true, 2419 + "dependencies": { 2420 + "ansi-styles": "^4.0.0", 2421 + "string-width": "^4.1.0", 2422 + "strip-ansi": "^6.0.0" 2423 + }, 2424 + "engines": { 2425 + "node": ">=10" 2426 + }, 2427 + "funding": { 2428 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2429 + } 2430 + }, 2431 + "node_modules/wrap-ansi-cjs": { 2432 + "name": "wrap-ansi", 2433 + "version": "7.0.0", 2434 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2435 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2436 + "dev": true, 2437 + "dependencies": { 2438 + "ansi-styles": "^4.0.0", 2439 + "string-width": "^4.1.0", 2440 + "strip-ansi": "^6.0.0" 2441 + }, 2442 + "engines": { 2443 + "node": ">=10" 2444 + }, 2445 + "funding": { 2446 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2447 + } 2448 + }, 2449 + "node_modules/wrappy": { 2450 + "version": "1.0.2", 2451 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2452 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2453 + }, 2454 + "node_modules/y18n": { 2455 + "version": "5.0.8", 2456 + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2457 + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2458 + "dev": true, 2459 + "engines": { 2460 + "node": ">=10" 2461 + } 2462 + }, 2463 + "node_modules/yaml": { 2464 + "version": "2.3.4", 2465 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", 2466 + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", 2467 + "dev": true, 2468 + "engines": { 2469 + "node": ">= 14" 2470 + } 2471 + }, 2472 + "node_modules/yargs": { 2473 + "version": "16.2.0", 2474 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2475 + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2476 + "dev": true, 2477 + "dependencies": { 2478 + "cliui": "^7.0.2", 2479 + "escalade": "^3.1.1", 2480 + "get-caller-file": "^2.0.5", 2481 + "require-directory": "^2.1.1", 2482 + "string-width": "^4.2.0", 2483 + "y18n": "^5.0.5", 2484 + "yargs-parser": "^20.2.2" 2485 + }, 2486 + "engines": { 2487 + "node": ">=10" 2488 + } 2489 + }, 2490 + "node_modules/yargs-parser": { 2491 + "version": "20.2.4", 2492 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 2493 + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 2494 + "dev": true, 2495 + "engines": { 2496 + "node": ">=10" 2497 + } 2498 + }, 2499 + "node_modules/yargs-unparser": { 2500 + "version": "2.0.0", 2501 + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2502 + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2503 + "dev": true, 2504 + "dependencies": { 2505 + "camelcase": "^6.0.0", 2506 + "decamelize": "^4.0.0", 2507 + "flat": "^5.0.2", 2508 + "is-plain-obj": "^2.1.0" 2509 + }, 2510 + "engines": { 2511 + "node": ">=10" 2512 + } 2513 + }, 2514 + "node_modules/yn": { 2515 + "version": "3.1.1", 2516 + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 2517 + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 2518 + "dev": true, 2519 + "engines": { 2520 + "node": ">=6" 2521 + } 2522 + }, 2523 + "node_modules/yocto-queue": { 2524 + "version": "0.1.0", 2525 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2526 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2527 + "dev": true, 2528 + "engines": { 2529 + "node": ">=10" 2530 + }, 2531 + "funding": { 2532 + "url": "https://github.com/sponsors/sindresorhus" 2533 + } 2534 + } 2535 + } 2536 + }
+68
package.json
··· 1 + { 2 + "name": "@foxxmd/logging", 3 + "type": "module", 4 + "version": "0.1.0", 5 + "repository": "https://github.com/foxxmd/logging", 6 + "description": "", 7 + "scripts": { 8 + "typedoc": "typedoc", 9 + "build": "tsc", 10 + "prepare": "tshy", 11 + "test": "mocha --recursive ./tests/*.test.ts" 12 + }, 13 + "keywords": [], 14 + "author": "FoxxMD", 15 + "license": "MIT", 16 + "private": false, 17 + "engines": { 18 + "node": ">=18.0.0", 19 + "npm": ">=9.3.0" 20 + }, 21 + "files": [ 22 + "dist" 23 + ], 24 + "tshy": { 25 + "exports": { 26 + "./package.json": "./package.json", 27 + ".": { 28 + "import": { 29 + "types": "./dist/esm/index.d.ts", 30 + "default": "./dist/esm/index.js" 31 + } 32 + } 33 + }, 34 + "dialects": [ 35 + "esm" 36 + ] 37 + }, 38 + "devDependencies": { 39 + "@types/chai": "^4.3.0", 40 + "@types/chai-as-promised": "^7.1.5", 41 + "@types/mocha": "^9.1.0", 42 + "@types/node": "^18.0.0", 43 + "chai": "^4.3.6", 44 + "chai-as-promised": "^7.1.1", 45 + "mocha": "^10.2.0", 46 + "ts-node": "^10.9.1", 47 + "tsconfig-paths": "^4.2.0", 48 + "tshy": "^1.7.0", 49 + "typescript": "^5.3.3", 50 + "yaml": "^2.3.4" 51 + }, 52 + "dependencies": { 53 + "pino": "^8.19.0", 54 + "pino-pretty": "^10.3.1", 55 + "pino-roll": "^1.0.0-rc.1", 56 + "pony-cause": "^2.1.10", 57 + "tsx": "^4.7.0" 58 + }, 59 + "exports": { 60 + "./package.json": "./package.json", 61 + ".": { 62 + "import": { 63 + "types": "./dist/esm/index.d.ts", 64 + "default": "./dist/esm/index.js" 65 + } 66 + } 67 + } 68 + }
+186
src/funcs.ts
··· 1 + import path from "path"; 2 + import process from "process"; 3 + import {ErrorWithCause} from "pony-cause"; 4 + import { 5 + AllLevelStreamEntry, 6 + asLogOptions, 7 + LabelledLogger, 8 + LogLevel, 9 + LogOptions 10 + } from "./types.js"; 11 + import { 12 + pino, 13 + LevelWithSilentOrString, 14 + } from 'pino'; 15 + import pinoRoll from 'pino-roll'; 16 + import prettyDef, {PrettyOptions} from 'pino-pretty'; 17 + import {createColors} from 'colorette'; 18 + import * as Colorette from "colorette"; 19 + import {fileOrDirectoryIsWriteable} from "./util.js"; 20 + 21 + const projectDir = process.cwd(); 22 + const configDir: string = path.resolve(projectDir, './config'); 23 + 24 + const pRoll = pinoRoll as unknown as typeof pinoRoll.default; 25 + 26 + let logPath = path.resolve(configDir, `./logs`); 27 + if (typeof process.env.CONFIG_DIR === 'string') { 28 + logPath = path.resolve(process.env.CONFIG_DIR, './logs'); 29 + } 30 + 31 + export type AppLogger = LabelledLogger 32 + 33 + const CWD = process.cwd(); 34 + export const prettyOptsFactory = (opts: PrettyOptions = {}): PrettyOptions => { 35 + const {colorize} = opts; 36 + const colorizeOpts: undefined | {useColor: boolean} = colorize === undefined ? undefined : {useColor: colorize}; 37 + const colors = createColors(colorizeOpts) 38 + 39 + return { 40 + ...prettyCommon(colors), 41 + ...opts 42 + } 43 + } 44 + 45 + export const prettyCommon = (colors: Colorette.Colorette): PrettyOptions => { 46 + return { 47 + messageFormat: (log, messageKey) => { 48 + const labels: string[] = log.labels as string[] ?? []; 49 + const leaf = log.leaf as string | undefined; 50 + const nodes = labels; 51 + if (leaf !== null && leaf !== undefined && !nodes.includes(leaf)) { 52 + nodes.push(leaf); 53 + } 54 + const labelContent = nodes.length === 0 ? '' : `${nodes.map((x: string) => colors.blackBright(`[${x}]`)).join(' ')} `; 55 + const msg = log[messageKey]; 56 + const stackTrace = log.err !== undefined ? `\n${(log.err as any).stack.replace(CWD, 'CWD')}` : ''; 57 + return `${labelContent}${msg}${stackTrace}`; 58 + }, 59 + hideObject: false, 60 + ignore: 'pid,hostname,labels,err', 61 + translateTime: 'SYS:standard', 62 + customLevels: { 63 + verbose: 25, 64 + log: 21, 65 + }, 66 + customColors: 'verbose:magenta,log:greenBright', 67 + colorizeObjects: true, 68 + // @ts-ignore 69 + useOnlyCustomProps: false, 70 + } 71 + } 72 + 73 + export const prettyConsole: PrettyOptions = prettyOptsFactory() 74 + export const prettyFile: PrettyOptions = prettyOptsFactory({ 75 + colorize: false, 76 + }); 77 + 78 + const buildParsedLogOptions = (config: object = {}): Required<LogOptions> => { 79 + if (!asLogOptions(config)) { 80 + throw new Error(`Logging levels were not valid. Must be one of: 'error', 'warn', 'info', 'verbose', 'debug', 'silent' -- 'file' may be false.`) 81 + } 82 + 83 + const {level: configLevel} = config; 84 + const envLevel = process.env.LOG_LEVEL as LogLevel | undefined; 85 + const defaultLevel = envLevel ?? 'info'; 86 + const { 87 + level = configLevel || defaultLevel, 88 + file = configLevel || defaultLevel, 89 + console = configLevel || 'debug' 90 + } = config; 91 + 92 + return { 93 + level, 94 + file: file as LogLevel | false, 95 + console 96 + }; 97 + } 98 + 99 + export const buildPinoFileStream = async (options: Required<LogOptions>): Promise<AllLevelStreamEntry | undefined> => { 100 + const {file} = options; 101 + if(file === false) { 102 + return undefined; 103 + } 104 + 105 + try { 106 + fileOrDirectoryIsWriteable(logPath); 107 + const rollingDest = await pRoll({ 108 + file: path.resolve(logPath, 'app'), 109 + size: 10, 110 + frequency: 'daily', 111 + get extension() {return `-${new Date().toISOString().split('T')[0]}.log`}, 112 + mkdir: true, 113 + sync: false, 114 + }); 115 + 116 + return { 117 + level: file as LogLevel, 118 + stream: prettyDef.default({...prettyFile, destination: rollingDest}) 119 + }; 120 + } catch (e: any) { 121 + throw new ErrorWithCause<Error>('WILL NOT write logs to rotating file due to an error while trying to access the specified logging directory', {cause: e as Error}); 122 + } 123 + } 124 + 125 + export const buildPinoConsoleStream = (options: Required<LogOptions>): AllLevelStreamEntry => { 126 + return { 127 + level: options.console as LogLevel, 128 + stream: prettyDef.default({...prettyConsole, destination: 1, sync: true}) 129 + } 130 + } 131 + 132 + export const buildPinoLogger = (defaultLevel: LevelWithSilentOrString, streams: AllLevelStreamEntry[]): LabelledLogger => { 133 + const plogger = pino({ 134 + // @ts-ignore 135 + mixin: (obj, num, loggerThis) => { 136 + return { 137 + labels: loggerThis.labels ?? [] 138 + } 139 + }, 140 + level: defaultLevel, 141 + customLevels: { 142 + verbose: 25, 143 + log: 21 144 + }, 145 + useOnlyCustomLevels: false, 146 + }, pino.multistream(streams)) as LabelledLogger; 147 + 148 + plogger.addLabel = function (value) { 149 + if (this.labels === undefined) { 150 + this.labels = []; 151 + } 152 + this.labels.push(value) 153 + } 154 + return plogger; 155 + } 156 + 157 + export const testPinoLogger = buildPinoLogger('silent', [buildPinoConsoleStream(buildParsedLogOptions({level: 'debug'}))]); 158 + 159 + export const initPinoLogger = buildPinoLogger('debug', [buildPinoConsoleStream(buildParsedLogOptions({level: 'debug'}))]); 160 + 161 + export const appPinoLogger = async (config: LogOptions | object = {}, name = 'App') => { 162 + const options = buildParsedLogOptions(config); 163 + const streams: AllLevelStreamEntry[] = [buildPinoConsoleStream(options)]; 164 + const file = await buildPinoFileStream(options); 165 + if(file !== undefined) { 166 + streams.push(file); 167 + } 168 + return buildPinoLogger('debug' as LevelWithSilentOrString, streams); 169 + } 170 + 171 + export const createChildPinoLogger = (parent: LabelledLogger, labelsVal: any | any[] = [], context: object = {}, options = {}) => { 172 + const newChild = parent.child(context, options) as LabelledLogger; 173 + const labels = Array.isArray(labelsVal) ? labelsVal : [labelsVal]; 174 + newChild.labels = [...[...(parent.labels ?? [])], ...labels]; 175 + newChild.addLabel = function (value) { 176 + if(this.labels === undefined) { 177 + this.labels = []; 178 + } 179 + this.labels.push(value); 180 + } 181 + return newChild 182 + } 183 + export const createChildLogger = (logger: AppLogger, labelsVal: any | any[] = []): AppLogger => { 184 + const labels = Array.isArray(labelsVal) ? labelsVal : [labelsVal]; 185 + return createChildPinoLogger(logger as LabelledLogger, labels); 186 + }
+49
src/index.ts
··· 1 + import { 2 + LabelledLogger, 3 + AllLevels, 4 + AllLevelStreamEntry, 5 + LogOptions, 6 + asLogOptions 7 + } from './types.js' 8 + 9 + import { 10 + prettyOptsFactory, 11 + prettyFile, 12 + prettyConsole, 13 + buildPinoLogger, 14 + buildPinoConsoleStream, 15 + buildPinoFileStream, 16 + testPinoLogger, 17 + initPinoLogger, 18 + appPinoLogger, 19 + createChildLogger, 20 + } from './funcs.js' 21 + 22 + export { 23 + LabelledLogger, 24 + AllLevels, 25 + AllLevelStreamEntry, 26 + LogOptions, 27 + asLogOptions 28 + } 29 + 30 + export const streamBuilders = { 31 + file: buildPinoFileStream, 32 + console: buildPinoConsoleStream, 33 + } 34 + 35 + export const pretty = { 36 + buildPretty: prettyOptsFactory, 37 + prettyFile, 38 + prettyConsole, 39 + }; 40 + 41 + export const buildLogger = buildPinoLogger; 42 + 43 + export const loggers = { 44 + init: initPinoLogger, 45 + test: testPinoLogger, 46 + app: appPinoLogger 47 + }; 48 + 49 + export const childLogger = createChildLogger;
+41
src/types.ts
··· 1 + import {Level, Logger, StreamEntry} from 'pino'; 2 + 3 + export type AdditionalLevels = "verbose" | "log"; 4 + export type AllLevels = Level | AdditionalLevels; 5 + export type LogLevel = AllLevels; 6 + export const logLevels: LogLevel[] = ['fatal', 'error', 'warn', 'info', 'verbose', 'debug']; 7 + 8 + export interface LogOptions { 9 + /** 10 + * Specify the minimum log level for all log outputs without their own level specified. 11 + * 12 + * Defaults to env `LOG_LEVEL` or `info` if not specified. 13 + * 14 + * @default 'info' 15 + * */ 16 + level?: LogLevel 17 + /** 18 + * Specify the minimum log level to output to rotating files. If `false` no log files will be created. 19 + * */ 20 + file?: LogLevel | false 21 + /** 22 + * Specify the minimum log level streamed to the console (or docker container) 23 + * */ 24 + console?: LogLevel 25 + } 26 + 27 + export const asLogOptions = (obj: object = {}): obj is LogOptions => { 28 + return Object.entries(obj).every(([key, val]) => { 29 + if (key !== 'file') { 30 + return val === undefined || logLevels.includes(val.toLocaleLowerCase()); 31 + } 32 + return val === undefined || val === false || logLevels.includes(val.toLocaleLowerCase()); 33 + }); 34 + } 35 + 36 + export type LabelledLogger = Logger<AllLevels> & { 37 + labels?: any[] 38 + addLabel: (value: any) => void 39 + } 40 + 41 + export type AllLevelStreamEntry = StreamEntry<AllLevels>
+33
src/util.ts
··· 1 + import pathUtil from "path"; 2 + import {accessSync, constants} from "fs"; 3 + import {ErrorWithCause} from "pony-cause"; 4 + 5 + export const fileOrDirectoryIsWriteable = (location: string) => { 6 + const pathInfo = pathUtil.parse(location); 7 + const isDir = pathInfo.ext === ''; 8 + try { 9 + accessSync(location, constants.R_OK | constants.W_OK); 10 + return true; 11 + } catch (err: any) { 12 + const {code} = err; 13 + if (code === 'ENOENT') { 14 + // file doesn't exist, see if we can write to directory in which case we are good 15 + try { 16 + accessSync(pathInfo.dir, constants.R_OK | constants.W_OK) 17 + // we can write to dir 18 + return true; 19 + } catch (accessError: any) { 20 + if (accessError.code === 'EACCES') { 21 + // also can't access directory :( 22 + throw new Error(`No ${isDir ? 'directory' : 'file'} exists at ${location} and application does not have permission to write to the parent directory`); 23 + } else { 24 + throw new ErrorWithCause(`No ${isDir ? 'directory' : 'file'} exists at ${location} and application is unable to access the parent directory due to a system error`, {cause: accessError}); 25 + } 26 + } 27 + } else if (code === 'EACCES') { 28 + throw new Error(`${isDir ? 'Directory' : 'File'} exists at ${location} but application does not have permission to write to it.`); 29 + } else { 30 + throw new ErrorWithCause(`${isDir ? 'Directory' : 'File'} exists at ${location} but application is unable to access it due to a system error`, {cause: err}); 31 + } 32 + } 33 + }
+26
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "module": "ESNext", 4 + "moduleResolution": "nodenext", 5 + "target": "ESNext", 6 + "declaration": true, 7 + "strict": false, 8 + "esModuleInterop": true, 9 + "skipLibCheck": true, 10 + "sourceMap": true, 11 + "forceConsistentCasingInFileNames": true, 12 + "allowSyntheticDefaultImports": true 13 + }, 14 + "ts-node": { 15 + "esm": true 16 + }, 17 + "typeRoots": [ 18 + "./src/types.d.ts" 19 + ], 20 + "include": [ 21 + "src/**/*" 22 + ], 23 + "exclude": [ 24 + "node_modules" 25 + ] 26 + }
+18
typedoc.json
··· 1 + { 2 + "$schema": "https://typedoc.org/schema.json", 3 + "name": "string-sameness Docs", 4 + "entryPoints": [ 5 + "./src", 6 + "./src/matchingStrategies/index.ts", 7 + "./src/normalization/index.ts" 8 + ], 9 + "sort": ["source-order"], 10 + "categorizeByGroup": false, 11 + "searchGroupBoosts": { 12 + "Functions": 1.5 13 + }, 14 + "navigationLinks": { 15 + "Docs": "http://foxxmd.github.io/string-sameness", 16 + "GitHub": "https://github.com/foxxmd/string-sameness" 17 + } 18 + }