├── LICENSE ├── README.md ├── fxmanifest.lua ├── lua ├── client.lua ├── server.lua └── trackerlist.lua └── web ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── build ├── assets │ ├── index-9FAKevTS.css │ └── index-iyCNvIaY.js └── index.html ├── index.html ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── src ├── App.svelte ├── app.css ├── lib │ └── TrackerBoard.svelte ├── main.ts ├── store │ └── boardStore.ts ├── utils │ ├── ReceiveNUI.ts │ └── SendNUI.ts └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 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 General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚧 um-error-tracker 2 | Most of you are missing errors due to too many stream files at server startup and sometimes confused what exactly is not working, so I made a small tool that monitors the (server-side) console, it takes the entire console from the time the server is started and monitors it instantly 3 | 4 | ## Usage 5 | * first download from [here](https://github.com/alp1x/um-error-tracker/releases/latest) **[not source!]** 6 | * ``server.cfg > ensure um-error-tracker`` 7 | * command: ``/errortracker`` 8 | 9 | ## Development 10 | ``git clone https://github.com/alp1x/um-error-tracker`` 11 | 12 | ``cd um-error-tracker`` 13 | 14 | ``cd web`` 15 | 16 | ``pnpm i`` 17 | 18 | ``pnpm run build --watch`` 19 | 20 | 21 | 22 | ## Requirements 23 | [ox_lib](https://github.com/overextended/ox_lib/releases/latest) 24 | -------------------------------------------------------------------------------- /fxmanifest.lua: -------------------------------------------------------------------------------- 1 | fx_version 'cerulean' 2 | game 'gta5' 3 | lua54 'yes' 4 | 5 | name "um-error-tracker" 6 | description "um-error-tracker" 7 | author "uyuyorum {um}" 8 | version "1.0.0" 9 | 10 | shared_scripts { 11 | '@ox_lib/init.lua', 12 | } 13 | 14 | client_scripts { 15 | 'lua/trackerlist.lua', 16 | 'lua/client.lua' 17 | } 18 | 19 | server_script 'lua/server.lua' 20 | 21 | ui_page 'web/build/index.html' 22 | 23 | files { 24 | 'web/build/**' 25 | } -------------------------------------------------------------------------------- /lua/client.lua: -------------------------------------------------------------------------------- 1 | local processedLines = {} 2 | local nuiReady = false 3 | 4 | -- The `setNuiFocus` function is a Lua function that takes a boolean parameter `bool`. It calls the 5 | -- `SetNuiFocus` function with two boolean arguments `bool`. The purpose of this function is to set the 6 | -- NUI (Native UI) focus to either enable or disable user interaction with the NUI elements. 7 | local function setNuiFocus(bool) 8 | SetNuiFocus(bool, bool) 9 | end 10 | 11 | -- The `addConsoleTableData` function is responsible for processing the console buffer and generating a 12 | -- table of tracked messages based on certain criteria. 13 | local function addConsoleTableData() 14 | local consoleBuffer = lib.callback.await('um-admin-tracker:server:getConsoleBuffer', false) 15 | local trackerTable = {} 16 | 17 | for line in consoleBuffer:gmatch("([^\n]+)") do 18 | if not processedLines[line] then 19 | for category, details in pairs(Tracker_list_code) do 20 | local prefixes = type(details.prefix) == "table" and details.prefix or {details.prefix} 21 | 22 | local colorMatch = string.find(line, "%" .. details.color) 23 | local prefixMatch = false 24 | for _, prefix in ipairs(prefixes) do 25 | if string.find(line, prefix) then 26 | prefixMatch = true 27 | break 28 | end 29 | end 30 | 31 | if colorMatch and prefixMatch then 32 | trackerTable[category] = trackerTable[category] or {} 33 | local messageList = trackerTable[category] 34 | 35 | messageList[#messageList + 1] = { 36 | id = category..'-'..math.random(1, 999999), 37 | line = line 38 | } 39 | processedLines[line] = true 40 | break 41 | end 42 | end 43 | end 44 | end 45 | 46 | Wait(1000) 47 | SendNUIMessage({type = 'updateTrackerTable', data = trackerTable}) 48 | end 49 | 50 | 51 | -- The `RegisterCommand('errortracker', function() ... end)` function is registering a command in Lua. 52 | -- When the command "errortracker" is executed, the function inside the `RegisterCommand` is called. 53 | RegisterCommand('errortracker', function() 54 | if not nuiReady then 55 | return print('NUI is not ready yet') 56 | end 57 | setNuiFocus(true) 58 | SendNUIMessage({type = 'openTracker'}) 59 | addConsoleTableData() 60 | end) 61 | 62 | -- The `RegisterNUICallback('updateTrackerTable', function(_, cb) ... end)` function is registering a 63 | -- callback in Lua for the NUI (Native UI) event with the name 'updateTrackerTable'. 64 | RegisterNUICallback('updateTrackerTable', function(_, cb) 65 | addConsoleTableData() 66 | cb('ok' or 1) 67 | end) 68 | 69 | -- The `RegisterNUICallback('trackerNUIReady', function(_, cb) ... end)` function is registering a 70 | -- callback in Lua for the NUI (Native UI) event with the name 'trackerNUIReady'. 71 | RegisterNUICallback('trackerNUIReady', function(_, cb) 72 | nuiReady = true 73 | cb('ok' or 1) 74 | end) 75 | 76 | -- The `RegisterNUICallback('closeTracker', function(_, cb) ... end)` function is registering a 77 | -- callback in Lua for the NUI (Native UI) event with the name 'closeTracker'. 78 | RegisterNUICallback('closeTracker', function(_, cb) 79 | setNuiFocus(false) 80 | cb('ok' or 1) 81 | end) -------------------------------------------------------------------------------- /lua/server.lua: -------------------------------------------------------------------------------- 1 | -- The code is registering a callback function with the name 2 | -- 'um-admin-tracker:server:getConsoleBuffer'. When this callback is triggered, it will execute the 3 | -- provided function, which calls the function GetConsoleBuffer() and returns its result. 4 | lib.callback.register('um-admin-tracker:server:getConsoleBuffer', function() 5 | return GetConsoleBuffer() --@see https://docs.fivem.net/natives/?_0xE57429FA 6 | end) 7 | 8 | 9 | -- The code `lib.versionCheck('overextended/ox_lib')` is checking the version of the library-- 10 | -- 'overextended/ox_lib'. It is likely a function provided by the library that allows you to check if 11 | -- you have the latest version installed. 12 | lib.versionCheck('alp1x/um-error-tracker') 13 | -------------------------------------------------------------------------------- /lua/trackerlist.lua: -------------------------------------------------------------------------------- 1 | --The code is creating a Lua table called `Tracker_list_code` that contains three sub-tables: 2 | -- `errors`, `warnings`, and `updates`. Each sub-table has two key-value pairs. The keys are `color` 3 | -- and `prefix`, and the values are strings. 4 | Tracker_list_code = { 5 | ['errors'] = { 6 | color = '^1', 7 | prefix = 'SCRIPT ERROR:', 8 | }, 9 | ['warnings'] = { 10 | color = '^3', 11 | prefix = {'Couldn\'t', 'Warning:', 'duplicate'}, 12 | }, 13 | ['updates'] = { 14 | color = '^3', 15 | prefix = 'update', 16 | }, 17 | ['fxmanifest'] = { 18 | color = '^3', 19 | prefix = '__resource.lua', 20 | }, 21 | } -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /web/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["svelte.svelte-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # Svelte + TS + Vite 2 | 3 | This template should help get you started developing with Svelte and TypeScript in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 | 9 | ## Need an official Svelte framework? 10 | 11 | Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 | 13 | ## Technical considerations 14 | 15 | **Why use this over SvelteKit?** 16 | 17 | - It brings its own routing solution which might not be preferable for some users. 18 | - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 | 20 | This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 | 22 | Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 | 24 | **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 | 26 | Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 | 28 | **Why include `.vscode/extensions.json`?** 29 | 30 | Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 | 32 | **Why enable `allowJs` in the TS template?** 33 | 34 | While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. 35 | 36 | **Why is HMR not preserving my local component state?** 37 | 38 | HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 | 40 | If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 41 | 42 | ```ts 43 | // store.ts 44 | // An extremely simple external store 45 | import { writable } from 'svelte/store' 46 | export default writable(0) 47 | ``` 48 | -------------------------------------------------------------------------------- /web/build/assets/index-9FAKevTS.css: -------------------------------------------------------------------------------- 1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.fixed{position:fixed}.mb-3{margin-bottom:.75rem}.mt-2{margin-top:.5rem}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.h-2{height:.5rem}.h-screen{height:100vh}.w-2{width:.5rem}.cursor-pointer{cursor:pointer}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-5{gap:1.25rem}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;-moz-user-select:none;user-select:none;--errors: #c35555;--warnings: #d9a13b;--updates: #1fa989;--fixed: #46a943;--fxmanifest: #b3b3b3;--inprogress: #a93795 }.bg-color{background-color:#2a2b2f}.box{background-color:#24262c;width:22rem;height:17rem}.card-color{background-color:#32353d}.column-content::-webkit-scrollbar{display:none}.column-content{height:10rem;overflow-y:scroll}.errors-class{color:var(--errors)}.warnings-class{color:var(--warnings)}.updates-class{color:var(--updates)}.fixed-class{color:var(--fixed)}.fxmanifest-class{color:var(--fxmanifest)}.inprogress-class{color:var(--inprogress)}.errors-bg{background-color:var(--errors)}.warnings-bg{background-color:var(--warnings)}.updates-bg{background-color:var(--updates)}.fixed-bg{background-color:var(--fixed)}.fxmanifest-bg{background-color:var(--fxmanifest)}.inprogress-bg{background-color:var(--inprogress)} 2 | -------------------------------------------------------------------------------- /web/build/assets/index-iyCNvIaY.js: -------------------------------------------------------------------------------- 1 | var Kn=Object.defineProperty;var Xn=(e,t,n)=>t in e?Kn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ft=(e,t,n)=>(Xn(e,typeof t!="symbol"?t+"":t,n),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function x(){}const Jn=e=>e;function cn(e){return e()}function Gt(){return Object.create(null)}function fe(e){e.forEach(cn)}function $e(e){return typeof e=="function"}function xt(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Qn(e){return Object.keys(e).length===0}function er(e,...t){if(e==null){for(const r of t)r(void 0);return x}const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function tr(e,t,n){e.$$.on_destroy.push(er(t,n))}function nr(e){return e&&$e(e.destroy)?e.destroy:x}const dn=typeof window<"u";let rr=dn?()=>window.performance.now():()=>Date.now(),St=dn?e=>requestAnimationFrame(e):x;const ve=new Set;function fn(e){ve.forEach(t=>{t.c(e)||(ve.delete(t),t.f())}),ve.size!==0&&St(fn)}function ir(e){let t;return ve.size===0&&St(fn),{promise:new Promise(n=>{ve.add(t={c:e,f:n})}),abort(){ve.delete(t)}}}function T(e,t){e.appendChild(t)}function gn(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t&&t.host?t:e.ownerDocument}function or(e){const t=L("style");return t.textContent="/* empty */",ar(gn(e),t),t.sheet}function ar(e,t){return T(e.head||e,t),t.sheet}function J(e,t,n){e.insertBefore(t,n||null)}function H(e){e.parentNode&&e.parentNode.removeChild(e)}function L(e){return document.createElement(e)}function Se(e){return document.createTextNode(e)}function le(){return Se(" ")}function rt(){return Se("")}function mt(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}function $(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function sr(e){return Array.from(e.childNodes)}function ht(e,t){t=""+t,e.data!==t&&(e.data=t)}function lr(e,t,n,r){n==null?e.style.removeProperty(t):e.style.setProperty(t,n,r?"important":"")}const He=new Map;let Ye=0;function ur(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}function cr(e,t){const n={stylesheet:or(t),rules:{}};return He.set(e,n),n}function dr(e,t,n,r,i,o,a,s=0){const l=16.666/r;let d=`{ 2 | `;for(let h=0;h<=1;h+=l){const v=t+(n-t)*o(h);d+=h*100+`%{${a(v,1-v)}} 3 | `}const u=d+`100% {${a(n,1-n)}} 4 | }`,g=`__svelte_${ur(u)}_${s}`,c=gn(e),{stylesheet:f,rules:p}=He.get(c)||cr(c,e);p[g]||(p[g]=!0,f.insertRule(`@keyframes ${g} ${u}`,f.cssRules.length));const m=e.style.animation||"";return e.style.animation=`${m?`${m}, `:""}${g} ${r}ms linear ${i}ms 1 both`,Ye+=1,g}function fr(e,t){const n=(e.style.animation||"").split(", "),r=n.filter(t?o=>o.indexOf(t)<0:o=>o.indexOf("__svelte")===-1),i=n.length-r.length;i&&(e.style.animation=r.join(", "),Ye-=i,Ye||gr())}function gr(){St(()=>{Ye||(He.forEach(e=>{const{ownerNode:t}=e.stylesheet;t&&H(t)}),He.clear())})}function pn(e,t,n,r){if(!t)return x;const i=e.getBoundingClientRect();if(t.left===i.left&&t.right===i.right&&t.top===i.top&&t.bottom===i.bottom)return x;const{delay:o=0,duration:a=300,easing:s=Jn,start:l=rr()+o,end:d=l+a,tick:u=x,css:g}=n(e,{from:t,to:i},r);let c=!0,f=!1,p;function m(){g&&(p=dr(e,0,1,a,o,s,g)),o||(f=!0)}function h(){g&&fr(e,p),c=!1}return ir(v=>{if(!f&&v>=l&&(f=!0),f&&v>=d&&(u(1,0),h()),!c)return!1;if(f){const y=v-l,b=0+1*s(y/a);u(b,1-b)}return!0}),m(),u(0,1),h}function mn(e){const t=getComputedStyle(e);if(t.position!=="absolute"&&t.position!=="fixed"){const{width:n,height:r}=t,i=e.getBoundingClientRect();e.style.position="absolute",e.style.width=n,e.style.height=r,pr(e,i)}}function pr(e,t){const n=e.getBoundingClientRect();if(t.left!==n.left||t.top!==n.top){const r=getComputedStyle(e),i=r.transform==="none"?"":r.transform;e.style.transform=`${i} translate(${t.left-n.left}px, ${t.top-n.top}px)`}}let Ne;function Ae(e){Ne=e}function hn(){if(!Ne)throw new Error("Function called outside component initialization");return Ne}function vn(e){hn().$$.on_mount.push(e)}function yn(e){hn().$$.on_destroy.push(e)}const he=[],Ut=[];let ye=[];const Bt=[],mr=Promise.resolve();let vt=!1;function hr(){vt||(vt=!0,mr.then(_n))}function yt(e){ye.push(e)}const gt=new Set;let pe=0;function _n(){if(pe!==0)return;const e=Ne;do{try{for(;pee.indexOf(r)===-1?t.push(r):n.push(r)),n.forEach(r=>r()),ye=t}const Be=new Set;let se;function _r(){se={r:0,c:[],p:se}}function Er(){se.r||fe(se.c),se=se.p}function _e(e,t){e&&e.i&&(Be.delete(e),e.i(t))}function _t(e,t,n,r){if(e&&e.o){if(Be.has(e))return;Be.add(e),se.c.push(()=>{Be.delete(e),r&&(n&&e.d(1),r())}),e.o(t)}else r&&r()}function Ve(e){return(e==null?void 0:e.length)!==void 0?e:Array.from(e)}function Dr(e,t){e.d(1),t.delete(e.key)}function En(e,t){e.f(),Dr(e,t)}function Dn(e,t,n,r,i,o,a,s,l,d,u,g){let c=e.length,f=o.length,p=c;const m={};for(;p--;)m[e[p].key]=p;const h=[],v=new Map,y=new Map,b=[];for(p=f;p--;){const E=g(i,o,p),_=n(E);let D=a.get(_);D?r&&b.push(()=>D.p(E,t)):(D=d(_,E),D.c()),v.set(_,h[p]=D),_ in m&&y.set(_,Math.abs(p-m[_]))}const z=new Set,A=new Set;function Y(E){_e(E,1),E.m(s,u),a.set(E.key,E),u=E.first,f--}for(;c&&f;){const E=h[f-1],_=e[c-1],D=E.key,V=_.key;E===_?(u=E.first,c--,f--):v.has(V)?!a.has(D)||z.has(D)?Y(E):A.has(V)?c--:y.get(D)>y.get(V)?(A.add(D),Y(E)):(z.add(V),c--):(l(_,a),c--)}for(;c--;){const E=e[c];v.has(E.key)||l(E,a)}for(;f;)Y(h[f-1]);return fe(b),h}function br(e){e&&e.c()}function bn(e,t,n){const{fragment:r,after_update:i}=e.$$;r&&r.m(t,n),yt(()=>{const o=e.$$.on_mount.map(cn).filter($e);e.$$.on_destroy?e.$$.on_destroy.push(...o):fe(o),e.$$.on_mount=[]}),i.forEach(yt)}function wn(e,t){const n=e.$$;n.fragment!==null&&(yr(n.after_update),fe(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function wr(e,t){e.$$.dirty[0]===-1&&(he.push(e),hr(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const p=f.length?f[0]:c;return d.ctx&&i(d.ctx[g],d.ctx[g]=p)&&(!d.skip_bound&&d.bound[g]&&d.bound[g](p),u&&wr(e,g)),c}):[],d.update(),u=!0,fe(d.before_update),d.fragment=r?r(d.ctx):!1,t.target){if(t.hydrate){const g=sr(t.target);d.fragment&&d.fragment.l(g),g.forEach(H)}else d.fragment&&d.fragment.c();t.intro&&_e(e.$$.fragment),bn(e,t.target,t.anchor),_n()}Ae(l)}class On{constructor(){ft(this,"$$");ft(this,"$$set")}$destroy(){wn(this,1),this.$destroy=x}$on(t,n){if(!$e(n))return x;const r=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return r.push(n),()=>{const i=r.indexOf(n);i!==-1&&r.splice(i,1)}}$set(t){this.$$set&&!Qn(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const Tr="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Tr);function In(e,t){const n=r=>{const{type:i,data:o}=r.data;i===e&&t(o)};vn(()=>window.addEventListener("message",n)),yn(()=>window.removeEventListener("message",n))}async function Et(e,t){const n={method:"post",headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(t)},r=window.GetParentResourceName?window.GetParentResourceName():"nui-frame-app";return await(await fetch(`https://${r}/${e}`,n)).json()}function Or(e){const t=e-1;return t*t*t+1}function An(e,{from:t,to:n},r={}){const i=getComputedStyle(e),o=i.transform==="none"?"":i.transform,[a,s]=i.transformOrigin.split(" ").map(parseFloat),l=t.left+t.width*a/n.width-(n.left+a),d=t.top+t.height*s/n.height-(n.top+s),{delay:u=0,duration:g=f=>Math.sqrt(f)*120,easing:c=Or}=r;return{delay:u,duration:$e(g)?g(Math.sqrt(l*l+d*d)):g,easing:c,css:(f,p)=>{const m=p*l,h=p*d,v=f+p*t.width/n.width,y=f+p*t.height/n.height;return`transform: ${o} translate(${m}px, ${h}px) scale(${v}, ${y});`}}}function jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function qe(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function Ar(e,t){if(e==null)return{};var n=Ir(e,t),r,i;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xr(e,t){return Nr(e)||Cr(e,t)||Nt(e,t)||$r()}function te(e){return Sr(e)||Rr(e)||Nt(e)||Lr()}function Sr(e){if(Array.isArray(e))return Dt(e)}function Nr(e){if(Array.isArray(e))return e}function Rr(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Cr(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r=[],i=!0,o=!1,a,s;try{for(n=n.call(e);!(i=(a=n.next()).done)&&(r.push(a.value),!(t&&r.length===t));i=!0);}catch(l){o=!0,s=l}finally{try{!i&&n.return!=null&&n.return()}finally{if(o)throw s}}return r}}function Nt(e,t){if(e){if(typeof e=="string")return Dt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dt(e,t)}}function Dt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. 7 | In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,s;return{s:function(){n=n.call(e)},n:function(){var l=n.next();return o=l.done,l},e:function(l){a=!0,s=l},f:function(){try{!o&&n.return!=null&&n.return()}finally{if(a)throw s}}}}var Pr="finalize",Mr="consider";function be(e,t,n){e.dispatchEvent(new CustomEvent(Pr,{detail:{items:t,info:n}}))}function re(e,t,n){e.dispatchEvent(new CustomEvent(Mr,{detail:{items:t,info:n}}))}var ot="draggedEntered",Pe="draggedLeft",at="draggedOverIndex",Rt="draggedLeftDocument",Ke={LEFT_FOR_ANOTHER:"leftForAnother",OUTSIDE_OF_ANY:"outsideOfAny"};function Fr(e,t,n){e.dispatchEvent(new CustomEvent(ot,{detail:{indexObj:t,draggedEl:n}}))}function kr(e,t,n){e.dispatchEvent(new CustomEvent(Pe,{detail:{draggedEl:t,type:Ke.LEFT_FOR_ANOTHER,theOtherDz:n}}))}function zr(e,t){e.dispatchEvent(new CustomEvent(Pe,{detail:{draggedEl:t,type:Ke.OUTSIDE_OF_ANY}}))}function Gr(e,t,n){e.dispatchEvent(new CustomEvent(at,{detail:{indexObj:t,draggedEl:n}}))}function Ur(e){window.dispatchEvent(new CustomEvent(Rt,{detail:{draggedEl:e}}))}var F={DRAG_STARTED:"dragStarted",DRAGGED_ENTERED:ot,DRAGGED_ENTERED_ANOTHER:"dragEnteredAnother",DRAGGED_OVER_INDEX:at,DRAGGED_LEFT:Pe,DRAGGED_LEFT_ALL:"draggedLeftAll",DROPPED_INTO_ZONE:"droppedIntoZone",DROPPED_INTO_ANOTHER:"droppedIntoAnother",DROPPED_OUTSIDE_OF_ANY:"droppedOutsideOfAny",DRAG_STOPPED:"dragStopped"},k={POINTER:"pointer",KEYBOARD:"keyboard"},st="isDndShadowItem",Ct="data-is-dnd-shadow-item-internal",Br="data-is-dnd-shadow-item-hint",jr="id:dnd-shadow-placeholder-0000",Wr="dnd-action-dragged-el",M="id",bt=0;function xn(){bt++}function Sn(){if(bt===0)throw new Error("Bug! trying to decrement when there are no dropzones");bt--}var Lt=typeof window>"u";function Nn(e){var t,n=e.getBoundingClientRect(),r=getComputedStyle(e),i=r.transform;if(i){var o,a,s,l;if(i.startsWith("matrix3d("))t=i.slice(9,-1).split(/, /),o=+t[0],a=+t[5],s=+t[12],l=+t[13];else if(i.startsWith("matrix("))t=i.slice(7,-1).split(/, /),o=+t[0],a=+t[3],s=+t[4],l=+t[5];else return n;var d=r.transformOrigin,u=n.x-s-(1-o)*parseFloat(d),g=n.y-l-(1-a)*parseFloat(d.slice(d.indexOf(" ")+1)),c=o?n.width/o:e.offsetWidth,f=a?n.height/a:e.offsetHeight;return{x:u,y:g,width:c,height:f,top:g,right:u+c,bottom:g+f,left:u}}else return n}function Rn(e){var t=Nn(e);return{top:t.top+window.scrollY,bottom:t.bottom+window.scrollY,left:t.left+window.scrollX,right:t.right+window.scrollX}}function $t(e){var t=e.getBoundingClientRect();return{top:t.top+window.scrollY,bottom:t.bottom+window.scrollY,left:t.left+window.scrollX,right:t.right+window.scrollX}}function Cn(e){return{x:(e.left+e.right)/2,y:(e.top+e.bottom)/2}}function Zr(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Pt(e,t){return e.y<=t.bottom&&e.y>=t.top&&e.x>=t.left&&e.x<=t.right}function Re(e){return Cn($t(e))}function Wt(e,t){var n=Re(e),r=Rn(t);return Pt(n,r)}function Hr(e,t){var n=Re(e),r=Re(t);return Zr(n,r)}function Yr(e){var t=$t(e);return t.right<0||t.left>document.documentElement.scrollWidth||t.bottom<0||t.top>document.documentElement.scrollHeight}function Vr(e,t){var n=$t(t);return Pt(e,n)?{top:e.y-n.top,bottom:n.bottom-e.y,left:e.x-n.left,right:Math.min(n.right,document.documentElement.clientWidth)-e.x}:null}var ue;function Mt(){ue=new Map}Mt();function qr(e){ue.delete(e)}function Kr(e){var t=Array.from(e.children).findIndex(function(n){return n.getAttribute(Ct)});if(t>=0)return ue.has(e)||ue.set(e,new Map),ue.get(e).set(t,Rn(e.children[t])),t}function Xr(e,t){if(!Wt(e,t))return null;var n=t.children;if(n.length===0)return{index:0,isProximityBased:!0};for(var r=Kr(t),i=0;ia.clientHeight&&(s.bottoma.clientWidth&&(s.right1&&arguments[1]!==void 0?arguments[1]:0;return e.parentElement?$n(e.parentElement,t+1):t-1}function Jr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!{}.hasOwnProperty.call(t,n)||t[n]!==e[n])return!1;return!0}function Qr(e,t){if(e.length!==t.length)return!1;for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:ei,r,i,o=!1,a,s=Array.from(t).sort(function(d,u){return Zt(u)-Zt(d)});function l(){var d=Re(e),u=ti(d,r);if(!u&&a&&Math.abs(a.x-d.x)0)for(var l=r?[t]:te(t.querySelectorAll("select")),d=0;d0)for(var m=f?[t]:te(t.querySelectorAll("canvas")),h=0;h1&&arguments[1]!==void 0?arguments[1]:function(){},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){return[]};e.forEach(function(r){var i=t(r);Object.keys(i).forEach(function(o){r.style[o]=i[o]}),n(r).forEach(function(o){return r.classList.add(o)})})}function Qe(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){return[]};e.forEach(function(r){var i=t(r);Object.keys(i).forEach(function(o){r.style[o]=""}),n(r).forEach(function(o){return r.classList.contains(o)&&r.classList.remove(o)})})}function _i(e){var t=e.style.minHeight;e.style.minHeight=window.getComputedStyle(e).getPropertyValue("height");var n=e.style.minWidth;return e.style.minWidth=window.getComputedStyle(e).getPropertyValue("width"),function(){e.style.minHeight=t,e.style.minWidth=n}}var Ei="--any--",Di=100,bi=20,Yt=3,Vt={outline:"rgba(255, 255, 102, 0.7) solid 2px"},qt="data-is-dnd-original-dragged-item",K,R,G,lt,w,ut,de,C,ee,U,ae=!1,Ft=!1,kt,Me=!1,We=[],Z=new Map,I=new Map,pt=new WeakMap;function wi(e,t){Z.has(t)||Z.set(t,new Set),Z.get(t).has(e)||(Z.get(t).add(e),xn())}function Kt(e,t){Z.get(t).delete(e),Sn(),Z.get(t).size===0&&Z.delete(t)}function Ti(){li();var e=Z.get(lt),t=it(e),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;r.addEventListener(ot,Bn),r.addEventListener(Pe,jn),r.addEventListener(at,Wn)}}catch(a){t.e(a)}finally{t.f()}window.addEventListener(Rt,we);var i=Math.max.apply(Math,te(Array.from(e.keys()).map(function(a){return I.get(a).dropAnimationDurationMs}))),o=i===0?bi:Math.max(i,Di);ri(R,e,o*1.07)}function Oi(){ui();var e=Z.get(lt),t=it(e),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;r.removeEventListener(ot,Bn),r.removeEventListener(Pe,jn),r.removeEventListener(at,Wn)}}catch(i){t.e(i)}finally{t.f()}window.removeEventListener(Rt,we),ii()}function ct(e){return e.findIndex(function(t){return!!t[st]})}function Ii(e){var t;return qe(qe({},e),{},(t={},De(t,st,!0),De(t,M,jr),t))}function Bn(e){var t=I.get(e.currentTarget),n=t.items,r=t.dropFromOthersDisabled;if(!(r&&e.currentTarget!==w)){if(Me=!1,n=n.filter(function(u){return u[M]!==de[M]}),w!==e.currentTarget){var i=I.get(w).items,o=i.filter(function(u){return!u[st]});re(w,o,{trigger:F.DRAGGED_ENTERED_ANOTHER,id:G[M],source:k.POINTER})}var a=e.detail.indexObj,s=a.index,l=a.isProximityBased,d=l&&s===e.currentTarget.children.length-1?s+1:s;C=e.currentTarget,n.splice(d,0,de),re(e.currentTarget,n,{trigger:F.DRAGGED_ENTERED,id:G[M],source:k.POINTER})}}function jn(e){if(ae){var t=I.get(e.currentTarget),n=t.items,r=t.dropFromOthersDisabled;if(!(r&&e.currentTarget!==w&&e.currentTarget!==C)){var i=ct(n);i!==-1&&n.splice(i,1),C=void 0;var o=e.detail,a=o.type,s=o.theOtherDz;if(a===Ke.OUTSIDE_OF_ANY||a===Ke.LEFT_FOR_ANOTHER&&s!==w&&I.get(s).dropFromOthersDisabled){Me=!0,C=w;var l=I.get(w).items;l.splice(ut,0,de),re(w,l,{trigger:F.DRAGGED_LEFT_ALL,id:G[M],source:k.POINTER})}re(e.currentTarget,n,{trigger:F.DRAGGED_LEFT,id:G[M],source:k.POINTER})}}}function Wn(e){var t=I.get(e.currentTarget),n=t.items,r=t.dropFromOthersDisabled;if(!(r&&e.currentTarget!==w)){Me=!1;var i=e.detail.indexObj.index,o=ct(n);o!==-1&&n.splice(o,1),n.splice(i,0,de),re(e.currentTarget,n,{trigger:F.DRAGGED_OVER_INDEX,id:G[M],source:k.POINTER})}}function et(e){e.preventDefault();var t=e.touches?e.touches[0]:e;U={x:t.clientX,y:t.clientY},R.style.transform="translate3d(".concat(U.x-ee.x,"px, ").concat(U.y-ee.y,"px, 0)")}function we(){Ft=!0,window.removeEventListener("mousemove",et),window.removeEventListener("touchmove",et),window.removeEventListener("mouseup",we),window.removeEventListener("touchend",we),Oi(),pi(R),C||(C=w);var e=I.get(C),t=e.items,n=e.type;Qe(Z.get(n),function(o){return I.get(o).dropTargetStyle},function(o){return I.get(o).dropTargetClasses});var r=ct(t);r===-1&&(C===w?r=ut:C.children.length>0&&(r=C.children.length-1)),t=t.map(function(o){return o[st]?G:o});function i(){kt(),be(C,t,{trigger:Me?F.DROPPED_OUTSIDE_OF_ANY:F.DROPPED_INTO_ZONE,id:G[M],source:k.POINTER}),C!==w&&be(w,I.get(w).items,{trigger:F.DROPPED_INTO_ANOTHER,id:G[M],source:k.POINTER}),r!==-1&&yi(C.children[r]),Si()}r!==-1&&Ai(r,i)}function Ai(e,t){var n=Nn(C.children[e]),r={x:n.left-parseFloat(R.style.left),y:n.top-parseFloat(R.style.top)},i=I.get(C),o=i.dropAnimationDurationMs,a="transform ".concat(o,"ms ease");R.style.transition=R.style.transition?R.style.transition+","+a:a,R.style.transform="translate3d(".concat(r.x,"px, ").concat(r.y,"px, 0)"),window.setTimeout(t,o)}function xi(e,t){We.push({dz:e,destroy:t}),window.requestAnimationFrame(function(){Un(e),document.body.appendChild(e)})}function Si(){R.remove(),K.remove(),We.length&&(We.forEach(function(e){var t=e.dz,n=e.destroy;n(),t.remove()}),We=[]),R=void 0,K=void 0,G=void 0,lt=void 0,w=void 0,ut=void 0,de=void 0,C=void 0,ee=void 0,U=void 0,ae=!1,Ft=!1,kt=void 0,Me=!1}function Ni(e,t){var n=!1,r={items:void 0,type:void 0,flipDurationMs:0,dragDisabled:!1,morphDisabled:!1,dropFromOthersDisabled:!1,dropTargetStyle:Vt,dropTargetClasses:[],transformDraggedElement:function(){},centreDraggedOnCursor:!1},i=new Map;function o(){window.addEventListener("mousemove",l,{passive:!1}),window.addEventListener("touchmove",l,{passive:!1,capture:!1}),window.addEventListener("mouseup",s,{passive:!1}),window.addEventListener("touchend",s,{passive:!1})}function a(){window.removeEventListener("mousemove",l),window.removeEventListener("touchmove",l),window.removeEventListener("mouseup",s),window.removeEventListener("touchend",s)}function s(){a(),K=void 0,ee=void 0,U=void 0}function l(c){c.preventDefault();var f=c.touches?c.touches[0]:c;U={x:f.clientX,y:f.clientY},(Math.abs(U.x-ee.x)>=Yt||Math.abs(U.y-ee.y)>=Yt)&&(a(),u())}function d(c){if(!(c.target!==c.currentTarget&&(c.target.value!==void 0||c.target.isContentEditable))&&!c.button&&!ae){c.stopPropagation();var f=c.touches?c.touches[0]:c;ee={x:f.clientX,y:f.clientY},U=qe({},ee),K=c.currentTarget,o()}}function u(){ae=!0;var c=i.get(K);ut=c,w=K.parentElement;var f=w.closest("dialog")||w.getRootNode(),p=f.body||f,m=r.items,h=r.type,v=r.centreDraggedOnCursor;G=m[c],lt=h,de=Ii(G),R=gi(K,v&&U),K.setAttribute(qt,!0);function y(){R.parentElement?window.requestAnimationFrame(y):(p.appendChild(R),R.focus(),Ti(),Un(K),p.appendChild(K))}window.requestAnimationFrame(y),je(Array.from(Z.get(r.type)).filter(function(b){return b===w||!I.get(b).dropFromOthersDisabled}),function(b){return I.get(b).dropTargetStyle},function(b){return I.get(b).dropTargetClasses}),m.splice(c,1,de),kt=_i(w),re(w,m,{trigger:F.DRAG_STARTED,id:G[M],source:k.POINTER}),window.addEventListener("mousemove",et,{passive:!1}),window.addEventListener("touchmove",et,{passive:!1,capture:!1}),window.addEventListener("mouseup",we,{passive:!1}),window.addEventListener("touchend",we,{passive:!1})}function g(c){var f=c.items,p=f===void 0?void 0:f,m=c.flipDurationMs,h=m===void 0?0:m,v=c.type,y=v===void 0?Ei:v,b=c.dragDisabled,z=b===void 0?!1:b,A=c.morphDisabled,Y=A===void 0?!1:A,E=c.dropFromOthersDisabled,_=E===void 0?!1:E,D=c.dropTargetStyle,V=D===void 0?Vt:D,Te=c.dropTargetClasses,Q=Te===void 0?[]:Te,Fe=c.transformDraggedElement,Oe=Fe===void 0?function(){}:Fe,dt=c.centreDraggedOnCursor,ke=dt===void 0?!1:dt;r.dropAnimationDurationMs=h,r.type&&y!==r.type&&Kt(e,r.type),r.type=y,r.items=te(p),r.dragDisabled=z,r.morphDisabled=Y,r.transformDraggedElement=Oe,r.centreDraggedOnCursor=ke,n&&ae&&!Ft&&(!Jr(V,r.dropTargetStyle)||!Qr(Q,r.dropTargetClasses))&&(Qe([e],function(){return r.dropTargetStyle},function(){return Q}),je([e],function(){return V},function(){return Q})),r.dropTargetStyle=V,r.dropTargetClasses=te(Q);function S(q,zt){return I.get(q)?I.get(q)[zt]:r[zt]}n&&ae&&r.dropFromOthersDisabled!==_&&(_?Qe([e],function(q){return S(q,"dropTargetStyle")},function(q){return S(q,"dropTargetClasses")}):je([e],function(q){return S(q,"dropTargetStyle")},function(q){return S(q,"dropTargetClasses")})),r.dropFromOthersDisabled=_,I.set(e,r),wi(e,y);for(var qn=ct(r.items),ge=0;ge".concat(t,"

"),n.style.display="none",n.style.position="fixed",n.style.zIndex="-5",n}function Ee(e){if(!Lt){O||Ot(),O.innerHTML="";var t=document.createTextNode(e);O.appendChild(t),O.style.display="none",O.style.display="inline"}}var Pi="--any--",Xt={outline:"rgba(255, 255, 102, 0.7) solid 2px"},B=!1,It,P,ce="",oe,X,ne="",tt=new WeakSet,Jt=new WeakMap,Qt=new WeakMap,At=new Map,N=new Map,W=new Map,nt;function Mi(e,t){W.size===0&&(nt=Ci(),window.addEventListener("keydown",Hn),window.addEventListener("click",Yn)),W.has(t)||W.set(t,new Set),W.get(t).has(e)||(W.get(t).add(e),xn())}function en(e,t){P===e&&Le(),W.get(t).delete(e),Sn(),W.get(t).size===0&&W.delete(t),W.size===0&&(window.removeEventListener("keydown",Hn),window.removeEventListener("click",Yn),nt=void 0,Li())}function Hn(e){if(B)switch(e.key){case"Escape":{Le();break}}}function Yn(){B&&(tt.has(document.activeElement)||Le())}function Fi(e){if(B){var t=e.currentTarget;if(t!==P){ce=t.getAttribute("aria-label")||"";var n=N.get(P),r=n.items,i=r.find(function(g){return g[M]===X}),o=r.indexOf(i),a=r.splice(o,1)[0],s=N.get(t),l=s.items,d=s.autoAriaDisabled;t.getBoundingClientRect().top0&&arguments[0]!==void 0?arguments[0]:!0;N.get(P).autoAriaDisabled||Ee("Stopped dragging item ".concat(ne)),tt.has(document.activeElement)&&document.activeElement.blur(),e&&re(P,N.get(P).items,{trigger:F.DRAG_STOPPED,id:X,source:k.KEYBOARD}),Qe(W.get(It),function(t){return N.get(t).dropTargetStyle},function(t){return N.get(t).dropTargetClasses}),oe=null,X=null,ne="",It=null,P=null,ce="",B=!1,Vn()}function ki(e,t){var n={items:void 0,type:void 0,dragDisabled:!1,zoneTabIndex:0,zoneItemTabIndex:0,dropFromOthersDisabled:!1,dropTargetStyle:Xt,dropTargetClasses:[],autoAriaDisabled:!1};function r(u,g,c){u.length<=1||u.splice(c,1,u.splice(g,1,u[c])[0])}function i(u){switch(u.key){case"Enter":case" ":{if((u.target.disabled!==void 0||u.target.href||u.target.isContentEditable)&&!tt.has(u.target))return;u.preventDefault(),u.stopPropagation(),B?Le():o(u);break}case"ArrowDown":case"ArrowRight":{if(!B)return;u.preventDefault(),u.stopPropagation();var g=N.get(e),c=g.items,f=Array.from(e.children),p=f.indexOf(u.currentTarget);p0&&(n.autoAriaDisabled||Ee("Moved item ".concat(ne," to position ").concat(y," in the list ").concat(ce)),r(h,y,y-1),be(e,h,{trigger:F.DROPPED_INTO_ZONE,id:X,source:k.KEYBOARD}));break}}}function o(u){s(u.currentTarget),P=e,It=n.type,B=!0;var g=Array.from(W.get(n.type)).filter(function(f){return f===P||!N.get(f).dropFromOthersDisabled});if(je(g,function(f){return N.get(f).dropTargetStyle},function(f){return N.get(f).dropTargetClasses}),!n.autoAriaDisabled){var c="Started dragging item ".concat(ne,". Use the arrow keys to move it within its list ").concat(ce);g.length>1&&(c+=", or tab to another list in order to move the item into it"),Ee(c)}re(e,N.get(e).items,{trigger:F.DRAG_STARTED,id:X,source:k.KEYBOARD}),Vn()}function a(u){B&&u.currentTarget!==oe&&(u.stopPropagation(),Le(!1),o(u))}function s(u){var g=N.get(e),c=g.items,f=Array.from(e.children),p=f.indexOf(u);oe=u,oe.tabIndex=n.zoneItemTabIndex,X=c[p][M],ne=f[p].getAttribute("aria-label")||""}function l(u){var g=u.items,c=g===void 0?[]:g,f=u.type,p=f===void 0?Pi:f,m=u.dragDisabled,h=m===void 0?!1:m,v=u.zoneTabIndex,y=v===void 0?0:v,b=u.zoneItemTabIndex,z=b===void 0?0:b,A=u.dropFromOthersDisabled,Y=A===void 0?!1:A,E=u.dropTargetStyle,_=E===void 0?Xt:E,D=u.dropTargetClasses,V=D===void 0?[]:D,Te=u.autoAriaDisabled,Q=Te===void 0?!1:Te;n.items=te(c),n.dragDisabled=h,n.dropFromOthersDisabled=Y,n.zoneTabIndex=y,n.zoneItemTabIndex=z,n.dropTargetStyle=_,n.dropTargetClasses=V,n.autoAriaDisabled=Q,n.type&&p!==n.type&&en(e,n.type),n.type=p,Mi(e,p),Q||(e.setAttribute("aria-disabled",h),e.setAttribute("role","list"),e.setAttribute("aria-describedby",h?nt.DND_ZONE_DRAG_DISABLED:nt.DND_ZONE_ACTIVE)),N.set(e,n),B?e.tabIndex=e===P||oe.contains(e)||n.dropFromOthersDisabled||P&&n.type!==N.get(P).type?-1:0:e.tabIndex=n.zoneTabIndex,e.addEventListener("focus",Fi);for(var Fe=function(ke){var S=e.children[ke];tt.add(S),S.tabIndex=B?-1:n.zoneItemTabIndex,Q||S.setAttribute("role","listitem"),S.removeEventListener("keydown",Jt.get(S)),S.removeEventListener("click",Qt.get(S)),h||(S.addEventListener("keydown",i),Jt.set(S,i),S.addEventListener("click",a),Qt.set(S,a)),B&&n.items[ke][M]===X&&(oe=S,oe.tabIndex=n.zoneItemTabIndex,S.focus())},Oe=0;Oe0&&console.warn("dndzone will ignore unknown options",o),!t)throw new Error("no 'items' key provided to dndzone");var a=t.find(function(s){return!{}.hasOwnProperty.call(s,M)});if(a)throw new Error("missing '".concat(M,"' property for item ").concat(ze(a)));if(i&&!Array.isArray(i))throw new Error("dropTargetClasses should be an array but instead it is a ".concat(xe(i),", ").concat(ze(i)));if(n&&!nn(n))throw new Error("zoneTabIndex should be a number but instead it is a ".concat(xe(n),", ").concat(ze(n)));if(r&&!nn(r))throw new Error("zoneItemTabIndex should be a number but instead it is a ".concat(xe(r),", ").concat(ze(r)))}function nn(e){return!isNaN(e)&&function(t){return(t|0)===t}(parseFloat(e))}const me=[];function Bi(e,t=x){let n;const r=new Set;function i(s){if(xt(e,s)&&(e=s,n)){const l=!me.length;for(const d of r)d[1](),me.push(d,e);if(l){for(let d=0;d{r.delete(d),r.size===0&&n&&(n(),n=null)}}return{set:i,update:o,subscribe:a}}const ji=[{id:1,name:"errors",items:[]},{id:2,name:"warnings",items:[]},{id:3,name:"updates",items:[]},{id:4,name:"fxmanifest",items:[]},{id:5,name:"inprogress",items:[]},{id:6,name:"fixed",items:[]}],Ue=Bi(ji);function rn(e,t,n){const r=e.slice();return r[7]=t[n],r}function on(e,t,n){const r=e.slice();return r[10]=t[n],r}function Wi(e){let t;return{c(){t=L("div"),t.innerHTML="

loading..

",$(t,"class","flex justify-center items-center align-center")},m(n,r){J(n,t,r)},p:x,d(n){n&&H(t)}}}function Zi(e){let t=[],n=new Map,r,i=Ve(e[1]);const o=a=>a[7].id;for(let a=0;aa[10].id;for(let a=0;an(1,r=u));let i=!1,o;function a(u,g){Ue.update(c=>{const f=c.findIndex(p=>p.id===u);return c[f].items=g.detail.items,[...c]})}function s(u,g){Ue.update(c=>{const f=c.findIndex(p=>p.id===u);return c[f].items=g.detail.items,[...c]})}In("updateTrackerTable",async u=>{Ue.update(g=>(Object.entries(u).forEach(([c,f])=>{const p=g.findIndex(m=>m.name===c);p!==-1&&f.forEach(m=>{g[p].items.push({id:m.id,name:m.line})})}),[...g])),n(0,i=!0)}),yn(()=>{o&&clearInterval(o)});const l=(u,g)=>a(u.id,g),d=(u,g)=>s(u.id,g);return e.$$.update=()=>{e.$$.dirty&17&&(i?n(4,o=setInterval(()=>{Et("updateTrackerTable",{})},5e3)):o&&(clearInterval(o),n(4,o=null)))},[i,r,a,s,o,l,d]}class Ki extends On{constructor(t){super(),Tn(this,t,qi,Vi,xt,{})}}function un(e){let t,n,r,i,o,a,s,l,d,u,g,c,f;return u=new Ki({}),{c(){t=L("main"),n=L("div"),r=L("div"),i=L("div"),o=L("h2"),o.innerHTML="🚧 um-error-tracker version?",a=le(),s=L("button"),s.textContent="⭐ github",l=le(),d=L("div"),br(u.$$.fragment),$(o,"class","text-sm font-bold text-white font-bold mb-3"),$(s,"class","cursor-pointer text-xs font-bold"),$(i,"class","flex justify-between items-center"),$(d,"class","grid grid-cols-3 gap-5"),$(r,"class","bg-color p-6 rounded-lg shadow-lg"),lr(r,"width","70rem"),$(n,"class","flex justify-center items-center h-screen")},m(p,m){J(p,t,m),T(t,n),T(n,r),T(r,i),T(i,o),T(i,a),T(i,s),T(r,l),T(r,d),bn(u,d,null),g=!0,c||(f=mt(s,"click",Ji),c=!0)},p:x,i(p){g||(_e(u.$$.fragment,p),g=!0)},o(p){_t(u.$$.fragment,p),g=!1},d(p){p&&H(t),wn(u),c=!1,f()}}}function Xi(e){let t,n,r=e[0]&&un();return{c(){r&&r.c(),t=rt()},m(i,o){r&&r.m(i,o),J(i,t,o),n=!0},p(i,[o]){i[0]?r?(r.p(i,o),o&1&&_e(r,1)):(r=un(),r.c(),_e(r,1),r.m(t.parentNode,t)):r&&(_r(),_t(r,1,1,()=>{r=null}),Er())},i(i){n||(_e(r),n=!0)},o(i){_t(r),n=!1},d(i){i&&H(t),r&&r.d(i)}}}function Ji(){window.invokeNative("openUrl","https://github.com/alp1x/um-error-tracker")}function Qi(e,t,n){let r=!1;In("openTracker",async()=>{n(0,r=!0)});function i(o){o.key==="Escape"&&(n(0,r=!1),Et("closeTracker",{}))}return vn(()=>(window.addEventListener("keydown",i),Et("trackerNUIReady",{}),()=>window.removeEventListener("keydown",i))),[r]}class eo extends On{constructor(t){super(),Tn(this,t,Qi,Xi,xt,{})}}new eo({target:document.getElementById("app")}); 8 | -------------------------------------------------------------------------------- /web/build/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + Svelte + TS 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + Svelte + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "um-error-tracker", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-check --tsconfig ./tsconfig.json" 11 | }, 12 | "devDependencies": { 13 | "@sveltejs/vite-plugin-svelte": "^3.0.1", 14 | "@tsconfig/svelte": "^5.0.2", 15 | "autoprefixer": "^10.4.17", 16 | "postcss": "^8.4.33", 17 | "svelte": "^4.2.8", 18 | "svelte-check": "^3.6.2", 19 | "svelte-dnd-action": "^0.9.38", 20 | "tailwindcss": "^3.4.1", 21 | "tslib": "^2.6.2", 22 | "typescript": "^5.2.2", 23 | "vite": "^5.0.8" 24 | }, 25 | "dependencies": { 26 | "lucide-svelte": "^0.319.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /web/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | lucide-svelte: 9 | specifier: ^0.319.0 10 | version: 0.319.0(svelte@4.2.8) 11 | 12 | devDependencies: 13 | '@sveltejs/vite-plugin-svelte': 14 | specifier: ^3.0.1 15 | version: 3.0.1(svelte@4.2.8)(vite@5.0.8) 16 | '@tsconfig/svelte': 17 | specifier: ^5.0.2 18 | version: 5.0.2 19 | autoprefixer: 20 | specifier: ^10.4.17 21 | version: 10.4.17(postcss@8.4.33) 22 | postcss: 23 | specifier: ^8.4.33 24 | version: 8.4.33 25 | svelte: 26 | specifier: ^4.2.8 27 | version: 4.2.8 28 | svelte-check: 29 | specifier: ^3.6.2 30 | version: 3.6.2(postcss@8.4.33)(svelte@4.2.8) 31 | svelte-dnd-action: 32 | specifier: ^0.9.38 33 | version: 0.9.38(svelte@4.2.8) 34 | tailwindcss: 35 | specifier: ^3.4.1 36 | version: 3.4.1 37 | tslib: 38 | specifier: ^2.6.2 39 | version: 2.6.2 40 | typescript: 41 | specifier: ^5.2.2 42 | version: 5.2.2 43 | vite: 44 | specifier: ^5.0.8 45 | version: 5.0.8 46 | 47 | packages: 48 | 49 | /@alloc/quick-lru@5.2.0: 50 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 51 | engines: {node: '>=10'} 52 | dev: true 53 | 54 | /@ampproject/remapping@2.2.1: 55 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 56 | engines: {node: '>=6.0.0'} 57 | dependencies: 58 | '@jridgewell/gen-mapping': 0.3.3 59 | '@jridgewell/trace-mapping': 0.3.22 60 | 61 | /@esbuild/aix-ppc64@0.19.12: 62 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 63 | engines: {node: '>=12'} 64 | cpu: [ppc64] 65 | os: [aix] 66 | requiresBuild: true 67 | dev: true 68 | optional: true 69 | 70 | /@esbuild/android-arm64@0.19.12: 71 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 72 | engines: {node: '>=12'} 73 | cpu: [arm64] 74 | os: [android] 75 | requiresBuild: true 76 | dev: true 77 | optional: true 78 | 79 | /@esbuild/android-arm@0.19.12: 80 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 81 | engines: {node: '>=12'} 82 | cpu: [arm] 83 | os: [android] 84 | requiresBuild: true 85 | dev: true 86 | optional: true 87 | 88 | /@esbuild/android-x64@0.19.12: 89 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 90 | engines: {node: '>=12'} 91 | cpu: [x64] 92 | os: [android] 93 | requiresBuild: true 94 | dev: true 95 | optional: true 96 | 97 | /@esbuild/darwin-arm64@0.19.12: 98 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 99 | engines: {node: '>=12'} 100 | cpu: [arm64] 101 | os: [darwin] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@esbuild/darwin-x64@0.19.12: 107 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 108 | engines: {node: '>=12'} 109 | cpu: [x64] 110 | os: [darwin] 111 | requiresBuild: true 112 | dev: true 113 | optional: true 114 | 115 | /@esbuild/freebsd-arm64@0.19.12: 116 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 117 | engines: {node: '>=12'} 118 | cpu: [arm64] 119 | os: [freebsd] 120 | requiresBuild: true 121 | dev: true 122 | optional: true 123 | 124 | /@esbuild/freebsd-x64@0.19.12: 125 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 126 | engines: {node: '>=12'} 127 | cpu: [x64] 128 | os: [freebsd] 129 | requiresBuild: true 130 | dev: true 131 | optional: true 132 | 133 | /@esbuild/linux-arm64@0.19.12: 134 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 135 | engines: {node: '>=12'} 136 | cpu: [arm64] 137 | os: [linux] 138 | requiresBuild: true 139 | dev: true 140 | optional: true 141 | 142 | /@esbuild/linux-arm@0.19.12: 143 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 144 | engines: {node: '>=12'} 145 | cpu: [arm] 146 | os: [linux] 147 | requiresBuild: true 148 | dev: true 149 | optional: true 150 | 151 | /@esbuild/linux-ia32@0.19.12: 152 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 153 | engines: {node: '>=12'} 154 | cpu: [ia32] 155 | os: [linux] 156 | requiresBuild: true 157 | dev: true 158 | optional: true 159 | 160 | /@esbuild/linux-loong64@0.19.12: 161 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 162 | engines: {node: '>=12'} 163 | cpu: [loong64] 164 | os: [linux] 165 | requiresBuild: true 166 | dev: true 167 | optional: true 168 | 169 | /@esbuild/linux-mips64el@0.19.12: 170 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 171 | engines: {node: '>=12'} 172 | cpu: [mips64el] 173 | os: [linux] 174 | requiresBuild: true 175 | dev: true 176 | optional: true 177 | 178 | /@esbuild/linux-ppc64@0.19.12: 179 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 180 | engines: {node: '>=12'} 181 | cpu: [ppc64] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: true 185 | optional: true 186 | 187 | /@esbuild/linux-riscv64@0.19.12: 188 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 189 | engines: {node: '>=12'} 190 | cpu: [riscv64] 191 | os: [linux] 192 | requiresBuild: true 193 | dev: true 194 | optional: true 195 | 196 | /@esbuild/linux-s390x@0.19.12: 197 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 198 | engines: {node: '>=12'} 199 | cpu: [s390x] 200 | os: [linux] 201 | requiresBuild: true 202 | dev: true 203 | optional: true 204 | 205 | /@esbuild/linux-x64@0.19.12: 206 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 207 | engines: {node: '>=12'} 208 | cpu: [x64] 209 | os: [linux] 210 | requiresBuild: true 211 | dev: true 212 | optional: true 213 | 214 | /@esbuild/netbsd-x64@0.19.12: 215 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 216 | engines: {node: '>=12'} 217 | cpu: [x64] 218 | os: [netbsd] 219 | requiresBuild: true 220 | dev: true 221 | optional: true 222 | 223 | /@esbuild/openbsd-x64@0.19.12: 224 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 225 | engines: {node: '>=12'} 226 | cpu: [x64] 227 | os: [openbsd] 228 | requiresBuild: true 229 | dev: true 230 | optional: true 231 | 232 | /@esbuild/sunos-x64@0.19.12: 233 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 234 | engines: {node: '>=12'} 235 | cpu: [x64] 236 | os: [sunos] 237 | requiresBuild: true 238 | dev: true 239 | optional: true 240 | 241 | /@esbuild/win32-arm64@0.19.12: 242 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 243 | engines: {node: '>=12'} 244 | cpu: [arm64] 245 | os: [win32] 246 | requiresBuild: true 247 | dev: true 248 | optional: true 249 | 250 | /@esbuild/win32-ia32@0.19.12: 251 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 252 | engines: {node: '>=12'} 253 | cpu: [ia32] 254 | os: [win32] 255 | requiresBuild: true 256 | dev: true 257 | optional: true 258 | 259 | /@esbuild/win32-x64@0.19.12: 260 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 261 | engines: {node: '>=12'} 262 | cpu: [x64] 263 | os: [win32] 264 | requiresBuild: true 265 | dev: true 266 | optional: true 267 | 268 | /@isaacs/cliui@8.0.2: 269 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 270 | engines: {node: '>=12'} 271 | dependencies: 272 | string-width: 5.1.2 273 | string-width-cjs: /string-width@4.2.3 274 | strip-ansi: 7.1.0 275 | strip-ansi-cjs: /strip-ansi@6.0.1 276 | wrap-ansi: 8.1.0 277 | wrap-ansi-cjs: /wrap-ansi@7.0.0 278 | dev: true 279 | 280 | /@jridgewell/gen-mapping@0.3.3: 281 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 282 | engines: {node: '>=6.0.0'} 283 | dependencies: 284 | '@jridgewell/set-array': 1.1.2 285 | '@jridgewell/sourcemap-codec': 1.4.15 286 | '@jridgewell/trace-mapping': 0.3.22 287 | 288 | /@jridgewell/resolve-uri@3.1.1: 289 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 290 | engines: {node: '>=6.0.0'} 291 | 292 | /@jridgewell/set-array@1.1.2: 293 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 294 | engines: {node: '>=6.0.0'} 295 | 296 | /@jridgewell/sourcemap-codec@1.4.15: 297 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 298 | 299 | /@jridgewell/trace-mapping@0.3.22: 300 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 301 | dependencies: 302 | '@jridgewell/resolve-uri': 3.1.1 303 | '@jridgewell/sourcemap-codec': 1.4.15 304 | 305 | /@nodelib/fs.scandir@2.1.5: 306 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 307 | engines: {node: '>= 8'} 308 | dependencies: 309 | '@nodelib/fs.stat': 2.0.5 310 | run-parallel: 1.2.0 311 | dev: true 312 | 313 | /@nodelib/fs.stat@2.0.5: 314 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 315 | engines: {node: '>= 8'} 316 | dev: true 317 | 318 | /@nodelib/fs.walk@1.2.8: 319 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 320 | engines: {node: '>= 8'} 321 | dependencies: 322 | '@nodelib/fs.scandir': 2.1.5 323 | fastq: 1.17.0 324 | dev: true 325 | 326 | /@pkgjs/parseargs@0.11.0: 327 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 328 | engines: {node: '>=14'} 329 | requiresBuild: true 330 | dev: true 331 | optional: true 332 | 333 | /@rollup/rollup-android-arm-eabi@4.9.6: 334 | resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} 335 | cpu: [arm] 336 | os: [android] 337 | requiresBuild: true 338 | dev: true 339 | optional: true 340 | 341 | /@rollup/rollup-android-arm64@4.9.6: 342 | resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} 343 | cpu: [arm64] 344 | os: [android] 345 | requiresBuild: true 346 | dev: true 347 | optional: true 348 | 349 | /@rollup/rollup-darwin-arm64@4.9.6: 350 | resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} 351 | cpu: [arm64] 352 | os: [darwin] 353 | requiresBuild: true 354 | dev: true 355 | optional: true 356 | 357 | /@rollup/rollup-darwin-x64@4.9.6: 358 | resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} 359 | cpu: [x64] 360 | os: [darwin] 361 | requiresBuild: true 362 | dev: true 363 | optional: true 364 | 365 | /@rollup/rollup-linux-arm-gnueabihf@4.9.6: 366 | resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} 367 | cpu: [arm] 368 | os: [linux] 369 | requiresBuild: true 370 | dev: true 371 | optional: true 372 | 373 | /@rollup/rollup-linux-arm64-gnu@4.9.6: 374 | resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} 375 | cpu: [arm64] 376 | os: [linux] 377 | requiresBuild: true 378 | dev: true 379 | optional: true 380 | 381 | /@rollup/rollup-linux-arm64-musl@4.9.6: 382 | resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} 383 | cpu: [arm64] 384 | os: [linux] 385 | requiresBuild: true 386 | dev: true 387 | optional: true 388 | 389 | /@rollup/rollup-linux-riscv64-gnu@4.9.6: 390 | resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} 391 | cpu: [riscv64] 392 | os: [linux] 393 | requiresBuild: true 394 | dev: true 395 | optional: true 396 | 397 | /@rollup/rollup-linux-x64-gnu@4.9.6: 398 | resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} 399 | cpu: [x64] 400 | os: [linux] 401 | requiresBuild: true 402 | dev: true 403 | optional: true 404 | 405 | /@rollup/rollup-linux-x64-musl@4.9.6: 406 | resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} 407 | cpu: [x64] 408 | os: [linux] 409 | requiresBuild: true 410 | dev: true 411 | optional: true 412 | 413 | /@rollup/rollup-win32-arm64-msvc@4.9.6: 414 | resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} 415 | cpu: [arm64] 416 | os: [win32] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /@rollup/rollup-win32-ia32-msvc@4.9.6: 422 | resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} 423 | cpu: [ia32] 424 | os: [win32] 425 | requiresBuild: true 426 | dev: true 427 | optional: true 428 | 429 | /@rollup/rollup-win32-x64-msvc@4.9.6: 430 | resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} 431 | cpu: [x64] 432 | os: [win32] 433 | requiresBuild: true 434 | dev: true 435 | optional: true 436 | 437 | /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.8): 438 | resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} 439 | engines: {node: ^18.0.0 || >=20} 440 | peerDependencies: 441 | '@sveltejs/vite-plugin-svelte': ^3.0.0 442 | svelte: ^4.0.0 || ^5.0.0-next.0 443 | vite: ^5.0.0 444 | dependencies: 445 | '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.8) 446 | debug: 4.3.4 447 | svelte: 4.2.8 448 | vite: 5.0.8 449 | transitivePeerDependencies: 450 | - supports-color 451 | dev: true 452 | 453 | /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.8): 454 | resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} 455 | engines: {node: ^18.0.0 || >=20} 456 | peerDependencies: 457 | svelte: ^4.0.0 || ^5.0.0-next.0 458 | vite: ^5.0.0 459 | dependencies: 460 | '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.8) 461 | debug: 4.3.4 462 | deepmerge: 4.3.1 463 | kleur: 4.1.5 464 | magic-string: 0.30.5 465 | svelte: 4.2.8 466 | svelte-hmr: 0.15.3(svelte@4.2.8) 467 | vite: 5.0.8 468 | vitefu: 0.2.5(vite@5.0.8) 469 | transitivePeerDependencies: 470 | - supports-color 471 | dev: true 472 | 473 | /@tsconfig/svelte@5.0.2: 474 | resolution: {integrity: sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==} 475 | dev: true 476 | 477 | /@types/estree@1.0.5: 478 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 479 | 480 | /@types/pug@2.0.10: 481 | resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} 482 | dev: true 483 | 484 | /acorn@8.11.3: 485 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 486 | engines: {node: '>=0.4.0'} 487 | hasBin: true 488 | 489 | /ansi-regex@5.0.1: 490 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 491 | engines: {node: '>=8'} 492 | dev: true 493 | 494 | /ansi-regex@6.0.1: 495 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 496 | engines: {node: '>=12'} 497 | dev: true 498 | 499 | /ansi-styles@4.3.0: 500 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 501 | engines: {node: '>=8'} 502 | dependencies: 503 | color-convert: 2.0.1 504 | dev: true 505 | 506 | /ansi-styles@6.2.1: 507 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 508 | engines: {node: '>=12'} 509 | dev: true 510 | 511 | /any-promise@1.3.0: 512 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 513 | dev: true 514 | 515 | /anymatch@3.1.3: 516 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 517 | engines: {node: '>= 8'} 518 | dependencies: 519 | normalize-path: 3.0.0 520 | picomatch: 2.3.1 521 | dev: true 522 | 523 | /arg@5.0.2: 524 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 525 | dev: true 526 | 527 | /aria-query@5.3.0: 528 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 529 | dependencies: 530 | dequal: 2.0.3 531 | 532 | /autoprefixer@10.4.17(postcss@8.4.33): 533 | resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} 534 | engines: {node: ^10 || ^12 || >=14} 535 | hasBin: true 536 | peerDependencies: 537 | postcss: ^8.1.0 538 | dependencies: 539 | browserslist: 4.22.3 540 | caniuse-lite: 1.0.30001581 541 | fraction.js: 4.3.7 542 | normalize-range: 0.1.2 543 | picocolors: 1.0.0 544 | postcss: 8.4.33 545 | postcss-value-parser: 4.2.0 546 | dev: true 547 | 548 | /axobject-query@3.2.1: 549 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 550 | dependencies: 551 | dequal: 2.0.3 552 | 553 | /balanced-match@1.0.2: 554 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 555 | dev: true 556 | 557 | /binary-extensions@2.2.0: 558 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 559 | engines: {node: '>=8'} 560 | dev: true 561 | 562 | /brace-expansion@1.1.11: 563 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 564 | dependencies: 565 | balanced-match: 1.0.2 566 | concat-map: 0.0.1 567 | dev: true 568 | 569 | /brace-expansion@2.0.1: 570 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 571 | dependencies: 572 | balanced-match: 1.0.2 573 | dev: true 574 | 575 | /braces@3.0.2: 576 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 577 | engines: {node: '>=8'} 578 | dependencies: 579 | fill-range: 7.0.1 580 | dev: true 581 | 582 | /browserslist@4.22.3: 583 | resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} 584 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 585 | hasBin: true 586 | dependencies: 587 | caniuse-lite: 1.0.30001581 588 | electron-to-chromium: 1.4.651 589 | node-releases: 2.0.14 590 | update-browserslist-db: 1.0.13(browserslist@4.22.3) 591 | dev: true 592 | 593 | /buffer-crc32@0.2.13: 594 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 595 | dev: true 596 | 597 | /callsites@3.1.0: 598 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 599 | engines: {node: '>=6'} 600 | dev: true 601 | 602 | /camelcase-css@2.0.1: 603 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 604 | engines: {node: '>= 6'} 605 | dev: true 606 | 607 | /caniuse-lite@1.0.30001581: 608 | resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} 609 | dev: true 610 | 611 | /chokidar@3.5.3: 612 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 613 | engines: {node: '>= 8.10.0'} 614 | dependencies: 615 | anymatch: 3.1.3 616 | braces: 3.0.2 617 | glob-parent: 5.1.2 618 | is-binary-path: 2.1.0 619 | is-glob: 4.0.3 620 | normalize-path: 3.0.0 621 | readdirp: 3.6.0 622 | optionalDependencies: 623 | fsevents: 2.3.3 624 | dev: true 625 | 626 | /code-red@1.0.4: 627 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 628 | dependencies: 629 | '@jridgewell/sourcemap-codec': 1.4.15 630 | '@types/estree': 1.0.5 631 | acorn: 8.11.3 632 | estree-walker: 3.0.3 633 | periscopic: 3.1.0 634 | 635 | /color-convert@2.0.1: 636 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 637 | engines: {node: '>=7.0.0'} 638 | dependencies: 639 | color-name: 1.1.4 640 | dev: true 641 | 642 | /color-name@1.1.4: 643 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 644 | dev: true 645 | 646 | /commander@4.1.1: 647 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 648 | engines: {node: '>= 6'} 649 | dev: true 650 | 651 | /concat-map@0.0.1: 652 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 653 | dev: true 654 | 655 | /cross-spawn@7.0.3: 656 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 657 | engines: {node: '>= 8'} 658 | dependencies: 659 | path-key: 3.1.1 660 | shebang-command: 2.0.0 661 | which: 2.0.2 662 | dev: true 663 | 664 | /css-tree@2.3.1: 665 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 666 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 667 | dependencies: 668 | mdn-data: 2.0.30 669 | source-map-js: 1.0.2 670 | 671 | /cssesc@3.0.0: 672 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 673 | engines: {node: '>=4'} 674 | hasBin: true 675 | dev: true 676 | 677 | /debug@4.3.4: 678 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 679 | engines: {node: '>=6.0'} 680 | peerDependencies: 681 | supports-color: '*' 682 | peerDependenciesMeta: 683 | supports-color: 684 | optional: true 685 | dependencies: 686 | ms: 2.1.2 687 | dev: true 688 | 689 | /deepmerge@4.3.1: 690 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 691 | engines: {node: '>=0.10.0'} 692 | dev: true 693 | 694 | /dequal@2.0.3: 695 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 696 | engines: {node: '>=6'} 697 | 698 | /detect-indent@6.1.0: 699 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 700 | engines: {node: '>=8'} 701 | dev: true 702 | 703 | /didyoumean@1.2.2: 704 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 705 | dev: true 706 | 707 | /dlv@1.1.3: 708 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 709 | dev: true 710 | 711 | /eastasianwidth@0.2.0: 712 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 713 | dev: true 714 | 715 | /electron-to-chromium@1.4.651: 716 | resolution: {integrity: sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==} 717 | dev: true 718 | 719 | /emoji-regex@8.0.0: 720 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 721 | dev: true 722 | 723 | /emoji-regex@9.2.2: 724 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 725 | dev: true 726 | 727 | /es6-promise@3.3.1: 728 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 729 | dev: true 730 | 731 | /esbuild@0.19.12: 732 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 733 | engines: {node: '>=12'} 734 | hasBin: true 735 | requiresBuild: true 736 | optionalDependencies: 737 | '@esbuild/aix-ppc64': 0.19.12 738 | '@esbuild/android-arm': 0.19.12 739 | '@esbuild/android-arm64': 0.19.12 740 | '@esbuild/android-x64': 0.19.12 741 | '@esbuild/darwin-arm64': 0.19.12 742 | '@esbuild/darwin-x64': 0.19.12 743 | '@esbuild/freebsd-arm64': 0.19.12 744 | '@esbuild/freebsd-x64': 0.19.12 745 | '@esbuild/linux-arm': 0.19.12 746 | '@esbuild/linux-arm64': 0.19.12 747 | '@esbuild/linux-ia32': 0.19.12 748 | '@esbuild/linux-loong64': 0.19.12 749 | '@esbuild/linux-mips64el': 0.19.12 750 | '@esbuild/linux-ppc64': 0.19.12 751 | '@esbuild/linux-riscv64': 0.19.12 752 | '@esbuild/linux-s390x': 0.19.12 753 | '@esbuild/linux-x64': 0.19.12 754 | '@esbuild/netbsd-x64': 0.19.12 755 | '@esbuild/openbsd-x64': 0.19.12 756 | '@esbuild/sunos-x64': 0.19.12 757 | '@esbuild/win32-arm64': 0.19.12 758 | '@esbuild/win32-ia32': 0.19.12 759 | '@esbuild/win32-x64': 0.19.12 760 | dev: true 761 | 762 | /escalade@3.1.1: 763 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 764 | engines: {node: '>=6'} 765 | dev: true 766 | 767 | /estree-walker@3.0.3: 768 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 769 | dependencies: 770 | '@types/estree': 1.0.5 771 | 772 | /fast-glob@3.3.2: 773 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 774 | engines: {node: '>=8.6.0'} 775 | dependencies: 776 | '@nodelib/fs.stat': 2.0.5 777 | '@nodelib/fs.walk': 1.2.8 778 | glob-parent: 5.1.2 779 | merge2: 1.4.1 780 | micromatch: 4.0.5 781 | dev: true 782 | 783 | /fastq@1.17.0: 784 | resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} 785 | dependencies: 786 | reusify: 1.0.4 787 | dev: true 788 | 789 | /fill-range@7.0.1: 790 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 791 | engines: {node: '>=8'} 792 | dependencies: 793 | to-regex-range: 5.0.1 794 | dev: true 795 | 796 | /foreground-child@3.1.1: 797 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 798 | engines: {node: '>=14'} 799 | dependencies: 800 | cross-spawn: 7.0.3 801 | signal-exit: 4.1.0 802 | dev: true 803 | 804 | /fraction.js@4.3.7: 805 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 806 | dev: true 807 | 808 | /fs.realpath@1.0.0: 809 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 810 | dev: true 811 | 812 | /fsevents@2.3.3: 813 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 814 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 815 | os: [darwin] 816 | requiresBuild: true 817 | dev: true 818 | optional: true 819 | 820 | /function-bind@1.1.2: 821 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 822 | dev: true 823 | 824 | /glob-parent@5.1.2: 825 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 826 | engines: {node: '>= 6'} 827 | dependencies: 828 | is-glob: 4.0.3 829 | dev: true 830 | 831 | /glob-parent@6.0.2: 832 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 833 | engines: {node: '>=10.13.0'} 834 | dependencies: 835 | is-glob: 4.0.3 836 | dev: true 837 | 838 | /glob@10.3.10: 839 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 840 | engines: {node: '>=16 || 14 >=14.17'} 841 | hasBin: true 842 | dependencies: 843 | foreground-child: 3.1.1 844 | jackspeak: 2.3.6 845 | minimatch: 9.0.3 846 | minipass: 7.0.4 847 | path-scurry: 1.10.1 848 | dev: true 849 | 850 | /glob@7.2.3: 851 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 852 | dependencies: 853 | fs.realpath: 1.0.0 854 | inflight: 1.0.6 855 | inherits: 2.0.4 856 | minimatch: 3.1.2 857 | once: 1.4.0 858 | path-is-absolute: 1.0.1 859 | dev: true 860 | 861 | /graceful-fs@4.2.11: 862 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 863 | dev: true 864 | 865 | /hasown@2.0.0: 866 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 867 | engines: {node: '>= 0.4'} 868 | dependencies: 869 | function-bind: 1.1.2 870 | dev: true 871 | 872 | /import-fresh@3.3.0: 873 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 874 | engines: {node: '>=6'} 875 | dependencies: 876 | parent-module: 1.0.1 877 | resolve-from: 4.0.0 878 | dev: true 879 | 880 | /inflight@1.0.6: 881 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 882 | dependencies: 883 | once: 1.4.0 884 | wrappy: 1.0.2 885 | dev: true 886 | 887 | /inherits@2.0.4: 888 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 889 | dev: true 890 | 891 | /is-binary-path@2.1.0: 892 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 893 | engines: {node: '>=8'} 894 | dependencies: 895 | binary-extensions: 2.2.0 896 | dev: true 897 | 898 | /is-core-module@2.13.1: 899 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 900 | dependencies: 901 | hasown: 2.0.0 902 | dev: true 903 | 904 | /is-extglob@2.1.1: 905 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 906 | engines: {node: '>=0.10.0'} 907 | dev: true 908 | 909 | /is-fullwidth-code-point@3.0.0: 910 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 911 | engines: {node: '>=8'} 912 | dev: true 913 | 914 | /is-glob@4.0.3: 915 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 916 | engines: {node: '>=0.10.0'} 917 | dependencies: 918 | is-extglob: 2.1.1 919 | dev: true 920 | 921 | /is-number@7.0.0: 922 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 923 | engines: {node: '>=0.12.0'} 924 | dev: true 925 | 926 | /is-reference@3.0.2: 927 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 928 | dependencies: 929 | '@types/estree': 1.0.5 930 | 931 | /isexe@2.0.0: 932 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 933 | dev: true 934 | 935 | /jackspeak@2.3.6: 936 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 937 | engines: {node: '>=14'} 938 | dependencies: 939 | '@isaacs/cliui': 8.0.2 940 | optionalDependencies: 941 | '@pkgjs/parseargs': 0.11.0 942 | dev: true 943 | 944 | /jiti@1.21.0: 945 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 946 | hasBin: true 947 | dev: true 948 | 949 | /kleur@4.1.5: 950 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 951 | engines: {node: '>=6'} 952 | dev: true 953 | 954 | /lilconfig@2.1.0: 955 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 956 | engines: {node: '>=10'} 957 | dev: true 958 | 959 | /lilconfig@3.0.0: 960 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 961 | engines: {node: '>=14'} 962 | dev: true 963 | 964 | /lines-and-columns@1.2.4: 965 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 966 | dev: true 967 | 968 | /locate-character@3.0.0: 969 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 970 | 971 | /lru-cache@10.2.0: 972 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 973 | engines: {node: 14 || >=16.14} 974 | dev: true 975 | 976 | /lucide-svelte@0.319.0(svelte@4.2.8): 977 | resolution: {integrity: sha512-Hxp95cBIq46r5E6RH1gTMyeJCleHQTLJsNIJelVd2cUVB5V0gGKbzcDY4wF//1Wp2nNT33SBroA4FauaZL21Bg==} 978 | peerDependencies: 979 | svelte: '>=3 <5' 980 | dependencies: 981 | svelte: 4.2.8 982 | dev: false 983 | 984 | /magic-string@0.30.5: 985 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 986 | engines: {node: '>=12'} 987 | dependencies: 988 | '@jridgewell/sourcemap-codec': 1.4.15 989 | 990 | /mdn-data@2.0.30: 991 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 992 | 993 | /merge2@1.4.1: 994 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 995 | engines: {node: '>= 8'} 996 | dev: true 997 | 998 | /micromatch@4.0.5: 999 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1000 | engines: {node: '>=8.6'} 1001 | dependencies: 1002 | braces: 3.0.2 1003 | picomatch: 2.3.1 1004 | dev: true 1005 | 1006 | /min-indent@1.0.1: 1007 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1008 | engines: {node: '>=4'} 1009 | dev: true 1010 | 1011 | /minimatch@3.1.2: 1012 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1013 | dependencies: 1014 | brace-expansion: 1.1.11 1015 | dev: true 1016 | 1017 | /minimatch@9.0.3: 1018 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 1019 | engines: {node: '>=16 || 14 >=14.17'} 1020 | dependencies: 1021 | brace-expansion: 2.0.1 1022 | dev: true 1023 | 1024 | /minimist@1.2.8: 1025 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1026 | dev: true 1027 | 1028 | /minipass@7.0.4: 1029 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 1030 | engines: {node: '>=16 || 14 >=14.17'} 1031 | dev: true 1032 | 1033 | /mkdirp@0.5.6: 1034 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1035 | hasBin: true 1036 | dependencies: 1037 | minimist: 1.2.8 1038 | dev: true 1039 | 1040 | /mri@1.2.0: 1041 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1042 | engines: {node: '>=4'} 1043 | dev: true 1044 | 1045 | /ms@2.1.2: 1046 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1047 | dev: true 1048 | 1049 | /mz@2.7.0: 1050 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1051 | dependencies: 1052 | any-promise: 1.3.0 1053 | object-assign: 4.1.1 1054 | thenify-all: 1.6.0 1055 | dev: true 1056 | 1057 | /nanoid@3.3.7: 1058 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1059 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1060 | hasBin: true 1061 | dev: true 1062 | 1063 | /node-releases@2.0.14: 1064 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 1065 | dev: true 1066 | 1067 | /normalize-path@3.0.0: 1068 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1069 | engines: {node: '>=0.10.0'} 1070 | dev: true 1071 | 1072 | /normalize-range@0.1.2: 1073 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1074 | engines: {node: '>=0.10.0'} 1075 | dev: true 1076 | 1077 | /object-assign@4.1.1: 1078 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1079 | engines: {node: '>=0.10.0'} 1080 | dev: true 1081 | 1082 | /object-hash@3.0.0: 1083 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1084 | engines: {node: '>= 6'} 1085 | dev: true 1086 | 1087 | /once@1.4.0: 1088 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1089 | dependencies: 1090 | wrappy: 1.0.2 1091 | dev: true 1092 | 1093 | /parent-module@1.0.1: 1094 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1095 | engines: {node: '>=6'} 1096 | dependencies: 1097 | callsites: 3.1.0 1098 | dev: true 1099 | 1100 | /path-is-absolute@1.0.1: 1101 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1102 | engines: {node: '>=0.10.0'} 1103 | dev: true 1104 | 1105 | /path-key@3.1.1: 1106 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1107 | engines: {node: '>=8'} 1108 | dev: true 1109 | 1110 | /path-parse@1.0.7: 1111 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1112 | dev: true 1113 | 1114 | /path-scurry@1.10.1: 1115 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 1116 | engines: {node: '>=16 || 14 >=14.17'} 1117 | dependencies: 1118 | lru-cache: 10.2.0 1119 | minipass: 7.0.4 1120 | dev: true 1121 | 1122 | /periscopic@3.1.0: 1123 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 1124 | dependencies: 1125 | '@types/estree': 1.0.5 1126 | estree-walker: 3.0.3 1127 | is-reference: 3.0.2 1128 | 1129 | /picocolors@1.0.0: 1130 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1131 | dev: true 1132 | 1133 | /picomatch@2.3.1: 1134 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1135 | engines: {node: '>=8.6'} 1136 | dev: true 1137 | 1138 | /pify@2.3.0: 1139 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1140 | engines: {node: '>=0.10.0'} 1141 | dev: true 1142 | 1143 | /pirates@4.0.6: 1144 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1145 | engines: {node: '>= 6'} 1146 | dev: true 1147 | 1148 | /postcss-import@15.1.0(postcss@8.4.33): 1149 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1150 | engines: {node: '>=14.0.0'} 1151 | peerDependencies: 1152 | postcss: ^8.0.0 1153 | dependencies: 1154 | postcss: 8.4.33 1155 | postcss-value-parser: 4.2.0 1156 | read-cache: 1.0.0 1157 | resolve: 1.22.8 1158 | dev: true 1159 | 1160 | /postcss-js@4.0.1(postcss@8.4.33): 1161 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1162 | engines: {node: ^12 || ^14 || >= 16} 1163 | peerDependencies: 1164 | postcss: ^8.4.21 1165 | dependencies: 1166 | camelcase-css: 2.0.1 1167 | postcss: 8.4.33 1168 | dev: true 1169 | 1170 | /postcss-load-config@4.0.2(postcss@8.4.33): 1171 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1172 | engines: {node: '>= 14'} 1173 | peerDependencies: 1174 | postcss: '>=8.0.9' 1175 | ts-node: '>=9.0.0' 1176 | peerDependenciesMeta: 1177 | postcss: 1178 | optional: true 1179 | ts-node: 1180 | optional: true 1181 | dependencies: 1182 | lilconfig: 3.0.0 1183 | postcss: 8.4.33 1184 | yaml: 2.3.4 1185 | dev: true 1186 | 1187 | /postcss-nested@6.0.1(postcss@8.4.33): 1188 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 1189 | engines: {node: '>=12.0'} 1190 | peerDependencies: 1191 | postcss: ^8.2.14 1192 | dependencies: 1193 | postcss: 8.4.33 1194 | postcss-selector-parser: 6.0.15 1195 | dev: true 1196 | 1197 | /postcss-selector-parser@6.0.15: 1198 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 1199 | engines: {node: '>=4'} 1200 | dependencies: 1201 | cssesc: 3.0.0 1202 | util-deprecate: 1.0.2 1203 | dev: true 1204 | 1205 | /postcss-value-parser@4.2.0: 1206 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1207 | dev: true 1208 | 1209 | /postcss@8.4.33: 1210 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 1211 | engines: {node: ^10 || ^12 || >=14} 1212 | dependencies: 1213 | nanoid: 3.3.7 1214 | picocolors: 1.0.0 1215 | source-map-js: 1.0.2 1216 | dev: true 1217 | 1218 | /queue-microtask@1.2.3: 1219 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1220 | dev: true 1221 | 1222 | /read-cache@1.0.0: 1223 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1224 | dependencies: 1225 | pify: 2.3.0 1226 | dev: true 1227 | 1228 | /readdirp@3.6.0: 1229 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1230 | engines: {node: '>=8.10.0'} 1231 | dependencies: 1232 | picomatch: 2.3.1 1233 | dev: true 1234 | 1235 | /resolve-from@4.0.0: 1236 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1237 | engines: {node: '>=4'} 1238 | dev: true 1239 | 1240 | /resolve@1.22.8: 1241 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1242 | hasBin: true 1243 | dependencies: 1244 | is-core-module: 2.13.1 1245 | path-parse: 1.0.7 1246 | supports-preserve-symlinks-flag: 1.0.0 1247 | dev: true 1248 | 1249 | /reusify@1.0.4: 1250 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1251 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1252 | dev: true 1253 | 1254 | /rimraf@2.7.1: 1255 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1256 | hasBin: true 1257 | dependencies: 1258 | glob: 7.2.3 1259 | dev: true 1260 | 1261 | /rollup@4.9.6: 1262 | resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} 1263 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1264 | hasBin: true 1265 | dependencies: 1266 | '@types/estree': 1.0.5 1267 | optionalDependencies: 1268 | '@rollup/rollup-android-arm-eabi': 4.9.6 1269 | '@rollup/rollup-android-arm64': 4.9.6 1270 | '@rollup/rollup-darwin-arm64': 4.9.6 1271 | '@rollup/rollup-darwin-x64': 4.9.6 1272 | '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 1273 | '@rollup/rollup-linux-arm64-gnu': 4.9.6 1274 | '@rollup/rollup-linux-arm64-musl': 4.9.6 1275 | '@rollup/rollup-linux-riscv64-gnu': 4.9.6 1276 | '@rollup/rollup-linux-x64-gnu': 4.9.6 1277 | '@rollup/rollup-linux-x64-musl': 4.9.6 1278 | '@rollup/rollup-win32-arm64-msvc': 4.9.6 1279 | '@rollup/rollup-win32-ia32-msvc': 4.9.6 1280 | '@rollup/rollup-win32-x64-msvc': 4.9.6 1281 | fsevents: 2.3.3 1282 | dev: true 1283 | 1284 | /run-parallel@1.2.0: 1285 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1286 | dependencies: 1287 | queue-microtask: 1.2.3 1288 | dev: true 1289 | 1290 | /sade@1.8.1: 1291 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1292 | engines: {node: '>=6'} 1293 | dependencies: 1294 | mri: 1.2.0 1295 | dev: true 1296 | 1297 | /sander@0.5.1: 1298 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1299 | dependencies: 1300 | es6-promise: 3.3.1 1301 | graceful-fs: 4.2.11 1302 | mkdirp: 0.5.6 1303 | rimraf: 2.7.1 1304 | dev: true 1305 | 1306 | /shebang-command@2.0.0: 1307 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1308 | engines: {node: '>=8'} 1309 | dependencies: 1310 | shebang-regex: 3.0.0 1311 | dev: true 1312 | 1313 | /shebang-regex@3.0.0: 1314 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1315 | engines: {node: '>=8'} 1316 | dev: true 1317 | 1318 | /signal-exit@4.1.0: 1319 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1320 | engines: {node: '>=14'} 1321 | dev: true 1322 | 1323 | /sorcery@0.11.0: 1324 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 1325 | hasBin: true 1326 | dependencies: 1327 | '@jridgewell/sourcemap-codec': 1.4.15 1328 | buffer-crc32: 0.2.13 1329 | minimist: 1.2.8 1330 | sander: 0.5.1 1331 | dev: true 1332 | 1333 | /source-map-js@1.0.2: 1334 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1335 | engines: {node: '>=0.10.0'} 1336 | 1337 | /string-width@4.2.3: 1338 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1339 | engines: {node: '>=8'} 1340 | dependencies: 1341 | emoji-regex: 8.0.0 1342 | is-fullwidth-code-point: 3.0.0 1343 | strip-ansi: 6.0.1 1344 | dev: true 1345 | 1346 | /string-width@5.1.2: 1347 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1348 | engines: {node: '>=12'} 1349 | dependencies: 1350 | eastasianwidth: 0.2.0 1351 | emoji-regex: 9.2.2 1352 | strip-ansi: 7.1.0 1353 | dev: true 1354 | 1355 | /strip-ansi@6.0.1: 1356 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1357 | engines: {node: '>=8'} 1358 | dependencies: 1359 | ansi-regex: 5.0.1 1360 | dev: true 1361 | 1362 | /strip-ansi@7.1.0: 1363 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1364 | engines: {node: '>=12'} 1365 | dependencies: 1366 | ansi-regex: 6.0.1 1367 | dev: true 1368 | 1369 | /strip-indent@3.0.0: 1370 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1371 | engines: {node: '>=8'} 1372 | dependencies: 1373 | min-indent: 1.0.1 1374 | dev: true 1375 | 1376 | /sucrase@3.35.0: 1377 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1378 | engines: {node: '>=16 || 14 >=14.17'} 1379 | hasBin: true 1380 | dependencies: 1381 | '@jridgewell/gen-mapping': 0.3.3 1382 | commander: 4.1.1 1383 | glob: 10.3.10 1384 | lines-and-columns: 1.2.4 1385 | mz: 2.7.0 1386 | pirates: 4.0.6 1387 | ts-interface-checker: 0.1.13 1388 | dev: true 1389 | 1390 | /supports-preserve-symlinks-flag@1.0.0: 1391 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1392 | engines: {node: '>= 0.4'} 1393 | dev: true 1394 | 1395 | /svelte-check@3.6.2(postcss@8.4.33)(svelte@4.2.8): 1396 | resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} 1397 | hasBin: true 1398 | peerDependencies: 1399 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 1400 | dependencies: 1401 | '@jridgewell/trace-mapping': 0.3.22 1402 | chokidar: 3.5.3 1403 | fast-glob: 3.3.2 1404 | import-fresh: 3.3.0 1405 | picocolors: 1.0.0 1406 | sade: 1.8.1 1407 | svelte: 4.2.8 1408 | svelte-preprocess: 5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.2.2) 1409 | typescript: 5.2.2 1410 | transitivePeerDependencies: 1411 | - '@babel/core' 1412 | - coffeescript 1413 | - less 1414 | - postcss 1415 | - postcss-load-config 1416 | - pug 1417 | - sass 1418 | - stylus 1419 | - sugarss 1420 | dev: true 1421 | 1422 | /svelte-dnd-action@0.9.38(svelte@4.2.8): 1423 | resolution: {integrity: sha512-L80YR+aknn54LmjPKFELYGDkZhed5ReBzH2xe61zFNGfQyoeXbFB1hs69QWgBIYufZPWUhAiVXIMhP7UQWs1dw==} 1424 | peerDependencies: 1425 | svelte: '>=3.23.0' 1426 | dependencies: 1427 | svelte: 4.2.8 1428 | dev: true 1429 | 1430 | /svelte-hmr@0.15.3(svelte@4.2.8): 1431 | resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} 1432 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1433 | peerDependencies: 1434 | svelte: ^3.19.0 || ^4.0.0 1435 | dependencies: 1436 | svelte: 4.2.8 1437 | dev: true 1438 | 1439 | /svelte-preprocess@5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.2.2): 1440 | resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} 1441 | engines: {node: '>= 16.0.0', pnpm: ^8.0.0} 1442 | requiresBuild: true 1443 | peerDependencies: 1444 | '@babel/core': ^7.10.2 1445 | coffeescript: ^2.5.1 1446 | less: ^3.11.3 || ^4.0.0 1447 | postcss: ^7 || ^8 1448 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 1449 | pug: ^3.0.0 1450 | sass: ^1.26.8 1451 | stylus: ^0.55.0 1452 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 1453 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 1454 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 1455 | peerDependenciesMeta: 1456 | '@babel/core': 1457 | optional: true 1458 | coffeescript: 1459 | optional: true 1460 | less: 1461 | optional: true 1462 | postcss: 1463 | optional: true 1464 | postcss-load-config: 1465 | optional: true 1466 | pug: 1467 | optional: true 1468 | sass: 1469 | optional: true 1470 | stylus: 1471 | optional: true 1472 | sugarss: 1473 | optional: true 1474 | typescript: 1475 | optional: true 1476 | dependencies: 1477 | '@types/pug': 2.0.10 1478 | detect-indent: 6.1.0 1479 | magic-string: 0.30.5 1480 | postcss: 8.4.33 1481 | sorcery: 0.11.0 1482 | strip-indent: 3.0.0 1483 | svelte: 4.2.8 1484 | typescript: 5.2.2 1485 | dev: true 1486 | 1487 | /svelte@4.2.8: 1488 | resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==} 1489 | engines: {node: '>=16'} 1490 | dependencies: 1491 | '@ampproject/remapping': 2.2.1 1492 | '@jridgewell/sourcemap-codec': 1.4.15 1493 | '@jridgewell/trace-mapping': 0.3.22 1494 | acorn: 8.11.3 1495 | aria-query: 5.3.0 1496 | axobject-query: 3.2.1 1497 | code-red: 1.0.4 1498 | css-tree: 2.3.1 1499 | estree-walker: 3.0.3 1500 | is-reference: 3.0.2 1501 | locate-character: 3.0.0 1502 | magic-string: 0.30.5 1503 | periscopic: 3.1.0 1504 | 1505 | /tailwindcss@3.4.1: 1506 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 1507 | engines: {node: '>=14.0.0'} 1508 | hasBin: true 1509 | dependencies: 1510 | '@alloc/quick-lru': 5.2.0 1511 | arg: 5.0.2 1512 | chokidar: 3.5.3 1513 | didyoumean: 1.2.2 1514 | dlv: 1.1.3 1515 | fast-glob: 3.3.2 1516 | glob-parent: 6.0.2 1517 | is-glob: 4.0.3 1518 | jiti: 1.21.0 1519 | lilconfig: 2.1.0 1520 | micromatch: 4.0.5 1521 | normalize-path: 3.0.0 1522 | object-hash: 3.0.0 1523 | picocolors: 1.0.0 1524 | postcss: 8.4.33 1525 | postcss-import: 15.1.0(postcss@8.4.33) 1526 | postcss-js: 4.0.1(postcss@8.4.33) 1527 | postcss-load-config: 4.0.2(postcss@8.4.33) 1528 | postcss-nested: 6.0.1(postcss@8.4.33) 1529 | postcss-selector-parser: 6.0.15 1530 | resolve: 1.22.8 1531 | sucrase: 3.35.0 1532 | transitivePeerDependencies: 1533 | - ts-node 1534 | dev: true 1535 | 1536 | /thenify-all@1.6.0: 1537 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1538 | engines: {node: '>=0.8'} 1539 | dependencies: 1540 | thenify: 3.3.1 1541 | dev: true 1542 | 1543 | /thenify@3.3.1: 1544 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1545 | dependencies: 1546 | any-promise: 1.3.0 1547 | dev: true 1548 | 1549 | /to-regex-range@5.0.1: 1550 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1551 | engines: {node: '>=8.0'} 1552 | dependencies: 1553 | is-number: 7.0.0 1554 | dev: true 1555 | 1556 | /ts-interface-checker@0.1.13: 1557 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1558 | dev: true 1559 | 1560 | /tslib@2.6.2: 1561 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1562 | dev: true 1563 | 1564 | /typescript@5.2.2: 1565 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 1566 | engines: {node: '>=14.17'} 1567 | hasBin: true 1568 | dev: true 1569 | 1570 | /update-browserslist-db@1.0.13(browserslist@4.22.3): 1571 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 1572 | hasBin: true 1573 | peerDependencies: 1574 | browserslist: '>= 4.21.0' 1575 | dependencies: 1576 | browserslist: 4.22.3 1577 | escalade: 3.1.1 1578 | picocolors: 1.0.0 1579 | dev: true 1580 | 1581 | /util-deprecate@1.0.2: 1582 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1583 | dev: true 1584 | 1585 | /vite@5.0.8: 1586 | resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} 1587 | engines: {node: ^18.0.0 || >=20.0.0} 1588 | hasBin: true 1589 | peerDependencies: 1590 | '@types/node': ^18.0.0 || >=20.0.0 1591 | less: '*' 1592 | lightningcss: ^1.21.0 1593 | sass: '*' 1594 | stylus: '*' 1595 | sugarss: '*' 1596 | terser: ^5.4.0 1597 | peerDependenciesMeta: 1598 | '@types/node': 1599 | optional: true 1600 | less: 1601 | optional: true 1602 | lightningcss: 1603 | optional: true 1604 | sass: 1605 | optional: true 1606 | stylus: 1607 | optional: true 1608 | sugarss: 1609 | optional: true 1610 | terser: 1611 | optional: true 1612 | dependencies: 1613 | esbuild: 0.19.12 1614 | postcss: 8.4.33 1615 | rollup: 4.9.6 1616 | optionalDependencies: 1617 | fsevents: 2.3.3 1618 | dev: true 1619 | 1620 | /vitefu@0.2.5(vite@5.0.8): 1621 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} 1622 | peerDependencies: 1623 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 1624 | peerDependenciesMeta: 1625 | vite: 1626 | optional: true 1627 | dependencies: 1628 | vite: 5.0.8 1629 | dev: true 1630 | 1631 | /which@2.0.2: 1632 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1633 | engines: {node: '>= 8'} 1634 | hasBin: true 1635 | dependencies: 1636 | isexe: 2.0.0 1637 | dev: true 1638 | 1639 | /wrap-ansi@7.0.0: 1640 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1641 | engines: {node: '>=10'} 1642 | dependencies: 1643 | ansi-styles: 4.3.0 1644 | string-width: 4.2.3 1645 | strip-ansi: 6.0.1 1646 | dev: true 1647 | 1648 | /wrap-ansi@8.1.0: 1649 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1650 | engines: {node: '>=12'} 1651 | dependencies: 1652 | ansi-styles: 6.2.1 1653 | string-width: 5.1.2 1654 | strip-ansi: 7.1.0 1655 | dev: true 1656 | 1657 | /wrappy@1.0.2: 1658 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1659 | dev: true 1660 | 1661 | /yaml@2.3.4: 1662 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 1663 | engines: {node: '>= 14'} 1664 | dev: true 1665 | -------------------------------------------------------------------------------- /web/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /web/src/App.svelte: -------------------------------------------------------------------------------- 1 | 37 | 38 | {#if openTracker} 39 |
40 |
41 |
42 |
43 |

🚧 um-error-tracker version?

44 | 45 |
46 |
47 | 48 |
49 |
50 |
51 |
52 | {/if} 53 | -------------------------------------------------------------------------------- /web/src/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 7 | line-height: 1.5; 8 | font-weight: 400; 9 | color: rgba(255, 255, 255, 0.87); 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | user-select: none; 15 | 16 | --errors: #c35555; 17 | --warnings: #d9a13b; 18 | --updates: #1fa989; 19 | --fixed: #46a943; 20 | --fxmanifest: #b3b3b3; 21 | --inprogress: #a93795 22 | } 23 | 24 | .bg-color { 25 | background-color: #2a2b2f; 26 | } 27 | .box { 28 | background-color: #24262c; 29 | width: 22rem; 30 | height: 17rem; 31 | } 32 | .card-color { 33 | background-color: #32353d; 34 | } 35 | .column-content::-webkit-scrollbar { 36 | display: none; 37 | } 38 | .column-content { 39 | height: 10rem; 40 | overflow-y: scroll; 41 | } 42 | .errors-class { 43 | color: var(--errors); 44 | } 45 | .warnings-class { 46 | color: var(--warnings); 47 | } 48 | .updates-class { 49 | color: var(--updates); 50 | } 51 | .fixed-class { 52 | color: var(--fixed); 53 | } 54 | .fxmanifest-class { 55 | color: var(--fxmanifest); 56 | } 57 | .inprogress-class { 58 | color: var(--inprogress); 59 | } 60 | .errors-bg { 61 | background-color: var(--errors); 62 | } 63 | .warnings-bg { 64 | background-color: var(--warnings); 65 | } 66 | .updates-bg { 67 | background-color: var(--updates); 68 | } 69 | .fixed-bg { 70 | background-color: var(--fixed); 71 | } 72 | .fxmanifest-bg { 73 | background-color: var(--fxmanifest); 74 | } 75 | .inprogress-bg { 76 | background-color: var(--inprogress); 77 | } 78 | -------------------------------------------------------------------------------- /web/src/lib/TrackerBoard.svelte: -------------------------------------------------------------------------------- 1 | 63 | 64 | {#if updateTrackerTable} 65 | {#each $board as column (column.id)} 66 |
67 |

{column.name} {column.items.length}

68 | 69 |
handleDndConsiderCards(column.id, e)} 72 | on:finalize={(e) => handleDndFinalizeCards(column.id, e)} 73 | > 74 | {#if column.items.length !== 0} 75 | {#each column.items as item (item.id)} 76 |
77 | 78 | {regExpEscape(item.name)} 79 |
80 | {/each} 81 | {:else} 82 |
no data
83 | {/if} 84 |
85 | 86 |
87 | {/each} 88 | {:else} 89 |
90 |

loading..

91 |
92 | {/if} -------------------------------------------------------------------------------- /web/src/main.ts: -------------------------------------------------------------------------------- 1 | import './app.css' 2 | import App from './App.svelte' 3 | 4 | const app = new App({ 5 | target: document.getElementById('app'), 6 | }) 7 | 8 | export default app 9 | -------------------------------------------------------------------------------- /web/src/store/boardStore.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store'; 2 | 3 | interface Item { 4 | id: number; 5 | name: string; 6 | } 7 | 8 | interface Column { 9 | id: number; 10 | name: string; 11 | description?: string; 12 | items: Item[]; 13 | } 14 | 15 | type Board = Column[]; 16 | 17 | const initialBoard: Board = [ 18 | { 19 | id: 1, 20 | name: "errors", 21 | items: [] 22 | }, 23 | { 24 | id: 2, 25 | name: "warnings", 26 | items: [] 27 | }, 28 | { 29 | id: 3, 30 | name: "updates", 31 | items: [] 32 | }, 33 | { 34 | id: 4, 35 | name: "fxmanifest", 36 | items: [] 37 | }, 38 | { 39 | id: 5, 40 | name: "inprogress", 41 | items: [] 42 | }, 43 | { 44 | id: 6, 45 | name: "fixed", 46 | items: [] 47 | }, 48 | ]; 49 | 50 | export const board = writable(initialBoard); 51 | -------------------------------------------------------------------------------- /web/src/utils/ReceiveNUI.ts: -------------------------------------------------------------------------------- 1 | import { onMount, onDestroy } from "svelte"; 2 | 3 | interface NuiMessage { 4 | type: string; 5 | data: T; 6 | } 7 | 8 | /** 9 | * A function that manage events listeners for receiving data from the client scripts 10 | * @param type The specific `type` that should be listened for. 11 | * @param handler The callback function that will handle data relayed by this function 12 | * 13 | * @example 14 | * useNuiEvent<{VISIBILITY: true, wasVisible: 'something'}>('setVisible', (data) => { 15 | * // whatever logic you want 16 | * }) 17 | * 18 | **/ 19 | 20 | export function ReceiveNUI( 21 | type: string, 22 | handler: (data: T) => void 23 | ) { 24 | const eventListener = (event: MessageEvent>) => { 25 | const { type: eventAction, data } = event.data; 26 | 27 | eventAction === type && handler(data); 28 | }; 29 | onMount(() => window.addEventListener("message", eventListener)); 30 | onDestroy(() => window.removeEventListener("message", eventListener)); 31 | } -------------------------------------------------------------------------------- /web/src/utils/SendNUI.ts: -------------------------------------------------------------------------------- 1 | export async function SendNUI(eventName: string, data?: any): Promise { 2 | const options = { 3 | method: 'post', 4 | headers: { 5 | 'Content-Type': 'application/json; charset=UTF-8', 6 | }, 7 | body: JSON.stringify(data), 8 | }; 9 | 10 | const resourceName = (window as any).GetParentResourceName 11 | ? (window as any).GetParentResourceName() 12 | : 'nui-frame-app'; 13 | 14 | const resp = await fetch(`https://${resourceName}/${eventName}`, options); 15 | 16 | const respFormatted = await resp.json(); 17 | 18 | return respFormatted; 19 | } -------------------------------------------------------------------------------- /web/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /web/svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | } 8 | -------------------------------------------------------------------------------- /web/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ['./src/**/*.{html,js,svelte,ts}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | } 9 | 10 | -------------------------------------------------------------------------------- /web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | /** 9 | * Typecheck JS in `.svelte` and `.js` files by default. 10 | * Disable checkJs if you'd like to use dynamic types in JS. 11 | * Note that setting allowJs false does not prevent the use 12 | * of JS in `.svelte` files. 13 | */ 14 | "allowJs": true, 15 | "checkJs": true, 16 | "isolatedModules": true 17 | }, 18 | "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], 19 | "references": [{ "path": "./tsconfig.node.json" }] 20 | } 21 | -------------------------------------------------------------------------------- /web/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler" 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /web/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { svelte } from '@sveltejs/vite-plugin-svelte' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [svelte()], 7 | base: './', 8 | build: { 9 | outDir: 'build', 10 | }, 11 | }) 12 | --------------------------------------------------------------------------------