├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ ├── deploy.yml │ └── lint.yml ├── .gitignore ├── .node-version ├── .prettierignore ├── .prettierrc ├── LICENSE ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── shell.nix ├── src ├── esbuild.d.ts ├── index.ts └── index.txt ├── tsconfig.json └── wrangler.jsonc /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = tab 6 | tab_width = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.yml] 13 | indent_style = space 14 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | - package-ecosystem: 'github-actions' 5 | directory: '/' 6 | schedule: 7 | interval: 'weekly' 8 | - package-ecosystem: 'npm' 9 | directory: '/' 10 | schedule: 11 | interval: 'weekly' 12 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout repository 12 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 13 | 14 | - name: Setup pnpm 15 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # ratchet:pnpm/action-setup@v4 16 | - name: Setup Node.js 17 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4 18 | with: 19 | node-version-file: .node-version 20 | cache: pnpm 21 | cache-dependency-path: pnpm-lock.yaml 22 | 23 | - name: Install dependencies 24 | run: pnpm install --frozen-lockfile 25 | 26 | - name: Deploy 27 | run: pnpm run deploy 28 | env: 29 | CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} 30 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | lint: 11 | runs-on: ubuntu-latest 12 | permissions: 13 | contents: read 14 | security-events: write 15 | 16 | steps: 17 | - name: Checkout repository 18 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 19 | 20 | - name: Setup pnpm 21 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # ratchet:pnpm/action-setup@v4 22 | - name: Setup Node.js 23 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4 24 | with: 25 | node-version-file: .node-version 26 | cache: pnpm 27 | cache-dependency-path: pnpm-lock.yaml 28 | 29 | - name: Install dependencies 30 | run: pnpm install --frozen-lockfile 31 | 32 | - name: Lint 33 | run: pnpm run lint -f @microsoft/eslint-formatter-sarif -o /tmp/lint.sarif 34 | continue-on-error: true 35 | 36 | - name: Strip suppressed results 37 | run: pnpm dlx @ryanccn/sarif-strip-suppressed /tmp/lint.sarif 38 | 39 | - name: Upload results 40 | uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # ratchet:github/codeql-action/upload-sarif@v3 41 | with: 42 | sarif_file: /tmp/lint.sarif 43 | wait-for-processing: true 44 | 45 | check: 46 | runs-on: ubuntu-latest 47 | permissions: 48 | contents: read 49 | 50 | steps: 51 | - name: Checkout repository 52 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 53 | 54 | - name: Setup pnpm 55 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # ratchet:pnpm/action-setup@v4 56 | - name: Setup Node.js 57 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ratchet:actions/setup-node@v4 58 | with: 59 | node-version-file: .node-version 60 | cache: pnpm 61 | cache-dependency-path: pnpm-lock.yaml 62 | 63 | - name: Install dependencies 64 | run: pnpm install --frozen-lockfile 65 | 66 | - name: Check 67 | run: pnpm run check 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Node.js 5 | node_modules/ 6 | 7 | # wrangler 8 | .dev.vars 9 | .wrangler/ 10 | dist/ 11 | 12 | # IDEs 13 | .idea/ 14 | .vscode/* 15 | !.vscode/extensions.json 16 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 24 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "semi": true, 5 | "useTabs": true 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 2023 Ryan Cao 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import { config } from '@ryanccn/eslint-config'; 2 | 3 | export default config(); 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nixpkgs-dev", 3 | "version": "0.0.1", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "deploy": "wrangler deploy", 8 | "build": "esbuild src/index.ts --outfile=dist/index.js --metafile=dist/metafile.json --format=esm --bundle --minify-whitespace --minify-syntax --platform=browser --target=es2024", 9 | "dev": "wrangler dev", 10 | "check": "tsc -noEmit", 11 | "lint": "eslint ." 12 | }, 13 | "dependencies": { 14 | "hono": "^4.7.10" 15 | }, 16 | "devDependencies": { 17 | "@cloudflare/workers-types": "^4.20250528.0", 18 | "@eslint/js": "^9.27.0", 19 | "@microsoft/eslint-formatter-sarif": "^3.1.0", 20 | "@ryanccn/eslint-config": "^0.5.0", 21 | "esbuild": "^0.25.5", 22 | "eslint": "^9.27.0", 23 | "eslint-config-prettier": "^10.1.5", 24 | "eslint-plugin-unicorn": "^59.0.1", 25 | "tsx": "^4.19.4", 26 | "typescript": "^5.8.3", 27 | "typescript-eslint": "^8.33.0", 28 | "wrangler": "^4.17.0" 29 | }, 30 | "pnpm": { 31 | "onlyBuiltDependencies": [ 32 | "esbuild", 33 | "sharp", 34 | "workerd" 35 | ] 36 | }, 37 | "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" 38 | } 39 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | hono: 12 | specifier: ^4.7.10 13 | version: 4.7.10 14 | devDependencies: 15 | '@cloudflare/workers-types': 16 | specifier: ^4.20250528.0 17 | version: 4.20250528.0 18 | '@eslint/js': 19 | specifier: ^9.27.0 20 | version: 9.27.0 21 | '@microsoft/eslint-formatter-sarif': 22 | specifier: ^3.1.0 23 | version: 3.1.0 24 | '@ryanccn/eslint-config': 25 | specifier: ^0.5.0 26 | version: 0.5.0(@eslint/eslintrc@3.3.1)(@eslint/js@9.27.0)(eslint-config-prettier@10.1.5(eslint@9.27.0))(eslint-plugin-unicorn@59.0.1(eslint@9.27.0))(eslint@9.27.0)(typescript-eslint@8.33.0(eslint@9.27.0)(typescript@5.8.3))(typescript@5.8.3) 27 | esbuild: 28 | specifier: ^0.25.5 29 | version: 0.25.5 30 | eslint: 31 | specifier: ^9.27.0 32 | version: 9.27.0 33 | eslint-config-prettier: 34 | specifier: ^10.1.5 35 | version: 10.1.5(eslint@9.27.0) 36 | eslint-plugin-unicorn: 37 | specifier: ^59.0.1 38 | version: 59.0.1(eslint@9.27.0) 39 | tsx: 40 | specifier: ^4.19.4 41 | version: 4.19.4 42 | typescript: 43 | specifier: ^5.8.3 44 | version: 5.8.3 45 | typescript-eslint: 46 | specifier: ^8.33.0 47 | version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) 48 | wrangler: 49 | specifier: ^4.17.0 50 | version: 4.17.0(@cloudflare/workers-types@4.20250528.0) 51 | 52 | packages: 53 | 54 | '@babel/helper-validator-identifier@7.27.1': 55 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 56 | engines: {node: '>=6.9.0'} 57 | 58 | '@cloudflare/kv-asset-handler@0.4.0': 59 | resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 60 | engines: {node: '>=18.0.0'} 61 | 62 | '@cloudflare/unenv-preset@2.3.2': 63 | resolution: {integrity: sha512-MtUgNl+QkQyhQvv5bbWP+BpBC1N0me4CHHuP2H4ktmOMKdB/6kkz/lo+zqiA4mEazb4y+1cwyNjVrQ2DWeE4mg==} 64 | peerDependencies: 65 | unenv: 2.0.0-rc.17 66 | workerd: ^1.20250508.0 67 | peerDependenciesMeta: 68 | workerd: 69 | optional: true 70 | 71 | '@cloudflare/workerd-darwin-64@1.20250523.0': 72 | resolution: {integrity: sha512-/K7vKkPDx9idJ7hJtqYXYsKkHX9XQ6awyDyBZ4RwbaQ/o3fyS/tgHaej2rUO6zkb7CfUxiaeAB7Z6i7KltMY5Q==} 73 | engines: {node: '>=16'} 74 | cpu: [x64] 75 | os: [darwin] 76 | 77 | '@cloudflare/workerd-darwin-arm64@1.20250523.0': 78 | resolution: {integrity: sha512-tVQqStt245KzkrCT6DBXoMNHaJgh/8hQy3fsG+4gHfqw/JdKEgXigkc9hWdC6BoS5DiGK+dGVJo2MnWHFC7XlQ==} 79 | engines: {node: '>=16'} 80 | cpu: [arm64] 81 | os: [darwin] 82 | 83 | '@cloudflare/workerd-linux-64@1.20250523.0': 84 | resolution: {integrity: sha512-PCPWBlwiKr9Es2TP93JVygXRPwx+AkygUMV2gFOPerVrdXUd13A4dJ68Qjpmh3O0xqmVIRV6PSogM3wNvwnw5Q==} 85 | engines: {node: '>=16'} 86 | cpu: [x64] 87 | os: [linux] 88 | 89 | '@cloudflare/workerd-linux-arm64@1.20250523.0': 90 | resolution: {integrity: sha512-uKa/L9W1AzT+yE0wNxFZPlMXms5xmGaaOmTAK0wuLPW6qmKj1zyBidjHqQXVZ+eK/fLy3CNeyB9EBtR0/8FH7A==} 91 | engines: {node: '>=16'} 92 | cpu: [arm64] 93 | os: [linux] 94 | 95 | '@cloudflare/workerd-windows-64@1.20250523.0': 96 | resolution: {integrity: sha512-H5ggClWrskRs7pj2Fd+iJpjFMrh7DZqAfhJT3IloTW85lCEY2+y/yfXEGyDsc0UTLuTS0znldcUrVCRjSiSOkw==} 97 | engines: {node: '>=16'} 98 | cpu: [x64] 99 | os: [win32] 100 | 101 | '@cloudflare/workers-types@4.20250528.0': 102 | resolution: {integrity: sha512-q4yNRSw7At9nm1GsN+KUGfbrl5nGuiS+q/1esbhcXL/FQUDUZbVdutbPBMtJLaXAd5PCLdOST/nZni8GzJkaYg==} 103 | 104 | '@cspotcode/source-map-support@0.8.1': 105 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 106 | engines: {node: '>=12'} 107 | 108 | '@emnapi/runtime@1.4.3': 109 | resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} 110 | 111 | '@esbuild/aix-ppc64@0.25.4': 112 | resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} 113 | engines: {node: '>=18'} 114 | cpu: [ppc64] 115 | os: [aix] 116 | 117 | '@esbuild/aix-ppc64@0.25.5': 118 | resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} 119 | engines: {node: '>=18'} 120 | cpu: [ppc64] 121 | os: [aix] 122 | 123 | '@esbuild/android-arm64@0.25.4': 124 | resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} 125 | engines: {node: '>=18'} 126 | cpu: [arm64] 127 | os: [android] 128 | 129 | '@esbuild/android-arm64@0.25.5': 130 | resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} 131 | engines: {node: '>=18'} 132 | cpu: [arm64] 133 | os: [android] 134 | 135 | '@esbuild/android-arm@0.25.4': 136 | resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} 137 | engines: {node: '>=18'} 138 | cpu: [arm] 139 | os: [android] 140 | 141 | '@esbuild/android-arm@0.25.5': 142 | resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} 143 | engines: {node: '>=18'} 144 | cpu: [arm] 145 | os: [android] 146 | 147 | '@esbuild/android-x64@0.25.4': 148 | resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} 149 | engines: {node: '>=18'} 150 | cpu: [x64] 151 | os: [android] 152 | 153 | '@esbuild/android-x64@0.25.5': 154 | resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} 155 | engines: {node: '>=18'} 156 | cpu: [x64] 157 | os: [android] 158 | 159 | '@esbuild/darwin-arm64@0.25.4': 160 | resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} 161 | engines: {node: '>=18'} 162 | cpu: [arm64] 163 | os: [darwin] 164 | 165 | '@esbuild/darwin-arm64@0.25.5': 166 | resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} 167 | engines: {node: '>=18'} 168 | cpu: [arm64] 169 | os: [darwin] 170 | 171 | '@esbuild/darwin-x64@0.25.4': 172 | resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} 173 | engines: {node: '>=18'} 174 | cpu: [x64] 175 | os: [darwin] 176 | 177 | '@esbuild/darwin-x64@0.25.5': 178 | resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} 179 | engines: {node: '>=18'} 180 | cpu: [x64] 181 | os: [darwin] 182 | 183 | '@esbuild/freebsd-arm64@0.25.4': 184 | resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} 185 | engines: {node: '>=18'} 186 | cpu: [arm64] 187 | os: [freebsd] 188 | 189 | '@esbuild/freebsd-arm64@0.25.5': 190 | resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} 191 | engines: {node: '>=18'} 192 | cpu: [arm64] 193 | os: [freebsd] 194 | 195 | '@esbuild/freebsd-x64@0.25.4': 196 | resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} 197 | engines: {node: '>=18'} 198 | cpu: [x64] 199 | os: [freebsd] 200 | 201 | '@esbuild/freebsd-x64@0.25.5': 202 | resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} 203 | engines: {node: '>=18'} 204 | cpu: [x64] 205 | os: [freebsd] 206 | 207 | '@esbuild/linux-arm64@0.25.4': 208 | resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} 209 | engines: {node: '>=18'} 210 | cpu: [arm64] 211 | os: [linux] 212 | 213 | '@esbuild/linux-arm64@0.25.5': 214 | resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} 215 | engines: {node: '>=18'} 216 | cpu: [arm64] 217 | os: [linux] 218 | 219 | '@esbuild/linux-arm@0.25.4': 220 | resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} 221 | engines: {node: '>=18'} 222 | cpu: [arm] 223 | os: [linux] 224 | 225 | '@esbuild/linux-arm@0.25.5': 226 | resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} 227 | engines: {node: '>=18'} 228 | cpu: [arm] 229 | os: [linux] 230 | 231 | '@esbuild/linux-ia32@0.25.4': 232 | resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} 233 | engines: {node: '>=18'} 234 | cpu: [ia32] 235 | os: [linux] 236 | 237 | '@esbuild/linux-ia32@0.25.5': 238 | resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} 239 | engines: {node: '>=18'} 240 | cpu: [ia32] 241 | os: [linux] 242 | 243 | '@esbuild/linux-loong64@0.25.4': 244 | resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} 245 | engines: {node: '>=18'} 246 | cpu: [loong64] 247 | os: [linux] 248 | 249 | '@esbuild/linux-loong64@0.25.5': 250 | resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} 251 | engines: {node: '>=18'} 252 | cpu: [loong64] 253 | os: [linux] 254 | 255 | '@esbuild/linux-mips64el@0.25.4': 256 | resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} 257 | engines: {node: '>=18'} 258 | cpu: [mips64el] 259 | os: [linux] 260 | 261 | '@esbuild/linux-mips64el@0.25.5': 262 | resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} 263 | engines: {node: '>=18'} 264 | cpu: [mips64el] 265 | os: [linux] 266 | 267 | '@esbuild/linux-ppc64@0.25.4': 268 | resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} 269 | engines: {node: '>=18'} 270 | cpu: [ppc64] 271 | os: [linux] 272 | 273 | '@esbuild/linux-ppc64@0.25.5': 274 | resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} 275 | engines: {node: '>=18'} 276 | cpu: [ppc64] 277 | os: [linux] 278 | 279 | '@esbuild/linux-riscv64@0.25.4': 280 | resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} 281 | engines: {node: '>=18'} 282 | cpu: [riscv64] 283 | os: [linux] 284 | 285 | '@esbuild/linux-riscv64@0.25.5': 286 | resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} 287 | engines: {node: '>=18'} 288 | cpu: [riscv64] 289 | os: [linux] 290 | 291 | '@esbuild/linux-s390x@0.25.4': 292 | resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} 293 | engines: {node: '>=18'} 294 | cpu: [s390x] 295 | os: [linux] 296 | 297 | '@esbuild/linux-s390x@0.25.5': 298 | resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} 299 | engines: {node: '>=18'} 300 | cpu: [s390x] 301 | os: [linux] 302 | 303 | '@esbuild/linux-x64@0.25.4': 304 | resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} 305 | engines: {node: '>=18'} 306 | cpu: [x64] 307 | os: [linux] 308 | 309 | '@esbuild/linux-x64@0.25.5': 310 | resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} 311 | engines: {node: '>=18'} 312 | cpu: [x64] 313 | os: [linux] 314 | 315 | '@esbuild/netbsd-arm64@0.25.4': 316 | resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} 317 | engines: {node: '>=18'} 318 | cpu: [arm64] 319 | os: [netbsd] 320 | 321 | '@esbuild/netbsd-arm64@0.25.5': 322 | resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} 323 | engines: {node: '>=18'} 324 | cpu: [arm64] 325 | os: [netbsd] 326 | 327 | '@esbuild/netbsd-x64@0.25.4': 328 | resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} 329 | engines: {node: '>=18'} 330 | cpu: [x64] 331 | os: [netbsd] 332 | 333 | '@esbuild/netbsd-x64@0.25.5': 334 | resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} 335 | engines: {node: '>=18'} 336 | cpu: [x64] 337 | os: [netbsd] 338 | 339 | '@esbuild/openbsd-arm64@0.25.4': 340 | resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} 341 | engines: {node: '>=18'} 342 | cpu: [arm64] 343 | os: [openbsd] 344 | 345 | '@esbuild/openbsd-arm64@0.25.5': 346 | resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} 347 | engines: {node: '>=18'} 348 | cpu: [arm64] 349 | os: [openbsd] 350 | 351 | '@esbuild/openbsd-x64@0.25.4': 352 | resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} 353 | engines: {node: '>=18'} 354 | cpu: [x64] 355 | os: [openbsd] 356 | 357 | '@esbuild/openbsd-x64@0.25.5': 358 | resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} 359 | engines: {node: '>=18'} 360 | cpu: [x64] 361 | os: [openbsd] 362 | 363 | '@esbuild/sunos-x64@0.25.4': 364 | resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} 365 | engines: {node: '>=18'} 366 | cpu: [x64] 367 | os: [sunos] 368 | 369 | '@esbuild/sunos-x64@0.25.5': 370 | resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} 371 | engines: {node: '>=18'} 372 | cpu: [x64] 373 | os: [sunos] 374 | 375 | '@esbuild/win32-arm64@0.25.4': 376 | resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} 377 | engines: {node: '>=18'} 378 | cpu: [arm64] 379 | os: [win32] 380 | 381 | '@esbuild/win32-arm64@0.25.5': 382 | resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} 383 | engines: {node: '>=18'} 384 | cpu: [arm64] 385 | os: [win32] 386 | 387 | '@esbuild/win32-ia32@0.25.4': 388 | resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} 389 | engines: {node: '>=18'} 390 | cpu: [ia32] 391 | os: [win32] 392 | 393 | '@esbuild/win32-ia32@0.25.5': 394 | resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} 395 | engines: {node: '>=18'} 396 | cpu: [ia32] 397 | os: [win32] 398 | 399 | '@esbuild/win32-x64@0.25.4': 400 | resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} 401 | engines: {node: '>=18'} 402 | cpu: [x64] 403 | os: [win32] 404 | 405 | '@esbuild/win32-x64@0.25.5': 406 | resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} 407 | engines: {node: '>=18'} 408 | cpu: [x64] 409 | os: [win32] 410 | 411 | '@eslint-community/eslint-utils@4.7.0': 412 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 413 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 414 | peerDependencies: 415 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 416 | 417 | '@eslint-community/regexpp@4.12.1': 418 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 419 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 420 | 421 | '@eslint/compat@1.2.9': 422 | resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==} 423 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 424 | peerDependencies: 425 | eslint: ^9.10.0 426 | peerDependenciesMeta: 427 | eslint: 428 | optional: true 429 | 430 | '@eslint/config-array@0.20.0': 431 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 432 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 433 | 434 | '@eslint/config-helpers@0.2.2': 435 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 436 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 437 | 438 | '@eslint/core@0.13.0': 439 | resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 440 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 441 | 442 | '@eslint/core@0.14.0': 443 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} 444 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 445 | 446 | '@eslint/eslintrc@2.1.4': 447 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 448 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 449 | 450 | '@eslint/eslintrc@3.3.1': 451 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 452 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 453 | 454 | '@eslint/js@8.57.1': 455 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 456 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 457 | 458 | '@eslint/js@9.27.0': 459 | resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} 460 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 461 | 462 | '@eslint/object-schema@2.1.6': 463 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 464 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 465 | 466 | '@eslint/plugin-kit@0.2.8': 467 | resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 468 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 469 | 470 | '@eslint/plugin-kit@0.3.1': 471 | resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} 472 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 473 | 474 | '@fastify/busboy@2.1.1': 475 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 476 | engines: {node: '>=14'} 477 | 478 | '@humanfs/core@0.19.1': 479 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 480 | engines: {node: '>=18.18.0'} 481 | 482 | '@humanfs/node@0.16.6': 483 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 484 | engines: {node: '>=18.18.0'} 485 | 486 | '@humanwhocodes/config-array@0.13.0': 487 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 488 | engines: {node: '>=10.10.0'} 489 | deprecated: Use @eslint/config-array instead 490 | 491 | '@humanwhocodes/module-importer@1.0.1': 492 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 493 | engines: {node: '>=12.22'} 494 | 495 | '@humanwhocodes/object-schema@2.0.3': 496 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 497 | deprecated: Use @eslint/object-schema instead 498 | 499 | '@humanwhocodes/retry@0.3.1': 500 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 501 | engines: {node: '>=18.18'} 502 | 503 | '@humanwhocodes/retry@0.4.3': 504 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 505 | engines: {node: '>=18.18'} 506 | 507 | '@img/sharp-darwin-arm64@0.33.5': 508 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 509 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 510 | cpu: [arm64] 511 | os: [darwin] 512 | 513 | '@img/sharp-darwin-x64@0.33.5': 514 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 515 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 516 | cpu: [x64] 517 | os: [darwin] 518 | 519 | '@img/sharp-libvips-darwin-arm64@1.0.4': 520 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 521 | cpu: [arm64] 522 | os: [darwin] 523 | 524 | '@img/sharp-libvips-darwin-x64@1.0.4': 525 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 526 | cpu: [x64] 527 | os: [darwin] 528 | 529 | '@img/sharp-libvips-linux-arm64@1.0.4': 530 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 531 | cpu: [arm64] 532 | os: [linux] 533 | 534 | '@img/sharp-libvips-linux-arm@1.0.5': 535 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 536 | cpu: [arm] 537 | os: [linux] 538 | 539 | '@img/sharp-libvips-linux-s390x@1.0.4': 540 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 541 | cpu: [s390x] 542 | os: [linux] 543 | 544 | '@img/sharp-libvips-linux-x64@1.0.4': 545 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 546 | cpu: [x64] 547 | os: [linux] 548 | 549 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 550 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 551 | cpu: [arm64] 552 | os: [linux] 553 | 554 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 555 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 556 | cpu: [x64] 557 | os: [linux] 558 | 559 | '@img/sharp-linux-arm64@0.33.5': 560 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 561 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 562 | cpu: [arm64] 563 | os: [linux] 564 | 565 | '@img/sharp-linux-arm@0.33.5': 566 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 567 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 568 | cpu: [arm] 569 | os: [linux] 570 | 571 | '@img/sharp-linux-s390x@0.33.5': 572 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 573 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 574 | cpu: [s390x] 575 | os: [linux] 576 | 577 | '@img/sharp-linux-x64@0.33.5': 578 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 579 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 580 | cpu: [x64] 581 | os: [linux] 582 | 583 | '@img/sharp-linuxmusl-arm64@0.33.5': 584 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 585 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 586 | cpu: [arm64] 587 | os: [linux] 588 | 589 | '@img/sharp-linuxmusl-x64@0.33.5': 590 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 591 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 592 | cpu: [x64] 593 | os: [linux] 594 | 595 | '@img/sharp-wasm32@0.33.5': 596 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 597 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 598 | cpu: [wasm32] 599 | 600 | '@img/sharp-win32-ia32@0.33.5': 601 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 602 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 603 | cpu: [ia32] 604 | os: [win32] 605 | 606 | '@img/sharp-win32-x64@0.33.5': 607 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 608 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 609 | cpu: [x64] 610 | os: [win32] 611 | 612 | '@jridgewell/resolve-uri@3.1.2': 613 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 614 | engines: {node: '>=6.0.0'} 615 | 616 | '@jridgewell/sourcemap-codec@1.5.0': 617 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 618 | 619 | '@jridgewell/trace-mapping@0.3.9': 620 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 621 | 622 | '@microsoft/eslint-formatter-sarif@3.1.0': 623 | resolution: {integrity: sha512-/mn4UXziHzGXnKCg+r8HGgPy+w4RzpgdoqFuqaKOqUVBT5x2CygGefIrO4SusaY7t0C4gyIWMNu6YQT6Jw64Cw==} 624 | engines: {node: '>= 14'} 625 | 626 | '@nodelib/fs.scandir@2.1.5': 627 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 628 | engines: {node: '>= 8'} 629 | 630 | '@nodelib/fs.stat@2.0.5': 631 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 632 | engines: {node: '>= 8'} 633 | 634 | '@nodelib/fs.walk@1.2.8': 635 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 636 | engines: {node: '>= 8'} 637 | 638 | '@ryanccn/eslint-config@0.5.0': 639 | resolution: {integrity: sha512-9EpQE6943NEtYWLCgrUEPK6kGRw+AF0azi9L5SVsqAZ+Ub7PYjfoZpQhm9bopret4yDZjRCl0CZq5xtYfGTeLg==} 640 | peerDependencies: 641 | '@eslint/eslintrc': '*' 642 | '@eslint/js': '*' 643 | '@next/eslint-plugin-next': '*' 644 | '@stylistic/eslint-plugin': '*' 645 | '@unocss/eslint-config': '*' 646 | eslint: '*' 647 | eslint-config-prettier: '*' 648 | eslint-plugin-react-hooks: '*' 649 | eslint-plugin-svelte: '*' 650 | eslint-plugin-unicorn: '*' 651 | svelte: '*' 652 | typescript-eslint: '*' 653 | peerDependenciesMeta: 654 | '@eslint/eslintrc': 655 | optional: true 656 | '@eslint/js': 657 | optional: true 658 | '@next/eslint-plugin-next': 659 | optional: true 660 | '@stylistic/eslint-plugin': 661 | optional: true 662 | '@unocss/eslint-config': 663 | optional: true 664 | eslint-config-prettier: 665 | optional: true 666 | eslint-plugin-react-hooks: 667 | optional: true 668 | eslint-plugin-svelte: 669 | optional: true 670 | eslint-plugin-unicorn: 671 | optional: true 672 | svelte: 673 | optional: true 674 | typescript-eslint: 675 | optional: true 676 | 677 | '@types/estree@1.0.7': 678 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 679 | 680 | '@types/json-schema@7.0.15': 681 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 682 | 683 | '@typescript-eslint/eslint-plugin@8.33.0': 684 | resolution: {integrity: sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==} 685 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 686 | peerDependencies: 687 | '@typescript-eslint/parser': ^8.33.0 688 | eslint: ^8.57.0 || ^9.0.0 689 | typescript: '>=4.8.4 <5.9.0' 690 | 691 | '@typescript-eslint/parser@8.33.0': 692 | resolution: {integrity: sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==} 693 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 694 | peerDependencies: 695 | eslint: ^8.57.0 || ^9.0.0 696 | typescript: '>=4.8.4 <5.9.0' 697 | 698 | '@typescript-eslint/project-service@8.33.0': 699 | resolution: {integrity: sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==} 700 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 701 | 702 | '@typescript-eslint/scope-manager@8.32.1': 703 | resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} 704 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 705 | 706 | '@typescript-eslint/scope-manager@8.33.0': 707 | resolution: {integrity: sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==} 708 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 709 | 710 | '@typescript-eslint/tsconfig-utils@8.33.0': 711 | resolution: {integrity: sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==} 712 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 713 | peerDependencies: 714 | typescript: '>=4.8.4 <5.9.0' 715 | 716 | '@typescript-eslint/type-utils@8.33.0': 717 | resolution: {integrity: sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==} 718 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 719 | peerDependencies: 720 | eslint: ^8.57.0 || ^9.0.0 721 | typescript: '>=4.8.4 <5.9.0' 722 | 723 | '@typescript-eslint/types@8.32.1': 724 | resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} 725 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 726 | 727 | '@typescript-eslint/types@8.33.0': 728 | resolution: {integrity: sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==} 729 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 730 | 731 | '@typescript-eslint/typescript-estree@8.32.1': 732 | resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} 733 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 734 | peerDependencies: 735 | typescript: '>=4.8.4 <5.9.0' 736 | 737 | '@typescript-eslint/typescript-estree@8.33.0': 738 | resolution: {integrity: sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==} 739 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 740 | peerDependencies: 741 | typescript: '>=4.8.4 <5.9.0' 742 | 743 | '@typescript-eslint/utils@8.32.1': 744 | resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} 745 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 746 | peerDependencies: 747 | eslint: ^8.57.0 || ^9.0.0 748 | typescript: '>=4.8.4 <5.9.0' 749 | 750 | '@typescript-eslint/utils@8.33.0': 751 | resolution: {integrity: sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==} 752 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 753 | peerDependencies: 754 | eslint: ^8.57.0 || ^9.0.0 755 | typescript: '>=4.8.4 <5.9.0' 756 | 757 | '@typescript-eslint/visitor-keys@8.32.1': 758 | resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} 759 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 760 | 761 | '@typescript-eslint/visitor-keys@8.33.0': 762 | resolution: {integrity: sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==} 763 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 764 | 765 | '@ungap/structured-clone@1.3.0': 766 | resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 767 | 768 | acorn-jsx@5.3.2: 769 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 770 | peerDependencies: 771 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 772 | 773 | acorn-walk@8.3.2: 774 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 775 | engines: {node: '>=0.4.0'} 776 | 777 | acorn@8.14.0: 778 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 779 | engines: {node: '>=0.4.0'} 780 | hasBin: true 781 | 782 | acorn@8.14.1: 783 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 784 | engines: {node: '>=0.4.0'} 785 | hasBin: true 786 | 787 | ajv@6.12.6: 788 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 789 | 790 | ansi-regex@5.0.1: 791 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 792 | engines: {node: '>=8'} 793 | 794 | ansi-styles@4.3.0: 795 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 796 | engines: {node: '>=8'} 797 | 798 | argparse@2.0.1: 799 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 800 | 801 | as-table@1.0.55: 802 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 803 | 804 | balanced-match@1.0.2: 805 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 806 | 807 | blake3-wasm@2.1.5: 808 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 809 | 810 | brace-expansion@1.1.11: 811 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 812 | 813 | brace-expansion@2.0.1: 814 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 815 | 816 | braces@3.0.3: 817 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 818 | engines: {node: '>=8'} 819 | 820 | browserslist@4.24.5: 821 | resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} 822 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 823 | hasBin: true 824 | 825 | builtin-modules@5.0.0: 826 | resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} 827 | engines: {node: '>=18.20'} 828 | 829 | callsites@3.1.0: 830 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 831 | engines: {node: '>=6'} 832 | 833 | caniuse-lite@1.0.30001718: 834 | resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} 835 | 836 | chalk@4.1.2: 837 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 838 | engines: {node: '>=10'} 839 | 840 | ci-info@4.2.0: 841 | resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} 842 | engines: {node: '>=8'} 843 | 844 | clean-regexp@1.0.0: 845 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 846 | engines: {node: '>=4'} 847 | 848 | color-convert@2.0.1: 849 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 850 | engines: {node: '>=7.0.0'} 851 | 852 | color-name@1.1.4: 853 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 854 | 855 | color-string@1.9.1: 856 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 857 | 858 | color@4.2.3: 859 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 860 | engines: {node: '>=12.5.0'} 861 | 862 | concat-map@0.0.1: 863 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 864 | 865 | confbox@0.1.8: 866 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 867 | 868 | confbox@0.2.2: 869 | resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} 870 | 871 | cookie@0.7.2: 872 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 873 | engines: {node: '>= 0.6'} 874 | 875 | core-js-compat@3.42.0: 876 | resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} 877 | 878 | cross-spawn@7.0.6: 879 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 880 | engines: {node: '>= 8'} 881 | 882 | data-uri-to-buffer@2.0.2: 883 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 884 | 885 | debug@4.4.1: 886 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 887 | engines: {node: '>=6.0'} 888 | peerDependencies: 889 | supports-color: '*' 890 | peerDependenciesMeta: 891 | supports-color: 892 | optional: true 893 | 894 | deep-is@0.1.4: 895 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 896 | 897 | defu@6.1.4: 898 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 899 | 900 | detect-libc@2.0.4: 901 | resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} 902 | engines: {node: '>=8'} 903 | 904 | doctrine@3.0.0: 905 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 906 | engines: {node: '>=6.0.0'} 907 | 908 | electron-to-chromium@1.5.157: 909 | resolution: {integrity: sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==} 910 | 911 | esbuild@0.25.4: 912 | resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} 913 | engines: {node: '>=18'} 914 | hasBin: true 915 | 916 | esbuild@0.25.5: 917 | resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} 918 | engines: {node: '>=18'} 919 | hasBin: true 920 | 921 | escalade@3.2.0: 922 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 923 | engines: {node: '>=6'} 924 | 925 | escape-string-regexp@1.0.5: 926 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 927 | engines: {node: '>=0.8.0'} 928 | 929 | escape-string-regexp@4.0.0: 930 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 931 | engines: {node: '>=10'} 932 | 933 | eslint-config-prettier@10.1.5: 934 | resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} 935 | hasBin: true 936 | peerDependencies: 937 | eslint: '>=7.0.0' 938 | 939 | eslint-plugin-unicorn@59.0.1: 940 | resolution: {integrity: sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==} 941 | engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} 942 | peerDependencies: 943 | eslint: '>=9.22.0' 944 | 945 | eslint-scope@7.2.2: 946 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 947 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 948 | 949 | eslint-scope@8.3.0: 950 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 951 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 952 | 953 | eslint-visitor-keys@3.4.3: 954 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 955 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 956 | 957 | eslint-visitor-keys@4.2.0: 958 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 959 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 960 | 961 | eslint@8.57.1: 962 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 963 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 964 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 965 | hasBin: true 966 | 967 | eslint@9.27.0: 968 | resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} 969 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 970 | hasBin: true 971 | peerDependencies: 972 | jiti: '*' 973 | peerDependenciesMeta: 974 | jiti: 975 | optional: true 976 | 977 | espree@10.3.0: 978 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 979 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 980 | 981 | espree@9.6.1: 982 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 983 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 984 | 985 | esquery@1.6.0: 986 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 987 | engines: {node: '>=0.10'} 988 | 989 | esrecurse@4.3.0: 990 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 991 | engines: {node: '>=4.0'} 992 | 993 | estraverse@5.3.0: 994 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 995 | engines: {node: '>=4.0'} 996 | 997 | esutils@2.0.3: 998 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 999 | engines: {node: '>=0.10.0'} 1000 | 1001 | exit-hook@2.2.1: 1002 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1003 | engines: {node: '>=6'} 1004 | 1005 | exsolve@1.0.5: 1006 | resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} 1007 | 1008 | fast-deep-equal@3.1.3: 1009 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1010 | 1011 | fast-glob@3.3.3: 1012 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1013 | engines: {node: '>=8.6.0'} 1014 | 1015 | fast-json-stable-stringify@2.1.0: 1016 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1017 | 1018 | fast-levenshtein@2.0.6: 1019 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1020 | 1021 | fastq@1.19.1: 1022 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1023 | 1024 | file-entry-cache@6.0.1: 1025 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1026 | engines: {node: ^10.12.0 || >=12.0.0} 1027 | 1028 | file-entry-cache@8.0.0: 1029 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1030 | engines: {node: '>=16.0.0'} 1031 | 1032 | fill-range@7.1.1: 1033 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1034 | engines: {node: '>=8'} 1035 | 1036 | find-up-simple@1.0.1: 1037 | resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 1038 | engines: {node: '>=18'} 1039 | 1040 | find-up@5.0.0: 1041 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1042 | engines: {node: '>=10'} 1043 | 1044 | flat-cache@3.2.0: 1045 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1046 | engines: {node: ^10.12.0 || >=12.0.0} 1047 | 1048 | flat-cache@4.0.1: 1049 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1050 | engines: {node: '>=16'} 1051 | 1052 | flatted@3.3.3: 1053 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1054 | 1055 | fs.realpath@1.0.0: 1056 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1057 | 1058 | fsevents@2.3.3: 1059 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1060 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1061 | os: [darwin] 1062 | 1063 | get-source@2.0.12: 1064 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1065 | 1066 | get-tsconfig@4.10.1: 1067 | resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} 1068 | 1069 | glob-parent@5.1.2: 1070 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1071 | engines: {node: '>= 6'} 1072 | 1073 | glob-parent@6.0.2: 1074 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1075 | engines: {node: '>=10.13.0'} 1076 | 1077 | glob-to-regexp@0.4.1: 1078 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1079 | 1080 | glob@7.2.3: 1081 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1082 | deprecated: Glob versions prior to v9 are no longer supported 1083 | 1084 | globals@13.24.0: 1085 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1086 | engines: {node: '>=8'} 1087 | 1088 | globals@14.0.0: 1089 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1090 | engines: {node: '>=18'} 1091 | 1092 | globals@16.1.0: 1093 | resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} 1094 | engines: {node: '>=18'} 1095 | 1096 | graphemer@1.4.0: 1097 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1098 | 1099 | has-flag@4.0.0: 1100 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1101 | engines: {node: '>=8'} 1102 | 1103 | hono@4.7.10: 1104 | resolution: {integrity: sha512-QkACju9MiN59CKSY5JsGZCYmPZkA6sIW6OFCUp7qDjZu6S6KHtJHhAc9Uy9mV9F8PJ1/HQ3ybZF2yjCa/73fvQ==} 1105 | engines: {node: '>=16.9.0'} 1106 | 1107 | ignore@5.3.2: 1108 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1109 | engines: {node: '>= 4'} 1110 | 1111 | ignore@7.0.4: 1112 | resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} 1113 | engines: {node: '>= 4'} 1114 | 1115 | import-fresh@3.3.1: 1116 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1117 | engines: {node: '>=6'} 1118 | 1119 | imurmurhash@0.1.4: 1120 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1121 | engines: {node: '>=0.8.19'} 1122 | 1123 | indent-string@5.0.0: 1124 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1125 | engines: {node: '>=12'} 1126 | 1127 | inflight@1.0.6: 1128 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1129 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1130 | 1131 | inherits@2.0.4: 1132 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1133 | 1134 | is-arrayish@0.3.2: 1135 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1136 | 1137 | is-builtin-module@5.0.0: 1138 | resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} 1139 | engines: {node: '>=18.20'} 1140 | 1141 | is-extglob@2.1.1: 1142 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1143 | engines: {node: '>=0.10.0'} 1144 | 1145 | is-glob@4.0.3: 1146 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1147 | engines: {node: '>=0.10.0'} 1148 | 1149 | is-number@7.0.0: 1150 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1151 | engines: {node: '>=0.12.0'} 1152 | 1153 | is-path-inside@3.0.3: 1154 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1155 | engines: {node: '>=8'} 1156 | 1157 | isexe@2.0.0: 1158 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1159 | 1160 | js-yaml@4.1.0: 1161 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1162 | hasBin: true 1163 | 1164 | jschardet@3.1.4: 1165 | resolution: {integrity: sha512-/kmVISmrwVwtyYU40iQUOp3SUPk2dhNCMsZBQX0R1/jZ8maaXJ/oZIzUOiyOqcgtLnETFKYChbJ5iDC/eWmFHg==} 1166 | engines: {node: '>=0.1.90'} 1167 | 1168 | jsesc@3.0.2: 1169 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1170 | engines: {node: '>=6'} 1171 | hasBin: true 1172 | 1173 | jsesc@3.1.0: 1174 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1175 | engines: {node: '>=6'} 1176 | hasBin: true 1177 | 1178 | json-buffer@3.0.1: 1179 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1180 | 1181 | json-schema-traverse@0.4.1: 1182 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1183 | 1184 | json-stable-stringify-without-jsonify@1.0.1: 1185 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1186 | 1187 | keyv@4.5.4: 1188 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1189 | 1190 | levn@0.4.1: 1191 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1192 | engines: {node: '>= 0.8.0'} 1193 | 1194 | local-pkg@1.1.1: 1195 | resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} 1196 | engines: {node: '>=14'} 1197 | 1198 | locate-path@6.0.0: 1199 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1200 | engines: {node: '>=10'} 1201 | 1202 | lodash.merge@4.6.2: 1203 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1204 | 1205 | lodash@4.17.21: 1206 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1207 | 1208 | merge2@1.4.1: 1209 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1210 | engines: {node: '>= 8'} 1211 | 1212 | micromatch@4.0.8: 1213 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1214 | engines: {node: '>=8.6'} 1215 | 1216 | mime@3.0.0: 1217 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1218 | engines: {node: '>=10.0.0'} 1219 | hasBin: true 1220 | 1221 | min-indent@1.0.1: 1222 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1223 | engines: {node: '>=4'} 1224 | 1225 | miniflare@4.20250523.0: 1226 | resolution: {integrity: sha512-g4F1AC5xi66rB2eQNo2Fx7EffaXhMdgUSRl/ivgb4LMALMpxghG98oC4twqVwDLWIFSVFjtL1YEuYrPO8044mg==} 1227 | engines: {node: '>=18.0.0'} 1228 | hasBin: true 1229 | 1230 | minimatch@3.1.2: 1231 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1232 | 1233 | minimatch@9.0.5: 1234 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1235 | engines: {node: '>=16 || 14 >=14.17'} 1236 | 1237 | mlly@1.7.4: 1238 | resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} 1239 | 1240 | ms@2.1.3: 1241 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1242 | 1243 | mustache@4.2.0: 1244 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1245 | hasBin: true 1246 | 1247 | natural-compare@1.4.0: 1248 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1249 | 1250 | node-releases@2.0.19: 1251 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1252 | 1253 | ohash@2.0.11: 1254 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1255 | 1256 | once@1.4.0: 1257 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1258 | 1259 | optionator@0.9.4: 1260 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1261 | engines: {node: '>= 0.8.0'} 1262 | 1263 | p-limit@3.1.0: 1264 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1265 | engines: {node: '>=10'} 1266 | 1267 | p-locate@5.0.0: 1268 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1269 | engines: {node: '>=10'} 1270 | 1271 | parent-module@1.0.1: 1272 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1273 | engines: {node: '>=6'} 1274 | 1275 | path-exists@4.0.0: 1276 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1277 | engines: {node: '>=8'} 1278 | 1279 | path-is-absolute@1.0.1: 1280 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1281 | engines: {node: '>=0.10.0'} 1282 | 1283 | path-key@3.1.1: 1284 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1285 | engines: {node: '>=8'} 1286 | 1287 | path-to-regexp@6.3.0: 1288 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1289 | 1290 | pathe@2.0.3: 1291 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1292 | 1293 | picocolors@1.1.1: 1294 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1295 | 1296 | picomatch@2.3.1: 1297 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1298 | engines: {node: '>=8.6'} 1299 | 1300 | pkg-types@1.3.1: 1301 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1302 | 1303 | pkg-types@2.1.0: 1304 | resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} 1305 | 1306 | pluralize@8.0.0: 1307 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1308 | engines: {node: '>=4'} 1309 | 1310 | prelude-ls@1.2.1: 1311 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1312 | engines: {node: '>= 0.8.0'} 1313 | 1314 | printable-characters@1.0.42: 1315 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 1316 | 1317 | punycode@2.3.1: 1318 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1319 | engines: {node: '>=6'} 1320 | 1321 | quansync@0.2.10: 1322 | resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} 1323 | 1324 | queue-microtask@1.2.3: 1325 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1326 | 1327 | regexp-tree@0.1.27: 1328 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 1329 | hasBin: true 1330 | 1331 | regjsparser@0.12.0: 1332 | resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} 1333 | hasBin: true 1334 | 1335 | resolve-from@4.0.0: 1336 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1337 | engines: {node: '>=4'} 1338 | 1339 | resolve-pkg-maps@1.0.0: 1340 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1341 | 1342 | reusify@1.1.0: 1343 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1344 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1345 | 1346 | rimraf@3.0.2: 1347 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1348 | deprecated: Rimraf versions prior to v4 are no longer supported 1349 | hasBin: true 1350 | 1351 | run-parallel@1.2.0: 1352 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1353 | 1354 | semver@7.7.2: 1355 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1356 | engines: {node: '>=10'} 1357 | hasBin: true 1358 | 1359 | sharp@0.33.5: 1360 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1361 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1362 | 1363 | shebang-command@2.0.0: 1364 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1365 | engines: {node: '>=8'} 1366 | 1367 | shebang-regex@3.0.0: 1368 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1369 | engines: {node: '>=8'} 1370 | 1371 | simple-swizzle@0.2.2: 1372 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1373 | 1374 | source-map@0.6.1: 1375 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1376 | engines: {node: '>=0.10.0'} 1377 | 1378 | stacktracey@2.1.8: 1379 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 1380 | 1381 | stoppable@1.1.0: 1382 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1383 | engines: {node: '>=4', npm: '>=6'} 1384 | 1385 | strip-ansi@6.0.1: 1386 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1387 | engines: {node: '>=8'} 1388 | 1389 | strip-indent@4.0.0: 1390 | resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} 1391 | engines: {node: '>=12'} 1392 | 1393 | strip-json-comments@3.1.1: 1394 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1395 | engines: {node: '>=8'} 1396 | 1397 | supports-color@7.2.0: 1398 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1399 | engines: {node: '>=8'} 1400 | 1401 | text-table@0.2.0: 1402 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1403 | 1404 | tinyrainbow@2.0.0: 1405 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1406 | engines: {node: '>=14.0.0'} 1407 | 1408 | to-regex-range@5.0.1: 1409 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1410 | engines: {node: '>=8.0'} 1411 | 1412 | ts-api-utils@2.1.0: 1413 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1414 | engines: {node: '>=18.12'} 1415 | peerDependencies: 1416 | typescript: '>=4.8.4' 1417 | 1418 | tslib@2.8.1: 1419 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1420 | 1421 | tsx@4.19.4: 1422 | resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} 1423 | engines: {node: '>=18.0.0'} 1424 | hasBin: true 1425 | 1426 | type-check@0.4.0: 1427 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1428 | engines: {node: '>= 0.8.0'} 1429 | 1430 | type-fest@0.20.2: 1431 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1432 | engines: {node: '>=10'} 1433 | 1434 | typescript-eslint@8.33.0: 1435 | resolution: {integrity: sha512-5YmNhF24ylCsvdNW2oJwMzTbaeO4bg90KeGtMjUw0AGtHksgEPLRTUil+coHwCfiu4QjVJFnjp94DmU6zV7DhQ==} 1436 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1437 | peerDependencies: 1438 | eslint: ^8.57.0 || ^9.0.0 1439 | typescript: '>=4.8.4 <5.9.0' 1440 | 1441 | typescript@5.8.3: 1442 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1443 | engines: {node: '>=14.17'} 1444 | hasBin: true 1445 | 1446 | ufo@1.6.1: 1447 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1448 | 1449 | undici@5.29.0: 1450 | resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 1451 | engines: {node: '>=14.0'} 1452 | 1453 | unenv@2.0.0-rc.17: 1454 | resolution: {integrity: sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg==} 1455 | 1456 | update-browserslist-db@1.1.3: 1457 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1458 | hasBin: true 1459 | peerDependencies: 1460 | browserslist: '>= 4.21.0' 1461 | 1462 | uri-js@4.4.1: 1463 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1464 | 1465 | utf8@3.0.0: 1466 | resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} 1467 | 1468 | which@2.0.2: 1469 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1470 | engines: {node: '>= 8'} 1471 | hasBin: true 1472 | 1473 | word-wrap@1.2.5: 1474 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1475 | engines: {node: '>=0.10.0'} 1476 | 1477 | workerd@1.20250523.0: 1478 | resolution: {integrity: sha512-OClsq9ZzZZNdkY8/JTBjf+/A6F1q/SOn3/RQWCR0kDoclxecHS6Nq80jY6NP0ubJBKnqrUggA9WOWBgwWWOGUA==} 1479 | engines: {node: '>=16'} 1480 | hasBin: true 1481 | 1482 | wrangler@4.17.0: 1483 | resolution: {integrity: sha512-FIOriw2Z7aNALAtnt4hTojDuU44n8pGJl62id0ig0s45Mej/Clg07vpmz+QCLTT7huiaSSyA1wthYOwtp0+K6A==} 1484 | engines: {node: '>=18.0.0'} 1485 | hasBin: true 1486 | peerDependencies: 1487 | '@cloudflare/workers-types': ^4.20250523.0 1488 | peerDependenciesMeta: 1489 | '@cloudflare/workers-types': 1490 | optional: true 1491 | 1492 | wrappy@1.0.2: 1493 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1494 | 1495 | ws@8.18.0: 1496 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1497 | engines: {node: '>=10.0.0'} 1498 | peerDependencies: 1499 | bufferutil: ^4.0.1 1500 | utf-8-validate: '>=5.0.2' 1501 | peerDependenciesMeta: 1502 | bufferutil: 1503 | optional: true 1504 | utf-8-validate: 1505 | optional: true 1506 | 1507 | yocto-queue@0.1.0: 1508 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1509 | engines: {node: '>=10'} 1510 | 1511 | youch@3.3.4: 1512 | resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} 1513 | 1514 | zod@3.22.3: 1515 | resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 1516 | 1517 | snapshots: 1518 | 1519 | '@babel/helper-validator-identifier@7.27.1': {} 1520 | 1521 | '@cloudflare/kv-asset-handler@0.4.0': 1522 | dependencies: 1523 | mime: 3.0.0 1524 | 1525 | '@cloudflare/unenv-preset@2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250523.0)': 1526 | dependencies: 1527 | unenv: 2.0.0-rc.17 1528 | optionalDependencies: 1529 | workerd: 1.20250523.0 1530 | 1531 | '@cloudflare/workerd-darwin-64@1.20250523.0': 1532 | optional: true 1533 | 1534 | '@cloudflare/workerd-darwin-arm64@1.20250523.0': 1535 | optional: true 1536 | 1537 | '@cloudflare/workerd-linux-64@1.20250523.0': 1538 | optional: true 1539 | 1540 | '@cloudflare/workerd-linux-arm64@1.20250523.0': 1541 | optional: true 1542 | 1543 | '@cloudflare/workerd-windows-64@1.20250523.0': 1544 | optional: true 1545 | 1546 | '@cloudflare/workers-types@4.20250528.0': {} 1547 | 1548 | '@cspotcode/source-map-support@0.8.1': 1549 | dependencies: 1550 | '@jridgewell/trace-mapping': 0.3.9 1551 | 1552 | '@emnapi/runtime@1.4.3': 1553 | dependencies: 1554 | tslib: 2.8.1 1555 | optional: true 1556 | 1557 | '@esbuild/aix-ppc64@0.25.4': 1558 | optional: true 1559 | 1560 | '@esbuild/aix-ppc64@0.25.5': 1561 | optional: true 1562 | 1563 | '@esbuild/android-arm64@0.25.4': 1564 | optional: true 1565 | 1566 | '@esbuild/android-arm64@0.25.5': 1567 | optional: true 1568 | 1569 | '@esbuild/android-arm@0.25.4': 1570 | optional: true 1571 | 1572 | '@esbuild/android-arm@0.25.5': 1573 | optional: true 1574 | 1575 | '@esbuild/android-x64@0.25.4': 1576 | optional: true 1577 | 1578 | '@esbuild/android-x64@0.25.5': 1579 | optional: true 1580 | 1581 | '@esbuild/darwin-arm64@0.25.4': 1582 | optional: true 1583 | 1584 | '@esbuild/darwin-arm64@0.25.5': 1585 | optional: true 1586 | 1587 | '@esbuild/darwin-x64@0.25.4': 1588 | optional: true 1589 | 1590 | '@esbuild/darwin-x64@0.25.5': 1591 | optional: true 1592 | 1593 | '@esbuild/freebsd-arm64@0.25.4': 1594 | optional: true 1595 | 1596 | '@esbuild/freebsd-arm64@0.25.5': 1597 | optional: true 1598 | 1599 | '@esbuild/freebsd-x64@0.25.4': 1600 | optional: true 1601 | 1602 | '@esbuild/freebsd-x64@0.25.5': 1603 | optional: true 1604 | 1605 | '@esbuild/linux-arm64@0.25.4': 1606 | optional: true 1607 | 1608 | '@esbuild/linux-arm64@0.25.5': 1609 | optional: true 1610 | 1611 | '@esbuild/linux-arm@0.25.4': 1612 | optional: true 1613 | 1614 | '@esbuild/linux-arm@0.25.5': 1615 | optional: true 1616 | 1617 | '@esbuild/linux-ia32@0.25.4': 1618 | optional: true 1619 | 1620 | '@esbuild/linux-ia32@0.25.5': 1621 | optional: true 1622 | 1623 | '@esbuild/linux-loong64@0.25.4': 1624 | optional: true 1625 | 1626 | '@esbuild/linux-loong64@0.25.5': 1627 | optional: true 1628 | 1629 | '@esbuild/linux-mips64el@0.25.4': 1630 | optional: true 1631 | 1632 | '@esbuild/linux-mips64el@0.25.5': 1633 | optional: true 1634 | 1635 | '@esbuild/linux-ppc64@0.25.4': 1636 | optional: true 1637 | 1638 | '@esbuild/linux-ppc64@0.25.5': 1639 | optional: true 1640 | 1641 | '@esbuild/linux-riscv64@0.25.4': 1642 | optional: true 1643 | 1644 | '@esbuild/linux-riscv64@0.25.5': 1645 | optional: true 1646 | 1647 | '@esbuild/linux-s390x@0.25.4': 1648 | optional: true 1649 | 1650 | '@esbuild/linux-s390x@0.25.5': 1651 | optional: true 1652 | 1653 | '@esbuild/linux-x64@0.25.4': 1654 | optional: true 1655 | 1656 | '@esbuild/linux-x64@0.25.5': 1657 | optional: true 1658 | 1659 | '@esbuild/netbsd-arm64@0.25.4': 1660 | optional: true 1661 | 1662 | '@esbuild/netbsd-arm64@0.25.5': 1663 | optional: true 1664 | 1665 | '@esbuild/netbsd-x64@0.25.4': 1666 | optional: true 1667 | 1668 | '@esbuild/netbsd-x64@0.25.5': 1669 | optional: true 1670 | 1671 | '@esbuild/openbsd-arm64@0.25.4': 1672 | optional: true 1673 | 1674 | '@esbuild/openbsd-arm64@0.25.5': 1675 | optional: true 1676 | 1677 | '@esbuild/openbsd-x64@0.25.4': 1678 | optional: true 1679 | 1680 | '@esbuild/openbsd-x64@0.25.5': 1681 | optional: true 1682 | 1683 | '@esbuild/sunos-x64@0.25.4': 1684 | optional: true 1685 | 1686 | '@esbuild/sunos-x64@0.25.5': 1687 | optional: true 1688 | 1689 | '@esbuild/win32-arm64@0.25.4': 1690 | optional: true 1691 | 1692 | '@esbuild/win32-arm64@0.25.5': 1693 | optional: true 1694 | 1695 | '@esbuild/win32-ia32@0.25.4': 1696 | optional: true 1697 | 1698 | '@esbuild/win32-ia32@0.25.5': 1699 | optional: true 1700 | 1701 | '@esbuild/win32-x64@0.25.4': 1702 | optional: true 1703 | 1704 | '@esbuild/win32-x64@0.25.5': 1705 | optional: true 1706 | 1707 | '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': 1708 | dependencies: 1709 | eslint: 8.57.1 1710 | eslint-visitor-keys: 3.4.3 1711 | 1712 | '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': 1713 | dependencies: 1714 | eslint: 9.27.0 1715 | eslint-visitor-keys: 3.4.3 1716 | 1717 | '@eslint-community/regexpp@4.12.1': {} 1718 | 1719 | '@eslint/compat@1.2.9(eslint@9.27.0)': 1720 | optionalDependencies: 1721 | eslint: 9.27.0 1722 | 1723 | '@eslint/config-array@0.20.0': 1724 | dependencies: 1725 | '@eslint/object-schema': 2.1.6 1726 | debug: 4.4.1 1727 | minimatch: 3.1.2 1728 | transitivePeerDependencies: 1729 | - supports-color 1730 | 1731 | '@eslint/config-helpers@0.2.2': {} 1732 | 1733 | '@eslint/core@0.13.0': 1734 | dependencies: 1735 | '@types/json-schema': 7.0.15 1736 | 1737 | '@eslint/core@0.14.0': 1738 | dependencies: 1739 | '@types/json-schema': 7.0.15 1740 | 1741 | '@eslint/eslintrc@2.1.4': 1742 | dependencies: 1743 | ajv: 6.12.6 1744 | debug: 4.4.1 1745 | espree: 9.6.1 1746 | globals: 13.24.0 1747 | ignore: 5.3.2 1748 | import-fresh: 3.3.1 1749 | js-yaml: 4.1.0 1750 | minimatch: 3.1.2 1751 | strip-json-comments: 3.1.1 1752 | transitivePeerDependencies: 1753 | - supports-color 1754 | 1755 | '@eslint/eslintrc@3.3.1': 1756 | dependencies: 1757 | ajv: 6.12.6 1758 | debug: 4.4.1 1759 | espree: 10.3.0 1760 | globals: 14.0.0 1761 | ignore: 5.3.2 1762 | import-fresh: 3.3.1 1763 | js-yaml: 4.1.0 1764 | minimatch: 3.1.2 1765 | strip-json-comments: 3.1.1 1766 | transitivePeerDependencies: 1767 | - supports-color 1768 | 1769 | '@eslint/js@8.57.1': {} 1770 | 1771 | '@eslint/js@9.27.0': {} 1772 | 1773 | '@eslint/object-schema@2.1.6': {} 1774 | 1775 | '@eslint/plugin-kit@0.2.8': 1776 | dependencies: 1777 | '@eslint/core': 0.13.0 1778 | levn: 0.4.1 1779 | 1780 | '@eslint/plugin-kit@0.3.1': 1781 | dependencies: 1782 | '@eslint/core': 0.14.0 1783 | levn: 0.4.1 1784 | 1785 | '@fastify/busboy@2.1.1': {} 1786 | 1787 | '@humanfs/core@0.19.1': {} 1788 | 1789 | '@humanfs/node@0.16.6': 1790 | dependencies: 1791 | '@humanfs/core': 0.19.1 1792 | '@humanwhocodes/retry': 0.3.1 1793 | 1794 | '@humanwhocodes/config-array@0.13.0': 1795 | dependencies: 1796 | '@humanwhocodes/object-schema': 2.0.3 1797 | debug: 4.4.1 1798 | minimatch: 3.1.2 1799 | transitivePeerDependencies: 1800 | - supports-color 1801 | 1802 | '@humanwhocodes/module-importer@1.0.1': {} 1803 | 1804 | '@humanwhocodes/object-schema@2.0.3': {} 1805 | 1806 | '@humanwhocodes/retry@0.3.1': {} 1807 | 1808 | '@humanwhocodes/retry@0.4.3': {} 1809 | 1810 | '@img/sharp-darwin-arm64@0.33.5': 1811 | optionalDependencies: 1812 | '@img/sharp-libvips-darwin-arm64': 1.0.4 1813 | optional: true 1814 | 1815 | '@img/sharp-darwin-x64@0.33.5': 1816 | optionalDependencies: 1817 | '@img/sharp-libvips-darwin-x64': 1.0.4 1818 | optional: true 1819 | 1820 | '@img/sharp-libvips-darwin-arm64@1.0.4': 1821 | optional: true 1822 | 1823 | '@img/sharp-libvips-darwin-x64@1.0.4': 1824 | optional: true 1825 | 1826 | '@img/sharp-libvips-linux-arm64@1.0.4': 1827 | optional: true 1828 | 1829 | '@img/sharp-libvips-linux-arm@1.0.5': 1830 | optional: true 1831 | 1832 | '@img/sharp-libvips-linux-s390x@1.0.4': 1833 | optional: true 1834 | 1835 | '@img/sharp-libvips-linux-x64@1.0.4': 1836 | optional: true 1837 | 1838 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 1839 | optional: true 1840 | 1841 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 1842 | optional: true 1843 | 1844 | '@img/sharp-linux-arm64@0.33.5': 1845 | optionalDependencies: 1846 | '@img/sharp-libvips-linux-arm64': 1.0.4 1847 | optional: true 1848 | 1849 | '@img/sharp-linux-arm@0.33.5': 1850 | optionalDependencies: 1851 | '@img/sharp-libvips-linux-arm': 1.0.5 1852 | optional: true 1853 | 1854 | '@img/sharp-linux-s390x@0.33.5': 1855 | optionalDependencies: 1856 | '@img/sharp-libvips-linux-s390x': 1.0.4 1857 | optional: true 1858 | 1859 | '@img/sharp-linux-x64@0.33.5': 1860 | optionalDependencies: 1861 | '@img/sharp-libvips-linux-x64': 1.0.4 1862 | optional: true 1863 | 1864 | '@img/sharp-linuxmusl-arm64@0.33.5': 1865 | optionalDependencies: 1866 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 1867 | optional: true 1868 | 1869 | '@img/sharp-linuxmusl-x64@0.33.5': 1870 | optionalDependencies: 1871 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 1872 | optional: true 1873 | 1874 | '@img/sharp-wasm32@0.33.5': 1875 | dependencies: 1876 | '@emnapi/runtime': 1.4.3 1877 | optional: true 1878 | 1879 | '@img/sharp-win32-ia32@0.33.5': 1880 | optional: true 1881 | 1882 | '@img/sharp-win32-x64@0.33.5': 1883 | optional: true 1884 | 1885 | '@jridgewell/resolve-uri@3.1.2': {} 1886 | 1887 | '@jridgewell/sourcemap-codec@1.5.0': {} 1888 | 1889 | '@jridgewell/trace-mapping@0.3.9': 1890 | dependencies: 1891 | '@jridgewell/resolve-uri': 3.1.2 1892 | '@jridgewell/sourcemap-codec': 1.5.0 1893 | 1894 | '@microsoft/eslint-formatter-sarif@3.1.0': 1895 | dependencies: 1896 | eslint: 8.57.1 1897 | jschardet: 3.1.4 1898 | lodash: 4.17.21 1899 | utf8: 3.0.0 1900 | transitivePeerDependencies: 1901 | - supports-color 1902 | 1903 | '@nodelib/fs.scandir@2.1.5': 1904 | dependencies: 1905 | '@nodelib/fs.stat': 2.0.5 1906 | run-parallel: 1.2.0 1907 | 1908 | '@nodelib/fs.stat@2.0.5': {} 1909 | 1910 | '@nodelib/fs.walk@1.2.8': 1911 | dependencies: 1912 | '@nodelib/fs.scandir': 2.1.5 1913 | fastq: 1.19.1 1914 | 1915 | '@ryanccn/eslint-config@0.5.0(@eslint/eslintrc@3.3.1)(@eslint/js@9.27.0)(eslint-config-prettier@10.1.5(eslint@9.27.0))(eslint-plugin-unicorn@59.0.1(eslint@9.27.0))(eslint@9.27.0)(typescript-eslint@8.33.0(eslint@9.27.0)(typescript@5.8.3))(typescript@5.8.3)': 1916 | dependencies: 1917 | '@eslint/compat': 1.2.9(eslint@9.27.0) 1918 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1919 | eslint: 9.27.0 1920 | globals: 16.1.0 1921 | local-pkg: 1.1.1 1922 | tinyrainbow: 2.0.0 1923 | optionalDependencies: 1924 | '@eslint/eslintrc': 3.3.1 1925 | '@eslint/js': 9.27.0 1926 | eslint-config-prettier: 10.1.5(eslint@9.27.0) 1927 | eslint-plugin-unicorn: 59.0.1(eslint@9.27.0) 1928 | typescript-eslint: 8.33.0(eslint@9.27.0)(typescript@5.8.3) 1929 | transitivePeerDependencies: 1930 | - supports-color 1931 | - typescript 1932 | 1933 | '@types/estree@1.0.7': {} 1934 | 1935 | '@types/json-schema@7.0.15': {} 1936 | 1937 | '@typescript-eslint/eslint-plugin@8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': 1938 | dependencies: 1939 | '@eslint-community/regexpp': 4.12.1 1940 | '@typescript-eslint/parser': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 1941 | '@typescript-eslint/scope-manager': 8.33.0 1942 | '@typescript-eslint/type-utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 1943 | '@typescript-eslint/utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 1944 | '@typescript-eslint/visitor-keys': 8.33.0 1945 | eslint: 9.27.0 1946 | graphemer: 1.4.0 1947 | ignore: 7.0.4 1948 | natural-compare: 1.4.0 1949 | ts-api-utils: 2.1.0(typescript@5.8.3) 1950 | typescript: 5.8.3 1951 | transitivePeerDependencies: 1952 | - supports-color 1953 | 1954 | '@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3)': 1955 | dependencies: 1956 | '@typescript-eslint/scope-manager': 8.33.0 1957 | '@typescript-eslint/types': 8.33.0 1958 | '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) 1959 | '@typescript-eslint/visitor-keys': 8.33.0 1960 | debug: 4.4.1 1961 | eslint: 9.27.0 1962 | typescript: 5.8.3 1963 | transitivePeerDependencies: 1964 | - supports-color 1965 | 1966 | '@typescript-eslint/project-service@8.33.0(typescript@5.8.3)': 1967 | dependencies: 1968 | '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.8.3) 1969 | '@typescript-eslint/types': 8.33.0 1970 | debug: 4.4.1 1971 | transitivePeerDependencies: 1972 | - supports-color 1973 | - typescript 1974 | 1975 | '@typescript-eslint/scope-manager@8.32.1': 1976 | dependencies: 1977 | '@typescript-eslint/types': 8.32.1 1978 | '@typescript-eslint/visitor-keys': 8.32.1 1979 | 1980 | '@typescript-eslint/scope-manager@8.33.0': 1981 | dependencies: 1982 | '@typescript-eslint/types': 8.33.0 1983 | '@typescript-eslint/visitor-keys': 8.33.0 1984 | 1985 | '@typescript-eslint/tsconfig-utils@8.33.0(typescript@5.8.3)': 1986 | dependencies: 1987 | typescript: 5.8.3 1988 | 1989 | '@typescript-eslint/type-utils@8.33.0(eslint@9.27.0)(typescript@5.8.3)': 1990 | dependencies: 1991 | '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) 1992 | '@typescript-eslint/utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 1993 | debug: 4.4.1 1994 | eslint: 9.27.0 1995 | ts-api-utils: 2.1.0(typescript@5.8.3) 1996 | typescript: 5.8.3 1997 | transitivePeerDependencies: 1998 | - supports-color 1999 | 2000 | '@typescript-eslint/types@8.32.1': {} 2001 | 2002 | '@typescript-eslint/types@8.33.0': {} 2003 | 2004 | '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': 2005 | dependencies: 2006 | '@typescript-eslint/types': 8.32.1 2007 | '@typescript-eslint/visitor-keys': 8.32.1 2008 | debug: 4.4.1 2009 | fast-glob: 3.3.3 2010 | is-glob: 4.0.3 2011 | minimatch: 9.0.5 2012 | semver: 7.7.2 2013 | ts-api-utils: 2.1.0(typescript@5.8.3) 2014 | typescript: 5.8.3 2015 | transitivePeerDependencies: 2016 | - supports-color 2017 | 2018 | '@typescript-eslint/typescript-estree@8.33.0(typescript@5.8.3)': 2019 | dependencies: 2020 | '@typescript-eslint/project-service': 8.33.0(typescript@5.8.3) 2021 | '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.8.3) 2022 | '@typescript-eslint/types': 8.33.0 2023 | '@typescript-eslint/visitor-keys': 8.33.0 2024 | debug: 4.4.1 2025 | fast-glob: 3.3.3 2026 | is-glob: 4.0.3 2027 | minimatch: 9.0.5 2028 | semver: 7.7.2 2029 | ts-api-utils: 2.1.0(typescript@5.8.3) 2030 | typescript: 5.8.3 2031 | transitivePeerDependencies: 2032 | - supports-color 2033 | 2034 | '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': 2035 | dependencies: 2036 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 2037 | '@typescript-eslint/scope-manager': 8.32.1 2038 | '@typescript-eslint/types': 8.32.1 2039 | '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) 2040 | eslint: 9.27.0 2041 | typescript: 5.8.3 2042 | transitivePeerDependencies: 2043 | - supports-color 2044 | 2045 | '@typescript-eslint/utils@8.33.0(eslint@9.27.0)(typescript@5.8.3)': 2046 | dependencies: 2047 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 2048 | '@typescript-eslint/scope-manager': 8.33.0 2049 | '@typescript-eslint/types': 8.33.0 2050 | '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) 2051 | eslint: 9.27.0 2052 | typescript: 5.8.3 2053 | transitivePeerDependencies: 2054 | - supports-color 2055 | 2056 | '@typescript-eslint/visitor-keys@8.32.1': 2057 | dependencies: 2058 | '@typescript-eslint/types': 8.32.1 2059 | eslint-visitor-keys: 4.2.0 2060 | 2061 | '@typescript-eslint/visitor-keys@8.33.0': 2062 | dependencies: 2063 | '@typescript-eslint/types': 8.33.0 2064 | eslint-visitor-keys: 4.2.0 2065 | 2066 | '@ungap/structured-clone@1.3.0': {} 2067 | 2068 | acorn-jsx@5.3.2(acorn@8.14.1): 2069 | dependencies: 2070 | acorn: 8.14.1 2071 | 2072 | acorn-walk@8.3.2: {} 2073 | 2074 | acorn@8.14.0: {} 2075 | 2076 | acorn@8.14.1: {} 2077 | 2078 | ajv@6.12.6: 2079 | dependencies: 2080 | fast-deep-equal: 3.1.3 2081 | fast-json-stable-stringify: 2.1.0 2082 | json-schema-traverse: 0.4.1 2083 | uri-js: 4.4.1 2084 | 2085 | ansi-regex@5.0.1: {} 2086 | 2087 | ansi-styles@4.3.0: 2088 | dependencies: 2089 | color-convert: 2.0.1 2090 | 2091 | argparse@2.0.1: {} 2092 | 2093 | as-table@1.0.55: 2094 | dependencies: 2095 | printable-characters: 1.0.42 2096 | 2097 | balanced-match@1.0.2: {} 2098 | 2099 | blake3-wasm@2.1.5: {} 2100 | 2101 | brace-expansion@1.1.11: 2102 | dependencies: 2103 | balanced-match: 1.0.2 2104 | concat-map: 0.0.1 2105 | 2106 | brace-expansion@2.0.1: 2107 | dependencies: 2108 | balanced-match: 1.0.2 2109 | 2110 | braces@3.0.3: 2111 | dependencies: 2112 | fill-range: 7.1.1 2113 | 2114 | browserslist@4.24.5: 2115 | dependencies: 2116 | caniuse-lite: 1.0.30001718 2117 | electron-to-chromium: 1.5.157 2118 | node-releases: 2.0.19 2119 | update-browserslist-db: 1.1.3(browserslist@4.24.5) 2120 | 2121 | builtin-modules@5.0.0: {} 2122 | 2123 | callsites@3.1.0: {} 2124 | 2125 | caniuse-lite@1.0.30001718: {} 2126 | 2127 | chalk@4.1.2: 2128 | dependencies: 2129 | ansi-styles: 4.3.0 2130 | supports-color: 7.2.0 2131 | 2132 | ci-info@4.2.0: {} 2133 | 2134 | clean-regexp@1.0.0: 2135 | dependencies: 2136 | escape-string-regexp: 1.0.5 2137 | 2138 | color-convert@2.0.1: 2139 | dependencies: 2140 | color-name: 1.1.4 2141 | 2142 | color-name@1.1.4: {} 2143 | 2144 | color-string@1.9.1: 2145 | dependencies: 2146 | color-name: 1.1.4 2147 | simple-swizzle: 0.2.2 2148 | 2149 | color@4.2.3: 2150 | dependencies: 2151 | color-convert: 2.0.1 2152 | color-string: 1.9.1 2153 | 2154 | concat-map@0.0.1: {} 2155 | 2156 | confbox@0.1.8: {} 2157 | 2158 | confbox@0.2.2: {} 2159 | 2160 | cookie@0.7.2: {} 2161 | 2162 | core-js-compat@3.42.0: 2163 | dependencies: 2164 | browserslist: 4.24.5 2165 | 2166 | cross-spawn@7.0.6: 2167 | dependencies: 2168 | path-key: 3.1.1 2169 | shebang-command: 2.0.0 2170 | which: 2.0.2 2171 | 2172 | data-uri-to-buffer@2.0.2: {} 2173 | 2174 | debug@4.4.1: 2175 | dependencies: 2176 | ms: 2.1.3 2177 | 2178 | deep-is@0.1.4: {} 2179 | 2180 | defu@6.1.4: {} 2181 | 2182 | detect-libc@2.0.4: {} 2183 | 2184 | doctrine@3.0.0: 2185 | dependencies: 2186 | esutils: 2.0.3 2187 | 2188 | electron-to-chromium@1.5.157: {} 2189 | 2190 | esbuild@0.25.4: 2191 | optionalDependencies: 2192 | '@esbuild/aix-ppc64': 0.25.4 2193 | '@esbuild/android-arm': 0.25.4 2194 | '@esbuild/android-arm64': 0.25.4 2195 | '@esbuild/android-x64': 0.25.4 2196 | '@esbuild/darwin-arm64': 0.25.4 2197 | '@esbuild/darwin-x64': 0.25.4 2198 | '@esbuild/freebsd-arm64': 0.25.4 2199 | '@esbuild/freebsd-x64': 0.25.4 2200 | '@esbuild/linux-arm': 0.25.4 2201 | '@esbuild/linux-arm64': 0.25.4 2202 | '@esbuild/linux-ia32': 0.25.4 2203 | '@esbuild/linux-loong64': 0.25.4 2204 | '@esbuild/linux-mips64el': 0.25.4 2205 | '@esbuild/linux-ppc64': 0.25.4 2206 | '@esbuild/linux-riscv64': 0.25.4 2207 | '@esbuild/linux-s390x': 0.25.4 2208 | '@esbuild/linux-x64': 0.25.4 2209 | '@esbuild/netbsd-arm64': 0.25.4 2210 | '@esbuild/netbsd-x64': 0.25.4 2211 | '@esbuild/openbsd-arm64': 0.25.4 2212 | '@esbuild/openbsd-x64': 0.25.4 2213 | '@esbuild/sunos-x64': 0.25.4 2214 | '@esbuild/win32-arm64': 0.25.4 2215 | '@esbuild/win32-ia32': 0.25.4 2216 | '@esbuild/win32-x64': 0.25.4 2217 | 2218 | esbuild@0.25.5: 2219 | optionalDependencies: 2220 | '@esbuild/aix-ppc64': 0.25.5 2221 | '@esbuild/android-arm': 0.25.5 2222 | '@esbuild/android-arm64': 0.25.5 2223 | '@esbuild/android-x64': 0.25.5 2224 | '@esbuild/darwin-arm64': 0.25.5 2225 | '@esbuild/darwin-x64': 0.25.5 2226 | '@esbuild/freebsd-arm64': 0.25.5 2227 | '@esbuild/freebsd-x64': 0.25.5 2228 | '@esbuild/linux-arm': 0.25.5 2229 | '@esbuild/linux-arm64': 0.25.5 2230 | '@esbuild/linux-ia32': 0.25.5 2231 | '@esbuild/linux-loong64': 0.25.5 2232 | '@esbuild/linux-mips64el': 0.25.5 2233 | '@esbuild/linux-ppc64': 0.25.5 2234 | '@esbuild/linux-riscv64': 0.25.5 2235 | '@esbuild/linux-s390x': 0.25.5 2236 | '@esbuild/linux-x64': 0.25.5 2237 | '@esbuild/netbsd-arm64': 0.25.5 2238 | '@esbuild/netbsd-x64': 0.25.5 2239 | '@esbuild/openbsd-arm64': 0.25.5 2240 | '@esbuild/openbsd-x64': 0.25.5 2241 | '@esbuild/sunos-x64': 0.25.5 2242 | '@esbuild/win32-arm64': 0.25.5 2243 | '@esbuild/win32-ia32': 0.25.5 2244 | '@esbuild/win32-x64': 0.25.5 2245 | 2246 | escalade@3.2.0: {} 2247 | 2248 | escape-string-regexp@1.0.5: {} 2249 | 2250 | escape-string-regexp@4.0.0: {} 2251 | 2252 | eslint-config-prettier@10.1.5(eslint@9.27.0): 2253 | dependencies: 2254 | eslint: 9.27.0 2255 | 2256 | eslint-plugin-unicorn@59.0.1(eslint@9.27.0): 2257 | dependencies: 2258 | '@babel/helper-validator-identifier': 7.27.1 2259 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 2260 | '@eslint/plugin-kit': 0.2.8 2261 | ci-info: 4.2.0 2262 | clean-regexp: 1.0.0 2263 | core-js-compat: 3.42.0 2264 | eslint: 9.27.0 2265 | esquery: 1.6.0 2266 | find-up-simple: 1.0.1 2267 | globals: 16.1.0 2268 | indent-string: 5.0.0 2269 | is-builtin-module: 5.0.0 2270 | jsesc: 3.1.0 2271 | pluralize: 8.0.0 2272 | regexp-tree: 0.1.27 2273 | regjsparser: 0.12.0 2274 | semver: 7.7.2 2275 | strip-indent: 4.0.0 2276 | 2277 | eslint-scope@7.2.2: 2278 | dependencies: 2279 | esrecurse: 4.3.0 2280 | estraverse: 5.3.0 2281 | 2282 | eslint-scope@8.3.0: 2283 | dependencies: 2284 | esrecurse: 4.3.0 2285 | estraverse: 5.3.0 2286 | 2287 | eslint-visitor-keys@3.4.3: {} 2288 | 2289 | eslint-visitor-keys@4.2.0: {} 2290 | 2291 | eslint@8.57.1: 2292 | dependencies: 2293 | '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) 2294 | '@eslint-community/regexpp': 4.12.1 2295 | '@eslint/eslintrc': 2.1.4 2296 | '@eslint/js': 8.57.1 2297 | '@humanwhocodes/config-array': 0.13.0 2298 | '@humanwhocodes/module-importer': 1.0.1 2299 | '@nodelib/fs.walk': 1.2.8 2300 | '@ungap/structured-clone': 1.3.0 2301 | ajv: 6.12.6 2302 | chalk: 4.1.2 2303 | cross-spawn: 7.0.6 2304 | debug: 4.4.1 2305 | doctrine: 3.0.0 2306 | escape-string-regexp: 4.0.0 2307 | eslint-scope: 7.2.2 2308 | eslint-visitor-keys: 3.4.3 2309 | espree: 9.6.1 2310 | esquery: 1.6.0 2311 | esutils: 2.0.3 2312 | fast-deep-equal: 3.1.3 2313 | file-entry-cache: 6.0.1 2314 | find-up: 5.0.0 2315 | glob-parent: 6.0.2 2316 | globals: 13.24.0 2317 | graphemer: 1.4.0 2318 | ignore: 5.3.2 2319 | imurmurhash: 0.1.4 2320 | is-glob: 4.0.3 2321 | is-path-inside: 3.0.3 2322 | js-yaml: 4.1.0 2323 | json-stable-stringify-without-jsonify: 1.0.1 2324 | levn: 0.4.1 2325 | lodash.merge: 4.6.2 2326 | minimatch: 3.1.2 2327 | natural-compare: 1.4.0 2328 | optionator: 0.9.4 2329 | strip-ansi: 6.0.1 2330 | text-table: 0.2.0 2331 | transitivePeerDependencies: 2332 | - supports-color 2333 | 2334 | eslint@9.27.0: 2335 | dependencies: 2336 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 2337 | '@eslint-community/regexpp': 4.12.1 2338 | '@eslint/config-array': 0.20.0 2339 | '@eslint/config-helpers': 0.2.2 2340 | '@eslint/core': 0.14.0 2341 | '@eslint/eslintrc': 3.3.1 2342 | '@eslint/js': 9.27.0 2343 | '@eslint/plugin-kit': 0.3.1 2344 | '@humanfs/node': 0.16.6 2345 | '@humanwhocodes/module-importer': 1.0.1 2346 | '@humanwhocodes/retry': 0.4.3 2347 | '@types/estree': 1.0.7 2348 | '@types/json-schema': 7.0.15 2349 | ajv: 6.12.6 2350 | chalk: 4.1.2 2351 | cross-spawn: 7.0.6 2352 | debug: 4.4.1 2353 | escape-string-regexp: 4.0.0 2354 | eslint-scope: 8.3.0 2355 | eslint-visitor-keys: 4.2.0 2356 | espree: 10.3.0 2357 | esquery: 1.6.0 2358 | esutils: 2.0.3 2359 | fast-deep-equal: 3.1.3 2360 | file-entry-cache: 8.0.0 2361 | find-up: 5.0.0 2362 | glob-parent: 6.0.2 2363 | ignore: 5.3.2 2364 | imurmurhash: 0.1.4 2365 | is-glob: 4.0.3 2366 | json-stable-stringify-without-jsonify: 1.0.1 2367 | lodash.merge: 4.6.2 2368 | minimatch: 3.1.2 2369 | natural-compare: 1.4.0 2370 | optionator: 0.9.4 2371 | transitivePeerDependencies: 2372 | - supports-color 2373 | 2374 | espree@10.3.0: 2375 | dependencies: 2376 | acorn: 8.14.1 2377 | acorn-jsx: 5.3.2(acorn@8.14.1) 2378 | eslint-visitor-keys: 4.2.0 2379 | 2380 | espree@9.6.1: 2381 | dependencies: 2382 | acorn: 8.14.1 2383 | acorn-jsx: 5.3.2(acorn@8.14.1) 2384 | eslint-visitor-keys: 3.4.3 2385 | 2386 | esquery@1.6.0: 2387 | dependencies: 2388 | estraverse: 5.3.0 2389 | 2390 | esrecurse@4.3.0: 2391 | dependencies: 2392 | estraverse: 5.3.0 2393 | 2394 | estraverse@5.3.0: {} 2395 | 2396 | esutils@2.0.3: {} 2397 | 2398 | exit-hook@2.2.1: {} 2399 | 2400 | exsolve@1.0.5: {} 2401 | 2402 | fast-deep-equal@3.1.3: {} 2403 | 2404 | fast-glob@3.3.3: 2405 | dependencies: 2406 | '@nodelib/fs.stat': 2.0.5 2407 | '@nodelib/fs.walk': 1.2.8 2408 | glob-parent: 5.1.2 2409 | merge2: 1.4.1 2410 | micromatch: 4.0.8 2411 | 2412 | fast-json-stable-stringify@2.1.0: {} 2413 | 2414 | fast-levenshtein@2.0.6: {} 2415 | 2416 | fastq@1.19.1: 2417 | dependencies: 2418 | reusify: 1.1.0 2419 | 2420 | file-entry-cache@6.0.1: 2421 | dependencies: 2422 | flat-cache: 3.2.0 2423 | 2424 | file-entry-cache@8.0.0: 2425 | dependencies: 2426 | flat-cache: 4.0.1 2427 | 2428 | fill-range@7.1.1: 2429 | dependencies: 2430 | to-regex-range: 5.0.1 2431 | 2432 | find-up-simple@1.0.1: {} 2433 | 2434 | find-up@5.0.0: 2435 | dependencies: 2436 | locate-path: 6.0.0 2437 | path-exists: 4.0.0 2438 | 2439 | flat-cache@3.2.0: 2440 | dependencies: 2441 | flatted: 3.3.3 2442 | keyv: 4.5.4 2443 | rimraf: 3.0.2 2444 | 2445 | flat-cache@4.0.1: 2446 | dependencies: 2447 | flatted: 3.3.3 2448 | keyv: 4.5.4 2449 | 2450 | flatted@3.3.3: {} 2451 | 2452 | fs.realpath@1.0.0: {} 2453 | 2454 | fsevents@2.3.3: 2455 | optional: true 2456 | 2457 | get-source@2.0.12: 2458 | dependencies: 2459 | data-uri-to-buffer: 2.0.2 2460 | source-map: 0.6.1 2461 | 2462 | get-tsconfig@4.10.1: 2463 | dependencies: 2464 | resolve-pkg-maps: 1.0.0 2465 | 2466 | glob-parent@5.1.2: 2467 | dependencies: 2468 | is-glob: 4.0.3 2469 | 2470 | glob-parent@6.0.2: 2471 | dependencies: 2472 | is-glob: 4.0.3 2473 | 2474 | glob-to-regexp@0.4.1: {} 2475 | 2476 | glob@7.2.3: 2477 | dependencies: 2478 | fs.realpath: 1.0.0 2479 | inflight: 1.0.6 2480 | inherits: 2.0.4 2481 | minimatch: 3.1.2 2482 | once: 1.4.0 2483 | path-is-absolute: 1.0.1 2484 | 2485 | globals@13.24.0: 2486 | dependencies: 2487 | type-fest: 0.20.2 2488 | 2489 | globals@14.0.0: {} 2490 | 2491 | globals@16.1.0: {} 2492 | 2493 | graphemer@1.4.0: {} 2494 | 2495 | has-flag@4.0.0: {} 2496 | 2497 | hono@4.7.10: {} 2498 | 2499 | ignore@5.3.2: {} 2500 | 2501 | ignore@7.0.4: {} 2502 | 2503 | import-fresh@3.3.1: 2504 | dependencies: 2505 | parent-module: 1.0.1 2506 | resolve-from: 4.0.0 2507 | 2508 | imurmurhash@0.1.4: {} 2509 | 2510 | indent-string@5.0.0: {} 2511 | 2512 | inflight@1.0.6: 2513 | dependencies: 2514 | once: 1.4.0 2515 | wrappy: 1.0.2 2516 | 2517 | inherits@2.0.4: {} 2518 | 2519 | is-arrayish@0.3.2: {} 2520 | 2521 | is-builtin-module@5.0.0: 2522 | dependencies: 2523 | builtin-modules: 5.0.0 2524 | 2525 | is-extglob@2.1.1: {} 2526 | 2527 | is-glob@4.0.3: 2528 | dependencies: 2529 | is-extglob: 2.1.1 2530 | 2531 | is-number@7.0.0: {} 2532 | 2533 | is-path-inside@3.0.3: {} 2534 | 2535 | isexe@2.0.0: {} 2536 | 2537 | js-yaml@4.1.0: 2538 | dependencies: 2539 | argparse: 2.0.1 2540 | 2541 | jschardet@3.1.4: {} 2542 | 2543 | jsesc@3.0.2: {} 2544 | 2545 | jsesc@3.1.0: {} 2546 | 2547 | json-buffer@3.0.1: {} 2548 | 2549 | json-schema-traverse@0.4.1: {} 2550 | 2551 | json-stable-stringify-without-jsonify@1.0.1: {} 2552 | 2553 | keyv@4.5.4: 2554 | dependencies: 2555 | json-buffer: 3.0.1 2556 | 2557 | levn@0.4.1: 2558 | dependencies: 2559 | prelude-ls: 1.2.1 2560 | type-check: 0.4.0 2561 | 2562 | local-pkg@1.1.1: 2563 | dependencies: 2564 | mlly: 1.7.4 2565 | pkg-types: 2.1.0 2566 | quansync: 0.2.10 2567 | 2568 | locate-path@6.0.0: 2569 | dependencies: 2570 | p-locate: 5.0.0 2571 | 2572 | lodash.merge@4.6.2: {} 2573 | 2574 | lodash@4.17.21: {} 2575 | 2576 | merge2@1.4.1: {} 2577 | 2578 | micromatch@4.0.8: 2579 | dependencies: 2580 | braces: 3.0.3 2581 | picomatch: 2.3.1 2582 | 2583 | mime@3.0.0: {} 2584 | 2585 | min-indent@1.0.1: {} 2586 | 2587 | miniflare@4.20250523.0: 2588 | dependencies: 2589 | '@cspotcode/source-map-support': 0.8.1 2590 | acorn: 8.14.0 2591 | acorn-walk: 8.3.2 2592 | exit-hook: 2.2.1 2593 | glob-to-regexp: 0.4.1 2594 | sharp: 0.33.5 2595 | stoppable: 1.1.0 2596 | undici: 5.29.0 2597 | workerd: 1.20250523.0 2598 | ws: 8.18.0 2599 | youch: 3.3.4 2600 | zod: 3.22.3 2601 | transitivePeerDependencies: 2602 | - bufferutil 2603 | - utf-8-validate 2604 | 2605 | minimatch@3.1.2: 2606 | dependencies: 2607 | brace-expansion: 1.1.11 2608 | 2609 | minimatch@9.0.5: 2610 | dependencies: 2611 | brace-expansion: 2.0.1 2612 | 2613 | mlly@1.7.4: 2614 | dependencies: 2615 | acorn: 8.14.1 2616 | pathe: 2.0.3 2617 | pkg-types: 1.3.1 2618 | ufo: 1.6.1 2619 | 2620 | ms@2.1.3: {} 2621 | 2622 | mustache@4.2.0: {} 2623 | 2624 | natural-compare@1.4.0: {} 2625 | 2626 | node-releases@2.0.19: {} 2627 | 2628 | ohash@2.0.11: {} 2629 | 2630 | once@1.4.0: 2631 | dependencies: 2632 | wrappy: 1.0.2 2633 | 2634 | optionator@0.9.4: 2635 | dependencies: 2636 | deep-is: 0.1.4 2637 | fast-levenshtein: 2.0.6 2638 | levn: 0.4.1 2639 | prelude-ls: 1.2.1 2640 | type-check: 0.4.0 2641 | word-wrap: 1.2.5 2642 | 2643 | p-limit@3.1.0: 2644 | dependencies: 2645 | yocto-queue: 0.1.0 2646 | 2647 | p-locate@5.0.0: 2648 | dependencies: 2649 | p-limit: 3.1.0 2650 | 2651 | parent-module@1.0.1: 2652 | dependencies: 2653 | callsites: 3.1.0 2654 | 2655 | path-exists@4.0.0: {} 2656 | 2657 | path-is-absolute@1.0.1: {} 2658 | 2659 | path-key@3.1.1: {} 2660 | 2661 | path-to-regexp@6.3.0: {} 2662 | 2663 | pathe@2.0.3: {} 2664 | 2665 | picocolors@1.1.1: {} 2666 | 2667 | picomatch@2.3.1: {} 2668 | 2669 | pkg-types@1.3.1: 2670 | dependencies: 2671 | confbox: 0.1.8 2672 | mlly: 1.7.4 2673 | pathe: 2.0.3 2674 | 2675 | pkg-types@2.1.0: 2676 | dependencies: 2677 | confbox: 0.2.2 2678 | exsolve: 1.0.5 2679 | pathe: 2.0.3 2680 | 2681 | pluralize@8.0.0: {} 2682 | 2683 | prelude-ls@1.2.1: {} 2684 | 2685 | printable-characters@1.0.42: {} 2686 | 2687 | punycode@2.3.1: {} 2688 | 2689 | quansync@0.2.10: {} 2690 | 2691 | queue-microtask@1.2.3: {} 2692 | 2693 | regexp-tree@0.1.27: {} 2694 | 2695 | regjsparser@0.12.0: 2696 | dependencies: 2697 | jsesc: 3.0.2 2698 | 2699 | resolve-from@4.0.0: {} 2700 | 2701 | resolve-pkg-maps@1.0.0: {} 2702 | 2703 | reusify@1.1.0: {} 2704 | 2705 | rimraf@3.0.2: 2706 | dependencies: 2707 | glob: 7.2.3 2708 | 2709 | run-parallel@1.2.0: 2710 | dependencies: 2711 | queue-microtask: 1.2.3 2712 | 2713 | semver@7.7.2: {} 2714 | 2715 | sharp@0.33.5: 2716 | dependencies: 2717 | color: 4.2.3 2718 | detect-libc: 2.0.4 2719 | semver: 7.7.2 2720 | optionalDependencies: 2721 | '@img/sharp-darwin-arm64': 0.33.5 2722 | '@img/sharp-darwin-x64': 0.33.5 2723 | '@img/sharp-libvips-darwin-arm64': 1.0.4 2724 | '@img/sharp-libvips-darwin-x64': 1.0.4 2725 | '@img/sharp-libvips-linux-arm': 1.0.5 2726 | '@img/sharp-libvips-linux-arm64': 1.0.4 2727 | '@img/sharp-libvips-linux-s390x': 1.0.4 2728 | '@img/sharp-libvips-linux-x64': 1.0.4 2729 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2730 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2731 | '@img/sharp-linux-arm': 0.33.5 2732 | '@img/sharp-linux-arm64': 0.33.5 2733 | '@img/sharp-linux-s390x': 0.33.5 2734 | '@img/sharp-linux-x64': 0.33.5 2735 | '@img/sharp-linuxmusl-arm64': 0.33.5 2736 | '@img/sharp-linuxmusl-x64': 0.33.5 2737 | '@img/sharp-wasm32': 0.33.5 2738 | '@img/sharp-win32-ia32': 0.33.5 2739 | '@img/sharp-win32-x64': 0.33.5 2740 | 2741 | shebang-command@2.0.0: 2742 | dependencies: 2743 | shebang-regex: 3.0.0 2744 | 2745 | shebang-regex@3.0.0: {} 2746 | 2747 | simple-swizzle@0.2.2: 2748 | dependencies: 2749 | is-arrayish: 0.3.2 2750 | 2751 | source-map@0.6.1: {} 2752 | 2753 | stacktracey@2.1.8: 2754 | dependencies: 2755 | as-table: 1.0.55 2756 | get-source: 2.0.12 2757 | 2758 | stoppable@1.1.0: {} 2759 | 2760 | strip-ansi@6.0.1: 2761 | dependencies: 2762 | ansi-regex: 5.0.1 2763 | 2764 | strip-indent@4.0.0: 2765 | dependencies: 2766 | min-indent: 1.0.1 2767 | 2768 | strip-json-comments@3.1.1: {} 2769 | 2770 | supports-color@7.2.0: 2771 | dependencies: 2772 | has-flag: 4.0.0 2773 | 2774 | text-table@0.2.0: {} 2775 | 2776 | tinyrainbow@2.0.0: {} 2777 | 2778 | to-regex-range@5.0.1: 2779 | dependencies: 2780 | is-number: 7.0.0 2781 | 2782 | ts-api-utils@2.1.0(typescript@5.8.3): 2783 | dependencies: 2784 | typescript: 5.8.3 2785 | 2786 | tslib@2.8.1: 2787 | optional: true 2788 | 2789 | tsx@4.19.4: 2790 | dependencies: 2791 | esbuild: 0.25.5 2792 | get-tsconfig: 4.10.1 2793 | optionalDependencies: 2794 | fsevents: 2.3.3 2795 | 2796 | type-check@0.4.0: 2797 | dependencies: 2798 | prelude-ls: 1.2.1 2799 | 2800 | type-fest@0.20.2: {} 2801 | 2802 | typescript-eslint@8.33.0(eslint@9.27.0)(typescript@5.8.3): 2803 | dependencies: 2804 | '@typescript-eslint/eslint-plugin': 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) 2805 | '@typescript-eslint/parser': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 2806 | '@typescript-eslint/utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) 2807 | eslint: 9.27.0 2808 | typescript: 5.8.3 2809 | transitivePeerDependencies: 2810 | - supports-color 2811 | 2812 | typescript@5.8.3: {} 2813 | 2814 | ufo@1.6.1: {} 2815 | 2816 | undici@5.29.0: 2817 | dependencies: 2818 | '@fastify/busboy': 2.1.1 2819 | 2820 | unenv@2.0.0-rc.17: 2821 | dependencies: 2822 | defu: 6.1.4 2823 | exsolve: 1.0.5 2824 | ohash: 2.0.11 2825 | pathe: 2.0.3 2826 | ufo: 1.6.1 2827 | 2828 | update-browserslist-db@1.1.3(browserslist@4.24.5): 2829 | dependencies: 2830 | browserslist: 4.24.5 2831 | escalade: 3.2.0 2832 | picocolors: 1.1.1 2833 | 2834 | uri-js@4.4.1: 2835 | dependencies: 2836 | punycode: 2.3.1 2837 | 2838 | utf8@3.0.0: {} 2839 | 2840 | which@2.0.2: 2841 | dependencies: 2842 | isexe: 2.0.0 2843 | 2844 | word-wrap@1.2.5: {} 2845 | 2846 | workerd@1.20250523.0: 2847 | optionalDependencies: 2848 | '@cloudflare/workerd-darwin-64': 1.20250523.0 2849 | '@cloudflare/workerd-darwin-arm64': 1.20250523.0 2850 | '@cloudflare/workerd-linux-64': 1.20250523.0 2851 | '@cloudflare/workerd-linux-arm64': 1.20250523.0 2852 | '@cloudflare/workerd-windows-64': 1.20250523.0 2853 | 2854 | wrangler@4.17.0(@cloudflare/workers-types@4.20250528.0): 2855 | dependencies: 2856 | '@cloudflare/kv-asset-handler': 0.4.0 2857 | '@cloudflare/unenv-preset': 2.3.2(unenv@2.0.0-rc.17)(workerd@1.20250523.0) 2858 | blake3-wasm: 2.1.5 2859 | esbuild: 0.25.4 2860 | miniflare: 4.20250523.0 2861 | path-to-regexp: 6.3.0 2862 | unenv: 2.0.0-rc.17 2863 | workerd: 1.20250523.0 2864 | optionalDependencies: 2865 | '@cloudflare/workers-types': 4.20250528.0 2866 | fsevents: 2.3.3 2867 | transitivePeerDependencies: 2868 | - bufferutil 2869 | - utf-8-validate 2870 | 2871 | wrappy@1.0.2: {} 2872 | 2873 | ws@8.18.0: {} 2874 | 2875 | yocto-queue@0.1.0: {} 2876 | 2877 | youch@3.3.4: 2878 | dependencies: 2879 | cookie: 0.7.2 2880 | mustache: 4.2.0 2881 | stacktracey: 2.1.8 2882 | 2883 | zod@3.22.3: {} 2884 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | let 2 | pkgs = import { 3 | config = { }; 4 | overlays = [ ]; 5 | }; 6 | in 7 | 8 | pkgs.mkShellNoCC { 9 | packages = with pkgs; [ 10 | nodejs 11 | corepack 12 | typescript-language-server 13 | 14 | nrr 15 | wrangler 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /src/esbuild.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.txt' { 2 | const src_default: string; 3 | export default src_default; 4 | } 5 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Hono } from 'hono'; 2 | 3 | import { logger } from 'hono/logger'; 4 | import { secureHeaders } from 'hono/secure-headers'; 5 | 6 | import index from './index.txt'; 7 | 8 | const app = new Hono(); 9 | app.use(logger()); 10 | app.use(secureHeaders()); 11 | 12 | interface NixosSearchParams { 13 | type: 'packages' | 'options'; 14 | name: string; 15 | channel?: string; 16 | } 17 | 18 | const makeNixosSearch = ({ type, name, channel }: NixosSearchParams) => { 19 | const base = new URL(`https://search.nixos.org/${encodeURIComponent(type)}`); 20 | base.searchParams.set('channel', channel ?? 'unstable'); 21 | base.searchParams.set('show', name); 22 | 23 | return base.toString(); 24 | }; 25 | 26 | const makeRedirect = (dest: string) => { 27 | return new Response(`Redirecting to ${dest}`, { 28 | status: 302, 29 | headers: { 'content-type': 'text/plain; charset=utf-8', location: dest }, 30 | }); 31 | }; 32 | 33 | const makeNixosRedirect = (opts: NixosSearchParams) => makeRedirect(makeNixosSearch(opts)); 34 | 35 | app.get( 36 | '/', 37 | () => 38 | new Response(index, { 39 | headers: { 'content-type': 'text/plain; charset=utf-8' }, 40 | }) 41 | ); 42 | 43 | app.get('/pr/:id', (c) => 44 | makeRedirect(`https://github.com/NixOS/nixpkgs/pull/${encodeURIComponent(c.req.param('id'))}`) 45 | ); 46 | app.get('/pull/:id', (c) => 47 | makeRedirect(`https://github.com/NixOS/nixpkgs/pull/${encodeURIComponent(c.req.param('id'))}`) 48 | ); 49 | 50 | app.get('/docs', () => makeRedirect(`https://ryantm.github.io/nixpkgs/`)); 51 | app.get('/docs/:rest{.+}', (c) => makeRedirect(`https://ryantm.github.io/nixpkgs/${c.req.param('rest')}`)); 52 | 53 | app.get('/option/:opt', (c) => 54 | makeNixosRedirect({ 55 | type: 'options', 56 | name: c.req.param('opt'), 57 | }) 58 | ); 59 | 60 | app.get('/option/:channel/:opt', (c) => 61 | makeNixosRedirect({ 62 | type: 'options', 63 | name: c.req.param('opt'), 64 | channel: c.req.param('channel'), 65 | }) 66 | ); 67 | 68 | app.get('/:pkg', (c) => 69 | makeNixosRedirect({ 70 | type: 'packages', 71 | name: c.req.param('pkg'), 72 | }) 73 | ); 74 | 75 | app.get('/channel/:channel', (c) => { 76 | const { channel } = c.req.param(); 77 | return makeRedirect(`https://channels.nixos.org/${channel}/nixexprs.tar.xz`); 78 | }); 79 | 80 | app.get('/:channel/:pkg', (c) => 81 | makeNixosRedirect({ 82 | type: 'packages', 83 | name: c.req.param('pkg'), 84 | channel: c.req.param('channel'), 85 | }) 86 | ); 87 | 88 | export default app; 89 | -------------------------------------------------------------------------------- /src/index.txt: -------------------------------------------------------------------------------- 1 | nixpkgs.dev 2 | =========== 3 | 4 | This is a convenient link shortener for Nixpkgs packages and NixOS 5 | options on search.nixos.org, and Nix channels on channels.nixos.org. 6 | 7 | 8 | Routes 9 | ------ 10 | 11 | /pr/:id 12 | /pull/:id 13 | => https://github.com/NixOS/nixpkgs/pull/:id 14 | 15 | /docs 16 | => https://ryantm.github.io/nixpkgs/ 17 | /docs/:rest{.+} 18 | => https://ryantm.github.io/nixpkgs/:rest 19 | 20 | /option/:opt 21 | => https://search.nixos.org/options?show=:opt&channel=unstable 22 | /option/:channel/:opt 23 | => https://search.nixos.org/options?show=:opt&channel=:channel 24 | 25 | /channel/:channel 26 | => https://channels.nixos.org/:channel/nixexprs.tar.xz 27 | 28 | /:pkg 29 | => https://search.nixos.org/packages?show=:pkg&channel=unstable 30 | /:channel/:pkg 31 | => https://search.nixos.org/packages?show=:pkg&channel=:channel 32 | 33 | 34 | GitHub 35 | ------ 36 | 37 | https://github.com/ryanccn/nixpkgs-dev 38 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "skipLibCheck": true, 5 | "target": "es2022", 6 | "allowJs": true, 7 | "resolveJsonModule": true, 8 | "moduleDetection": "force", 9 | "isolatedModules": true, 10 | "verbatimModuleSyntax": true, 11 | "strict": true, 12 | "noUncheckedIndexedAccess": true, 13 | "noImplicitOverride": true, 14 | "module": "preserve", 15 | "noEmit": true, 16 | "lib": ["es2022"], 17 | "types": ["@cloudflare/workers-types"] 18 | }, 19 | "include": ["**/*.js", "**/*.ts"], 20 | "exclude": ["node_modules/*", "**/node_modules/*"] 21 | } 22 | -------------------------------------------------------------------------------- /wrangler.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nixpkgs-dev", 3 | "main": "dist/index.js", 4 | "compatibility_date": "2025-05-05", 5 | 6 | "workers_dev": false, 7 | "send_metrics": false, 8 | "no_bundle": true, 9 | 10 | "build": { 11 | "command": "pnpm run build" 12 | } 13 | } 14 | --------------------------------------------------------------------------------