├── .github └── workflows │ └── project.yml ├── .gitignore ├── LICENSE ├── README.md ├── image-1.png ├── index.js ├── output └── .gitignore ├── package-lock.json ├── package.json ├── util.js ├── writeSummaryByModuleToCSV.js ├── writeSummaryToCSV.js └── writeToCSV.js /.github/workflows/project.yml: -------------------------------------------------------------------------------- 1 | name: Add issues to LA project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | add-to-project: 10 | name: Add issue to project 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/add-to-project@v0.3.0 14 | with: 15 | # You can target a repository in a different organization 16 | # to the issue 17 | project-url: https://github.com/orgs/ubc/projects/7 18 | github-token: ${{ secrets.ADD_TO_PROJECT_LA }} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | output.csv 2 | .env 3 | node_modules 4 | .DS_Store -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) 2 | 3 | > 💡 If you are teaching at the University of British Columbia, you may also be interested in the tool `Threadz` which provides visualizations and data from your Canvas discussion forums through a user interface in Canvas. You can learn more about the tool and how to request access in your course from the [LTHub Instructor Guide](https://lthub.ubc.ca/guides/threadz-instructor-guide/). `Threadz` was developed by Eastern Washington University. 4 | 5 | # Canvas Discussion 6 | 7 | ### Data 8 | > `{course_id}-discussion.csv` 9 | 10 | This project pulls data via the Canvas API the discussions for the specified Canvas course(s) and exports the results as CSV. The columns exported are: 11 | * 'topic_id', 12 | * 'topic_title', 13 | * 'topic_message', 14 | * 'topic_author_id', 15 | * 'topic_author_name', 16 | * 'topic_created_at', 17 | * 'topic_posted_at', 18 | * 'post_author_id', 19 | * 'post_author_name', 20 | * 'post_id', 21 | * 'post_parent_id', 22 | * 'post_message', 23 | * 'post_likes', 24 | * 'post_timestamp' 25 | 26 | Where a `topic` corresponds to a `discussion_topic` and `post` refers to all replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. 27 | 28 | ### Summary Data 29 | > `{course_id}-discussion-summary.csv` 30 | 31 | We have calculated summary metrics for each topic. The csv with the summary information includes the following columns: 32 | * 'topic_id', 33 | * 'topic_title', 34 | * 'topic_author_id', 35 | * 'topic_author_name', 36 | * 'topic_created_at', 37 | * 'topic_posted_at', 38 | * 'number_of_posts': the total number of posts and replies in the topic 39 | * 'median_posts_word_count': the median word count for all posts and replies to the topic 40 | * 'average_time_to_post_hours': the average time to post or reply from the topic created_at date 41 | * 'first_reply_timestamp': the timestamp of the first post 42 | * 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) 43 | * 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) 44 | 45 | Where a `post` is a response to a topic, and a `reply` is a reply to the post. 46 | 47 | ![alt text](image-1.png) 48 | 49 | > `{course_id}-module-discussion-summary.csv` 50 | 51 | We have calculated summary metrics at the level of `module` where there are multiple discussion topics. This is optional (see .env creation above) The csv with the summary information includes the following columns: 52 | * 'module_id', 53 | * 'module_name', 54 | * 'module_unlock_at': assuming the course uses an unlock_at date this will be used to calculate, 55 | * 'number_of_posts': the total number of posts and replies in the module 56 | * 'median_posts_word_count': the median word count for all posts and replies to the module topics 57 | * 'average_time_to_post_hours': the average time to post or reply from the module_unlock_at date 58 | * 'first_reply_timestamp': the timestamp of the first post 59 | * 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) 60 | * 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) 61 | 62 | 63 | ## Getting Started 64 | These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. 65 | 66 | ### Prerequisites 67 | 68 | 1. **Install [Node 10 or greater](https://nodejs.org)**. 69 | 1. **Install [Git](https://git-scm.com/downloads)**. 70 | 71 | ### Installation and execution of script 72 | 73 | 1. Clone this repo. `git clone https://github.com/ubccapico/canvas-discussion.git` 74 | 1. Then cd into the repo. `cd canvas-discussion` 75 | 1. Run the installation script. `npm install` (If you see `babel-node: command not found`, you've missed this step.) 76 | 1. Generate Canvas API token and copy it to clipboard 77 | > - See [Get Started with the Canvas API](https://learninganalytics.ubc.ca/guides/get-started-with-the-canvas-api/) for more information. 78 | > - ⚠️ Your Canvas API token is the equivalent to your username and password and must be treated as such (following any security guidelines of your home institution). 79 | 1. Create a `.env` file. 80 | 1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. > - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` 81 | > - At another institution it might be something like `https://{school}.instructure.com/api/v1` 82 | 1. Add `INCLUDE_MODULE_SUMMARY=true` (or `INCLUDE_MODULE_SUMMARY=false`) to indicate whether you would like to include a summary grouped by module. If this is not in the .env it will default to false and no module summary will be created. 83 | 84 | Your .env file should look like 85 | ``` 86 | CANVAS_API_TOKEN=22322... 87 | CANVAS_API_DOMAIN=https://ubc.instructure.com/api/v1 88 | COURSE_IDS=1111,1112 89 | INCLUDE_MODULE_SUMMARY=false 90 | ``` 91 | 1. Run the script. `npm start`. 92 | 1. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id. If you have set `INCLUDE_MODULE_SUMMARY` to `true` then you will also see a file `{course_id}-module-discussion-summary.csv`. 93 | 94 | ## Authors 95 | 96 | * [justin0022](https://github.com/justin0022) - 97 | **Justin Lee** <justin.lee@ubc.ca> 98 | 99 | ## License 100 | 101 | This project is licensed under the GNU General Public License v3.0. 102 | -------------------------------------------------------------------------------- /image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ubc/canvas-discussion/38317b7883a10469c5c450ffa2dd4225ecc65cbb/image-1.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const capi = require('node-canvas-api') 2 | const { flatten } = require('./util') 3 | const writeToCSV = require('./writeToCSV') 4 | const writeSummaryToCSV = require('./writeSummaryToCSV') 5 | const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') 6 | require('dotenv').config() 7 | 8 | const envVariableWarning = (msg) => { 9 | console.info(msg) 10 | } 11 | const envVariableError = (msg) => { 12 | console.error(msg) 13 | process.exit(1) 14 | 15 | } 16 | const checkEnvVariable = (varName, errMsg) => { 17 | if (!process.env[varName]) { 18 | if (varName === 'INCLUDE_MODULE_SUMMARY') { 19 | envVariableWarning(errMsg) 20 | } else { 21 | envVariableError(`Error: ${errMsg}. See README for an example.env`) 22 | } 23 | } 24 | } 25 | 26 | checkEnvVariable('COURSE_IDS', 'COURSE_IDS environment variable is not defined.') 27 | checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. Define and set to `true` to include summary at module.') 28 | checkEnvVariable('CANVAS_API_TOKEN', 'CANVAS_API_TOKEN environment variable is not defined. You need a token to run this script.') 29 | checkEnvVariable('CANVAS_API_DOMAIN', 'CANVAS_API_DOMAIN environment variable is not defined.') 30 | 31 | const getDiscussionTopicIds = courseId => capi.getDiscussionTopics(courseId) 32 | .then(discussions => discussions.map(x => x.id)) 33 | 34 | // recursively get nested replies and flatten result 35 | const getNestedReplies = (replyObj, participants, topicId) => { 36 | const replies = replyObj.hasOwnProperty('replies') 37 | ? flatten( 38 | replyObj.replies.map(replyObj => getNestedReplies(replyObj, participants)) 39 | ) : [] 40 | const authorName = participants.find(x => x.id === replyObj.user_id) 41 | ? participants.find(x => x.id === replyObj.user_id).display_name 42 | : '' 43 | 44 | return [{ 45 | postAuthorId: replyObj.user_id, 46 | postAuthorName: authorName, 47 | postMessage: replyObj.message, 48 | postLikes: replyObj.rating_sum || 0, 49 | postTimestamp: new Date(replyObj.created_at), 50 | postParentId: replyObj.parent_id || '', 51 | postId: replyObj.id 52 | }, ...replies] 53 | } 54 | 55 | const getDiscussionsAndTopics = async (courseId, topicIds) => { 56 | const fetchDetails = topicId => Promise.all([ 57 | capi.getFullDiscussion(courseId, topicId), 58 | capi.getDiscussionTopic(courseId, topicId), 59 | ]) 60 | 61 | const discussionsAndTopics = await Promise.all( 62 | topicIds.map(async topicId => { 63 | const [discussion, topic] = await fetchDetails(topicId) 64 | return { discussion, topic } 65 | }) 66 | ) 67 | 68 | return discussionsAndTopics 69 | } 70 | 71 | const processDiscussionTopic = ({ discussion, topic }) => { 72 | const topicId = topic.id 73 | const topicTitle = topic.title 74 | const topicMessage = topic.message 75 | const author = topic.author 76 | const topicCreatedAt = topic.created_at ? new Date(topic.created_at) : null 77 | const topicPostedAt = topic.posted_at ? new Date(topic.posted_at) : null 78 | const participants = discussion.participants 79 | const replies = discussion.view.length > 0 80 | ? discussion.view 81 | .filter(x => !x.deleted) 82 | .map(reply => getNestedReplies(reply, participants, topicId)) 83 | : [] 84 | 85 | return { 86 | topicId, 87 | topicTitle, 88 | topicMessage, 89 | topicAuthorId: author.id || '', // the topic author id can be null 90 | topicAuthorName: author.display_name || '', // the topic author can be null 91 | topicCreatedAt, 92 | topicPostedAt, 93 | replies 94 | } 95 | } 96 | 97 | const getDiscussions = async courseId => { 98 | const discussionTopicIds = await getDiscussionTopicIds(courseId) 99 | const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionTopicIds) 100 | 101 | return discussionsAndTopics.map(processDiscussionTopic) 102 | } 103 | 104 | 105 | const getPublishedModuleDiscussions = async courseId => { 106 | 107 | const modules = await capi.getModules(courseId) 108 | 109 | const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { 110 | const items = await capi.getModuleItems(courseId, module.id) 111 | const discussionItems = items.filter(item => item.type === "Discussion" && item.published) 112 | 113 | const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) 114 | const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) 115 | 116 | const discussionItemWithDiscussionData = discussionItems.map(discussionItem => { 117 | const discussionAndReplies = processedDiscussions.find(d => d.topicId === discussionItem.content_id) 118 | return { 119 | ...discussionItem, 120 | discussionAndReplies 121 | } 122 | }) 123 | 124 | return { 125 | ...module, 126 | discussionItems: discussionItemWithDiscussionData 127 | } 128 | })) 129 | 130 | return modulesWithDiscussionItems 131 | 132 | } 133 | 134 | const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) 135 | const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false 136 | 137 | Promise.all( 138 | courseIds.map(courseId => { 139 | const basePromise = getDiscussions(courseId).then(discussions => 140 | Promise.all([ 141 | writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV 142 | writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV 143 | ]) 144 | ) 145 | 146 | const additionalPromise = returnSummaryByModule 147 | ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => 148 | writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV 149 | ) 150 | : Promise.resolve() // No additional operation if condition is false 151 | 152 | return Promise.all([basePromise, additionalPromise]) 153 | }) 154 | ).catch(error => { 155 | console.error('Error processing discussions and modules:', error.message || `An unexpected error occurred: ${error}`) 156 | }) -------------------------------------------------------------------------------- /output/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "canvas-discussion", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "canvas-discussion", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "dotenv": "^16.4.5", 13 | "luxon": "^3.5.0", 14 | "node-canvas-api": "^1.7.0", 15 | "standard": "^12.0.1" 16 | } 17 | }, 18 | "node_modules/acorn": { 19 | "version": "6.4.2", 20 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", 21 | "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", 22 | "license": "MIT", 23 | "bin": { 24 | "acorn": "bin/acorn" 25 | }, 26 | "engines": { 27 | "node": ">=0.4.0" 28 | } 29 | }, 30 | "node_modules/acorn-jsx": { 31 | "version": "5.3.2", 32 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 33 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 34 | "license": "MIT", 35 | "peerDependencies": { 36 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 37 | } 38 | }, 39 | "node_modules/ajv": { 40 | "version": "6.12.6", 41 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 42 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 43 | "license": "MIT", 44 | "dependencies": { 45 | "fast-deep-equal": "^3.1.1", 46 | "fast-json-stable-stringify": "^2.0.0", 47 | "json-schema-traverse": "^0.4.1", 48 | "uri-js": "^4.2.2" 49 | }, 50 | "funding": { 51 | "type": "github", 52 | "url": "https://github.com/sponsors/epoberezkin" 53 | } 54 | }, 55 | "node_modules/ajv-keywords": { 56 | "version": "3.5.2", 57 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 58 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 59 | "license": "MIT", 60 | "peerDependencies": { 61 | "ajv": "^6.9.1" 62 | } 63 | }, 64 | "node_modules/ansi-escapes": { 65 | "version": "3.2.0", 66 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 67 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 68 | "license": "MIT", 69 | "engines": { 70 | "node": ">=4" 71 | } 72 | }, 73 | "node_modules/ansi-regex": { 74 | "version": "3.0.1", 75 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 76 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", 77 | "license": "MIT", 78 | "engines": { 79 | "node": ">=4" 80 | } 81 | }, 82 | "node_modules/argparse": { 83 | "version": "1.0.10", 84 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 85 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 86 | "license": "MIT", 87 | "dependencies": { 88 | "sprintf-js": "~1.0.2" 89 | } 90 | }, 91 | "node_modules/array-buffer-byte-length": { 92 | "version": "1.0.1", 93 | "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", 94 | "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", 95 | "license": "MIT", 96 | "dependencies": { 97 | "call-bind": "^1.0.5", 98 | "is-array-buffer": "^3.0.4" 99 | }, 100 | "engines": { 101 | "node": ">= 0.4" 102 | }, 103 | "funding": { 104 | "url": "https://github.com/sponsors/ljharb" 105 | } 106 | }, 107 | "node_modules/array-includes": { 108 | "version": "3.1.8", 109 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", 110 | "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", 111 | "license": "MIT", 112 | "dependencies": { 113 | "call-bind": "^1.0.7", 114 | "define-properties": "^1.2.1", 115 | "es-abstract": "^1.23.2", 116 | "es-object-atoms": "^1.0.0", 117 | "get-intrinsic": "^1.2.4", 118 | "is-string": "^1.0.7" 119 | }, 120 | "engines": { 121 | "node": ">= 0.4" 122 | }, 123 | "funding": { 124 | "url": "https://github.com/sponsors/ljharb" 125 | } 126 | }, 127 | "node_modules/arraybuffer.prototype.slice": { 128 | "version": "1.0.3", 129 | "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", 130 | "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", 131 | "license": "MIT", 132 | "dependencies": { 133 | "array-buffer-byte-length": "^1.0.1", 134 | "call-bind": "^1.0.5", 135 | "define-properties": "^1.2.1", 136 | "es-abstract": "^1.22.3", 137 | "es-errors": "^1.2.1", 138 | "get-intrinsic": "^1.2.3", 139 | "is-array-buffer": "^3.0.4", 140 | "is-shared-array-buffer": "^1.0.2" 141 | }, 142 | "engines": { 143 | "node": ">= 0.4" 144 | }, 145 | "funding": { 146 | "url": "https://github.com/sponsors/ljharb" 147 | } 148 | }, 149 | "node_modules/asn1": { 150 | "version": "0.2.6", 151 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 152 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 153 | "license": "MIT", 154 | "dependencies": { 155 | "safer-buffer": "~2.1.0" 156 | } 157 | }, 158 | "node_modules/assert-plus": { 159 | "version": "1.0.0", 160 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 161 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 162 | "license": "MIT", 163 | "engines": { 164 | "node": ">=0.8" 165 | } 166 | }, 167 | "node_modules/asynckit": { 168 | "version": "0.4.0", 169 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 170 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 171 | "license": "MIT" 172 | }, 173 | "node_modules/available-typed-arrays": { 174 | "version": "1.0.7", 175 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", 176 | "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", 177 | "license": "MIT", 178 | "dependencies": { 179 | "possible-typed-array-names": "^1.0.0" 180 | }, 181 | "engines": { 182 | "node": ">= 0.4" 183 | }, 184 | "funding": { 185 | "url": "https://github.com/sponsors/ljharb" 186 | } 187 | }, 188 | "node_modules/aws-sign2": { 189 | "version": "0.7.0", 190 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 191 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 192 | "license": "Apache-2.0", 193 | "engines": { 194 | "node": "*" 195 | } 196 | }, 197 | "node_modules/aws4": { 198 | "version": "1.13.2", 199 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", 200 | "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", 201 | "license": "MIT" 202 | }, 203 | "node_modules/babel-code-frame": { 204 | "version": "6.26.0", 205 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 206 | "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", 207 | "license": "MIT", 208 | "dependencies": { 209 | "chalk": "^1.1.3", 210 | "esutils": "^2.0.2", 211 | "js-tokens": "^3.0.2" 212 | } 213 | }, 214 | "node_modules/babel-code-frame/node_modules/ansi-regex": { 215 | "version": "2.1.1", 216 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 217 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 218 | "license": "MIT", 219 | "engines": { 220 | "node": ">=0.10.0" 221 | } 222 | }, 223 | "node_modules/babel-code-frame/node_modules/ansi-styles": { 224 | "version": "2.2.1", 225 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 226 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 227 | "license": "MIT", 228 | "engines": { 229 | "node": ">=0.10.0" 230 | } 231 | }, 232 | "node_modules/babel-code-frame/node_modules/chalk": { 233 | "version": "1.1.3", 234 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 235 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 236 | "license": "MIT", 237 | "dependencies": { 238 | "ansi-styles": "^2.2.1", 239 | "escape-string-regexp": "^1.0.2", 240 | "has-ansi": "^2.0.0", 241 | "strip-ansi": "^3.0.0", 242 | "supports-color": "^2.0.0" 243 | }, 244 | "engines": { 245 | "node": ">=0.10.0" 246 | } 247 | }, 248 | "node_modules/babel-code-frame/node_modules/strip-ansi": { 249 | "version": "3.0.1", 250 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 251 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 252 | "license": "MIT", 253 | "dependencies": { 254 | "ansi-regex": "^2.0.0" 255 | }, 256 | "engines": { 257 | "node": ">=0.10.0" 258 | } 259 | }, 260 | "node_modules/babel-code-frame/node_modules/supports-color": { 261 | "version": "2.0.0", 262 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 263 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 264 | "license": "MIT", 265 | "engines": { 266 | "node": ">=0.8.0" 267 | } 268 | }, 269 | "node_modules/balanced-match": { 270 | "version": "1.0.2", 271 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 272 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 273 | "license": "MIT" 274 | }, 275 | "node_modules/bcrypt-pbkdf": { 276 | "version": "1.0.2", 277 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 278 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 279 | "license": "BSD-3-Clause", 280 | "dependencies": { 281 | "tweetnacl": "^0.14.3" 282 | } 283 | }, 284 | "node_modules/bluebird": { 285 | "version": "3.7.2", 286 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 287 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 288 | "license": "MIT" 289 | }, 290 | "node_modules/bottleneck": { 291 | "version": "2.19.5", 292 | "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", 293 | "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", 294 | "license": "MIT" 295 | }, 296 | "node_modules/brace-expansion": { 297 | "version": "1.1.11", 298 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 299 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 300 | "license": "MIT", 301 | "dependencies": { 302 | "balanced-match": "^1.0.0", 303 | "concat-map": "0.0.1" 304 | } 305 | }, 306 | "node_modules/call-bind": { 307 | "version": "1.0.7", 308 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", 309 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", 310 | "license": "MIT", 311 | "dependencies": { 312 | "es-define-property": "^1.0.0", 313 | "es-errors": "^1.3.0", 314 | "function-bind": "^1.1.2", 315 | "get-intrinsic": "^1.2.4", 316 | "set-function-length": "^1.2.1" 317 | }, 318 | "engines": { 319 | "node": ">= 0.4" 320 | }, 321 | "funding": { 322 | "url": "https://github.com/sponsors/ljharb" 323 | } 324 | }, 325 | "node_modules/caller-path": { 326 | "version": "0.1.0", 327 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 328 | "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", 329 | "license": "MIT", 330 | "dependencies": { 331 | "callsites": "^0.2.0" 332 | }, 333 | "engines": { 334 | "node": ">=0.10.0" 335 | } 336 | }, 337 | "node_modules/callsites": { 338 | "version": "0.2.0", 339 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 340 | "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", 341 | "license": "MIT", 342 | "engines": { 343 | "node": ">=0.10.0" 344 | } 345 | }, 346 | "node_modules/caseless": { 347 | "version": "0.12.0", 348 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 349 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", 350 | "license": "Apache-2.0" 351 | }, 352 | "node_modules/chardet": { 353 | "version": "0.4.2", 354 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 355 | "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", 356 | "license": "MIT" 357 | }, 358 | "node_modules/circular-json": { 359 | "version": "0.3.3", 360 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 361 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 362 | "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", 363 | "license": "MIT" 364 | }, 365 | "node_modules/cli-cursor": { 366 | "version": "2.1.0", 367 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 368 | "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", 369 | "license": "MIT", 370 | "dependencies": { 371 | "restore-cursor": "^2.0.0" 372 | }, 373 | "engines": { 374 | "node": ">=4" 375 | } 376 | }, 377 | "node_modules/cli-width": { 378 | "version": "2.2.1", 379 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 380 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", 381 | "license": "ISC" 382 | }, 383 | "node_modules/combined-stream": { 384 | "version": "1.0.8", 385 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 386 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 387 | "license": "MIT", 388 | "dependencies": { 389 | "delayed-stream": "~1.0.0" 390 | }, 391 | "engines": { 392 | "node": ">= 0.8" 393 | } 394 | }, 395 | "node_modules/concat-map": { 396 | "version": "0.0.1", 397 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 398 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 399 | "license": "MIT" 400 | }, 401 | "node_modules/config": { 402 | "version": "1.31.0", 403 | "resolved": "https://registry.npmjs.org/config/-/config-1.31.0.tgz", 404 | "integrity": "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==", 405 | "license": "MIT", 406 | "dependencies": { 407 | "json5": "^1.0.1" 408 | }, 409 | "engines": { 410 | "node": ">= 4.0.0" 411 | } 412 | }, 413 | "node_modules/contains-path": { 414 | "version": "0.1.0", 415 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 416 | "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", 417 | "license": "MIT", 418 | "engines": { 419 | "node": ">=0.10.0" 420 | } 421 | }, 422 | "node_modules/core-util-is": { 423 | "version": "1.0.2", 424 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 425 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 426 | "license": "MIT" 427 | }, 428 | "node_modules/cross-spawn": { 429 | "version": "6.0.5", 430 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 431 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 432 | "license": "MIT", 433 | "dependencies": { 434 | "nice-try": "^1.0.4", 435 | "path-key": "^2.0.1", 436 | "semver": "^5.5.0", 437 | "shebang-command": "^1.2.0", 438 | "which": "^1.2.9" 439 | }, 440 | "engines": { 441 | "node": ">=4.8" 442 | } 443 | }, 444 | "node_modules/dashdash": { 445 | "version": "1.14.1", 446 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 447 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 448 | "license": "MIT", 449 | "dependencies": { 450 | "assert-plus": "^1.0.0" 451 | }, 452 | "engines": { 453 | "node": ">=0.10" 454 | } 455 | }, 456 | "node_modules/data-view-buffer": { 457 | "version": "1.0.1", 458 | "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", 459 | "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", 460 | "license": "MIT", 461 | "dependencies": { 462 | "call-bind": "^1.0.6", 463 | "es-errors": "^1.3.0", 464 | "is-data-view": "^1.0.1" 465 | }, 466 | "engines": { 467 | "node": ">= 0.4" 468 | }, 469 | "funding": { 470 | "url": "https://github.com/sponsors/ljharb" 471 | } 472 | }, 473 | "node_modules/data-view-byte-length": { 474 | "version": "1.0.1", 475 | "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", 476 | "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", 477 | "license": "MIT", 478 | "dependencies": { 479 | "call-bind": "^1.0.7", 480 | "es-errors": "^1.3.0", 481 | "is-data-view": "^1.0.1" 482 | }, 483 | "engines": { 484 | "node": ">= 0.4" 485 | }, 486 | "funding": { 487 | "url": "https://github.com/sponsors/ljharb" 488 | } 489 | }, 490 | "node_modules/data-view-byte-offset": { 491 | "version": "1.0.0", 492 | "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", 493 | "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", 494 | "license": "MIT", 495 | "dependencies": { 496 | "call-bind": "^1.0.6", 497 | "es-errors": "^1.3.0", 498 | "is-data-view": "^1.0.1" 499 | }, 500 | "engines": { 501 | "node": ">= 0.4" 502 | }, 503 | "funding": { 504 | "url": "https://github.com/sponsors/ljharb" 505 | } 506 | }, 507 | "node_modules/debug-log": { 508 | "version": "1.0.1", 509 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", 510 | "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", 511 | "license": "MIT", 512 | "engines": { 513 | "node": ">=0.10.0" 514 | } 515 | }, 516 | "node_modules/deep-is": { 517 | "version": "0.1.4", 518 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 519 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 520 | "license": "MIT" 521 | }, 522 | "node_modules/define-data-property": { 523 | "version": "1.1.4", 524 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 525 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 526 | "license": "MIT", 527 | "dependencies": { 528 | "es-define-property": "^1.0.0", 529 | "es-errors": "^1.3.0", 530 | "gopd": "^1.0.1" 531 | }, 532 | "engines": { 533 | "node": ">= 0.4" 534 | }, 535 | "funding": { 536 | "url": "https://github.com/sponsors/ljharb" 537 | } 538 | }, 539 | "node_modules/define-properties": { 540 | "version": "1.2.1", 541 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 542 | "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 543 | "license": "MIT", 544 | "dependencies": { 545 | "define-data-property": "^1.0.1", 546 | "has-property-descriptors": "^1.0.0", 547 | "object-keys": "^1.1.1" 548 | }, 549 | "engines": { 550 | "node": ">= 0.4" 551 | }, 552 | "funding": { 553 | "url": "https://github.com/sponsors/ljharb" 554 | } 555 | }, 556 | "node_modules/deglob": { 557 | "version": "2.1.1", 558 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", 559 | "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", 560 | "license": "ISC", 561 | "dependencies": { 562 | "find-root": "^1.0.0", 563 | "glob": "^7.0.5", 564 | "ignore": "^3.0.9", 565 | "pkg-config": "^1.1.0", 566 | "run-parallel": "^1.1.2", 567 | "uniq": "^1.0.1" 568 | } 569 | }, 570 | "node_modules/deglob/node_modules/ignore": { 571 | "version": "3.3.10", 572 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 573 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 574 | "license": "MIT" 575 | }, 576 | "node_modules/delayed-stream": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 579 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 580 | "license": "MIT", 581 | "engines": { 582 | "node": ">=0.4.0" 583 | } 584 | }, 585 | "node_modules/doctrine": { 586 | "version": "2.1.0", 587 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 588 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 589 | "license": "Apache-2.0", 590 | "dependencies": { 591 | "esutils": "^2.0.2" 592 | }, 593 | "engines": { 594 | "node": ">=0.10.0" 595 | } 596 | }, 597 | "node_modules/dotenv": { 598 | "version": "16.4.5", 599 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", 600 | "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", 601 | "license": "BSD-2-Clause", 602 | "engines": { 603 | "node": ">=12" 604 | }, 605 | "funding": { 606 | "url": "https://dotenvx.com" 607 | } 608 | }, 609 | "node_modules/ecc-jsbn": { 610 | "version": "0.1.2", 611 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 612 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 613 | "license": "MIT", 614 | "dependencies": { 615 | "jsbn": "~0.1.0", 616 | "safer-buffer": "^2.1.0" 617 | } 618 | }, 619 | "node_modules/error-ex": { 620 | "version": "1.3.2", 621 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 622 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 623 | "license": "MIT", 624 | "dependencies": { 625 | "is-arrayish": "^0.2.1" 626 | } 627 | }, 628 | "node_modules/es-abstract": { 629 | "version": "1.23.3", 630 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", 631 | "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", 632 | "license": "MIT", 633 | "dependencies": { 634 | "array-buffer-byte-length": "^1.0.1", 635 | "arraybuffer.prototype.slice": "^1.0.3", 636 | "available-typed-arrays": "^1.0.7", 637 | "call-bind": "^1.0.7", 638 | "data-view-buffer": "^1.0.1", 639 | "data-view-byte-length": "^1.0.1", 640 | "data-view-byte-offset": "^1.0.0", 641 | "es-define-property": "^1.0.0", 642 | "es-errors": "^1.3.0", 643 | "es-object-atoms": "^1.0.0", 644 | "es-set-tostringtag": "^2.0.3", 645 | "es-to-primitive": "^1.2.1", 646 | "function.prototype.name": "^1.1.6", 647 | "get-intrinsic": "^1.2.4", 648 | "get-symbol-description": "^1.0.2", 649 | "globalthis": "^1.0.3", 650 | "gopd": "^1.0.1", 651 | "has-property-descriptors": "^1.0.2", 652 | "has-proto": "^1.0.3", 653 | "has-symbols": "^1.0.3", 654 | "hasown": "^2.0.2", 655 | "internal-slot": "^1.0.7", 656 | "is-array-buffer": "^3.0.4", 657 | "is-callable": "^1.2.7", 658 | "is-data-view": "^1.0.1", 659 | "is-negative-zero": "^2.0.3", 660 | "is-regex": "^1.1.4", 661 | "is-shared-array-buffer": "^1.0.3", 662 | "is-string": "^1.0.7", 663 | "is-typed-array": "^1.1.13", 664 | "is-weakref": "^1.0.2", 665 | "object-inspect": "^1.13.1", 666 | "object-keys": "^1.1.1", 667 | "object.assign": "^4.1.5", 668 | "regexp.prototype.flags": "^1.5.2", 669 | "safe-array-concat": "^1.1.2", 670 | "safe-regex-test": "^1.0.3", 671 | "string.prototype.trim": "^1.2.9", 672 | "string.prototype.trimend": "^1.0.8", 673 | "string.prototype.trimstart": "^1.0.8", 674 | "typed-array-buffer": "^1.0.2", 675 | "typed-array-byte-length": "^1.0.1", 676 | "typed-array-byte-offset": "^1.0.2", 677 | "typed-array-length": "^1.0.6", 678 | "unbox-primitive": "^1.0.2", 679 | "which-typed-array": "^1.1.15" 680 | }, 681 | "engines": { 682 | "node": ">= 0.4" 683 | }, 684 | "funding": { 685 | "url": "https://github.com/sponsors/ljharb" 686 | } 687 | }, 688 | "node_modules/es-define-property": { 689 | "version": "1.0.0", 690 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", 691 | "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", 692 | "license": "MIT", 693 | "dependencies": { 694 | "get-intrinsic": "^1.2.4" 695 | }, 696 | "engines": { 697 | "node": ">= 0.4" 698 | } 699 | }, 700 | "node_modules/es-errors": { 701 | "version": "1.3.0", 702 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 703 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 704 | "license": "MIT", 705 | "engines": { 706 | "node": ">= 0.4" 707 | } 708 | }, 709 | "node_modules/es-object-atoms": { 710 | "version": "1.0.0", 711 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", 712 | "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", 713 | "license": "MIT", 714 | "dependencies": { 715 | "es-errors": "^1.3.0" 716 | }, 717 | "engines": { 718 | "node": ">= 0.4" 719 | } 720 | }, 721 | "node_modules/es-set-tostringtag": { 722 | "version": "2.0.3", 723 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", 724 | "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", 725 | "license": "MIT", 726 | "dependencies": { 727 | "get-intrinsic": "^1.2.4", 728 | "has-tostringtag": "^1.0.2", 729 | "hasown": "^2.0.1" 730 | }, 731 | "engines": { 732 | "node": ">= 0.4" 733 | } 734 | }, 735 | "node_modules/es-to-primitive": { 736 | "version": "1.2.1", 737 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 738 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 739 | "license": "MIT", 740 | "dependencies": { 741 | "is-callable": "^1.1.4", 742 | "is-date-object": "^1.0.1", 743 | "is-symbol": "^1.0.2" 744 | }, 745 | "engines": { 746 | "node": ">= 0.4" 747 | }, 748 | "funding": { 749 | "url": "https://github.com/sponsors/ljharb" 750 | } 751 | }, 752 | "node_modules/escape-string-regexp": { 753 | "version": "1.0.5", 754 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 755 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 756 | "license": "MIT", 757 | "engines": { 758 | "node": ">=0.8.0" 759 | } 760 | }, 761 | "node_modules/eslint": { 762 | "version": "5.4.0", 763 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", 764 | "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", 765 | "license": "MIT", 766 | "dependencies": { 767 | "ajv": "^6.5.0", 768 | "babel-code-frame": "^6.26.0", 769 | "chalk": "^2.1.0", 770 | "cross-spawn": "^6.0.5", 771 | "debug": "^3.1.0", 772 | "doctrine": "^2.1.0", 773 | "eslint-scope": "^4.0.0", 774 | "eslint-utils": "^1.3.1", 775 | "eslint-visitor-keys": "^1.0.0", 776 | "espree": "^4.0.0", 777 | "esquery": "^1.0.1", 778 | "esutils": "^2.0.2", 779 | "file-entry-cache": "^2.0.0", 780 | "functional-red-black-tree": "^1.0.1", 781 | "glob": "^7.1.2", 782 | "globals": "^11.7.0", 783 | "ignore": "^4.0.2", 784 | "imurmurhash": "^0.1.4", 785 | "inquirer": "^5.2.0", 786 | "is-resolvable": "^1.1.0", 787 | "js-yaml": "^3.11.0", 788 | "json-stable-stringify-without-jsonify": "^1.0.1", 789 | "levn": "^0.3.0", 790 | "lodash": "^4.17.5", 791 | "minimatch": "^3.0.4", 792 | "mkdirp": "^0.5.1", 793 | "natural-compare": "^1.4.0", 794 | "optionator": "^0.8.2", 795 | "path-is-inside": "^1.0.2", 796 | "pluralize": "^7.0.0", 797 | "progress": "^2.0.0", 798 | "regexpp": "^2.0.0", 799 | "require-uncached": "^1.0.3", 800 | "semver": "^5.5.0", 801 | "strip-ansi": "^4.0.0", 802 | "strip-json-comments": "^2.0.1", 803 | "table": "^4.0.3", 804 | "text-table": "^0.2.0" 805 | }, 806 | "bin": { 807 | "eslint": "bin/eslint.js" 808 | }, 809 | "engines": { 810 | "node": "^6.14.0 || ^8.10.0 || >=9.10.0" 811 | } 812 | }, 813 | "node_modules/eslint-config-standard": { 814 | "version": "12.0.0", 815 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", 816 | "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", 817 | "license": "MIT", 818 | "peerDependencies": { 819 | "eslint": ">=5.0.0", 820 | "eslint-plugin-import": ">=2.13.0", 821 | "eslint-plugin-node": ">=7.0.0", 822 | "eslint-plugin-promise": ">=4.0.0", 823 | "eslint-plugin-standard": ">=4.0.0" 824 | } 825 | }, 826 | "node_modules/eslint-config-standard-jsx": { 827 | "version": "6.0.2", 828 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", 829 | "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", 830 | "license": "MIT", 831 | "peerDependencies": { 832 | "eslint": ">=5.0.0", 833 | "eslint-plugin-react": ">=7.11.1" 834 | } 835 | }, 836 | "node_modules/eslint-import-resolver-node": { 837 | "version": "0.3.9", 838 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", 839 | "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", 840 | "license": "MIT", 841 | "dependencies": { 842 | "debug": "^3.2.7", 843 | "is-core-module": "^2.13.0", 844 | "resolve": "^1.22.4" 845 | } 846 | }, 847 | "node_modules/eslint-import-resolver-node/node_modules/debug": { 848 | "version": "3.2.7", 849 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 850 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 851 | "license": "MIT", 852 | "dependencies": { 853 | "ms": "^2.1.1" 854 | } 855 | }, 856 | "node_modules/eslint-module-utils": { 857 | "version": "2.11.0", 858 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", 859 | "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", 860 | "license": "MIT", 861 | "dependencies": { 862 | "debug": "^3.2.7" 863 | }, 864 | "engines": { 865 | "node": ">=4" 866 | }, 867 | "peerDependenciesMeta": { 868 | "eslint": { 869 | "optional": true 870 | } 871 | } 872 | }, 873 | "node_modules/eslint-module-utils/node_modules/debug": { 874 | "version": "3.2.7", 875 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 876 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 877 | "license": "MIT", 878 | "dependencies": { 879 | "ms": "^2.1.1" 880 | } 881 | }, 882 | "node_modules/eslint-plugin-es": { 883 | "version": "1.4.1", 884 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", 885 | "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", 886 | "license": "MIT", 887 | "dependencies": { 888 | "eslint-utils": "^1.4.2", 889 | "regexpp": "^2.0.1" 890 | }, 891 | "engines": { 892 | "node": ">=6.5.0" 893 | }, 894 | "peerDependencies": { 895 | "eslint": ">=4.19.1" 896 | } 897 | }, 898 | "node_modules/eslint-plugin-import": { 899 | "version": "2.14.0", 900 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", 901 | "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", 902 | "license": "MIT", 903 | "dependencies": { 904 | "contains-path": "^0.1.0", 905 | "debug": "^2.6.8", 906 | "doctrine": "1.5.0", 907 | "eslint-import-resolver-node": "^0.3.1", 908 | "eslint-module-utils": "^2.2.0", 909 | "has": "^1.0.1", 910 | "lodash": "^4.17.4", 911 | "minimatch": "^3.0.3", 912 | "read-pkg-up": "^2.0.0", 913 | "resolve": "^1.6.0" 914 | }, 915 | "engines": { 916 | "node": ">=4" 917 | }, 918 | "peerDependencies": { 919 | "eslint": "2.x - 5.x" 920 | } 921 | }, 922 | "node_modules/eslint-plugin-import/node_modules/debug": { 923 | "version": "2.6.9", 924 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 925 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 926 | "license": "MIT", 927 | "dependencies": { 928 | "ms": "2.0.0" 929 | } 930 | }, 931 | "node_modules/eslint-plugin-import/node_modules/doctrine": { 932 | "version": "1.5.0", 933 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 934 | "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", 935 | "dependencies": { 936 | "esutils": "^2.0.2", 937 | "isarray": "^1.0.0" 938 | }, 939 | "engines": { 940 | "node": ">=0.10.0" 941 | } 942 | }, 943 | "node_modules/eslint-plugin-import/node_modules/isarray": { 944 | "version": "1.0.0", 945 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 946 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 947 | "license": "MIT" 948 | }, 949 | "node_modules/eslint-plugin-import/node_modules/ms": { 950 | "version": "2.0.0", 951 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 952 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 953 | "license": "MIT" 954 | }, 955 | "node_modules/eslint-plugin-node": { 956 | "version": "7.0.1", 957 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", 958 | "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", 959 | "license": "MIT", 960 | "dependencies": { 961 | "eslint-plugin-es": "^1.3.1", 962 | "eslint-utils": "^1.3.1", 963 | "ignore": "^4.0.2", 964 | "minimatch": "^3.0.4", 965 | "resolve": "^1.8.1", 966 | "semver": "^5.5.0" 967 | }, 968 | "engines": { 969 | "node": ">=6" 970 | }, 971 | "peerDependencies": { 972 | "eslint": ">=4.19.1" 973 | } 974 | }, 975 | "node_modules/eslint-plugin-promise": { 976 | "version": "4.0.1", 977 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", 978 | "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", 979 | "license": "ISC", 980 | "engines": { 981 | "node": ">=6" 982 | } 983 | }, 984 | "node_modules/eslint-plugin-react": { 985 | "version": "7.11.1", 986 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", 987 | "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", 988 | "license": "MIT", 989 | "dependencies": { 990 | "array-includes": "^3.0.3", 991 | "doctrine": "^2.1.0", 992 | "has": "^1.0.3", 993 | "jsx-ast-utils": "^2.0.1", 994 | "prop-types": "^15.6.2" 995 | }, 996 | "engines": { 997 | "node": ">=4" 998 | }, 999 | "peerDependencies": { 1000 | "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" 1001 | } 1002 | }, 1003 | "node_modules/eslint-plugin-standard": { 1004 | "version": "4.0.2", 1005 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", 1006 | "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", 1007 | "funding": [ 1008 | { 1009 | "type": "github", 1010 | "url": "https://github.com/sponsors/feross" 1011 | }, 1012 | { 1013 | "type": "patreon", 1014 | "url": "https://www.patreon.com/feross" 1015 | }, 1016 | { 1017 | "type": "consulting", 1018 | "url": "https://feross.org/support" 1019 | } 1020 | ], 1021 | "license": "MIT", 1022 | "peerDependencies": { 1023 | "eslint": ">=5.0.0" 1024 | } 1025 | }, 1026 | "node_modules/eslint-scope": { 1027 | "version": "4.0.3", 1028 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 1029 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 1030 | "license": "BSD-2-Clause", 1031 | "dependencies": { 1032 | "esrecurse": "^4.1.0", 1033 | "estraverse": "^4.1.1" 1034 | }, 1035 | "engines": { 1036 | "node": ">=4.0.0" 1037 | } 1038 | }, 1039 | "node_modules/eslint-utils": { 1040 | "version": "1.4.3", 1041 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 1042 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 1043 | "license": "MIT", 1044 | "dependencies": { 1045 | "eslint-visitor-keys": "^1.1.0" 1046 | }, 1047 | "engines": { 1048 | "node": ">=6" 1049 | } 1050 | }, 1051 | "node_modules/eslint-visitor-keys": { 1052 | "version": "1.3.0", 1053 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1054 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1055 | "license": "Apache-2.0", 1056 | "engines": { 1057 | "node": ">=4" 1058 | } 1059 | }, 1060 | "node_modules/eslint/node_modules/ansi-styles": { 1061 | "version": "3.2.1", 1062 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1063 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1064 | "license": "MIT", 1065 | "dependencies": { 1066 | "color-convert": "^1.9.0" 1067 | }, 1068 | "engines": { 1069 | "node": ">=4" 1070 | } 1071 | }, 1072 | "node_modules/eslint/node_modules/chalk": { 1073 | "version": "2.4.2", 1074 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1075 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1076 | "license": "MIT", 1077 | "dependencies": { 1078 | "ansi-styles": "^3.2.1", 1079 | "escape-string-regexp": "^1.0.5", 1080 | "supports-color": "^5.3.0" 1081 | }, 1082 | "engines": { 1083 | "node": ">=4" 1084 | } 1085 | }, 1086 | "node_modules/eslint/node_modules/color-convert": { 1087 | "version": "1.9.3", 1088 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1089 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1090 | "license": "MIT", 1091 | "dependencies": { 1092 | "color-name": "1.1.3" 1093 | } 1094 | }, 1095 | "node_modules/eslint/node_modules/color-name": { 1096 | "version": "1.1.3", 1097 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1098 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1099 | "license": "MIT" 1100 | }, 1101 | "node_modules/eslint/node_modules/debug": { 1102 | "version": "3.2.7", 1103 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1104 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1105 | "license": "MIT", 1106 | "dependencies": { 1107 | "ms": "^2.1.1" 1108 | } 1109 | }, 1110 | "node_modules/eslint/node_modules/has-flag": { 1111 | "version": "3.0.0", 1112 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1113 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1114 | "license": "MIT", 1115 | "engines": { 1116 | "node": ">=4" 1117 | } 1118 | }, 1119 | "node_modules/eslint/node_modules/supports-color": { 1120 | "version": "5.5.0", 1121 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1122 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1123 | "license": "MIT", 1124 | "dependencies": { 1125 | "has-flag": "^3.0.0" 1126 | }, 1127 | "engines": { 1128 | "node": ">=4" 1129 | } 1130 | }, 1131 | "node_modules/espree": { 1132 | "version": "4.1.0", 1133 | "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", 1134 | "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", 1135 | "license": "BSD-2-Clause", 1136 | "dependencies": { 1137 | "acorn": "^6.0.2", 1138 | "acorn-jsx": "^5.0.0", 1139 | "eslint-visitor-keys": "^1.0.0" 1140 | }, 1141 | "engines": { 1142 | "node": ">=6.0.0" 1143 | } 1144 | }, 1145 | "node_modules/esprima": { 1146 | "version": "4.0.1", 1147 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1148 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1149 | "license": "BSD-2-Clause", 1150 | "bin": { 1151 | "esparse": "bin/esparse.js", 1152 | "esvalidate": "bin/esvalidate.js" 1153 | }, 1154 | "engines": { 1155 | "node": ">=4" 1156 | } 1157 | }, 1158 | "node_modules/esquery": { 1159 | "version": "1.6.0", 1160 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1161 | "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1162 | "license": "BSD-3-Clause", 1163 | "dependencies": { 1164 | "estraverse": "^5.1.0" 1165 | }, 1166 | "engines": { 1167 | "node": ">=0.10" 1168 | } 1169 | }, 1170 | "node_modules/esquery/node_modules/estraverse": { 1171 | "version": "5.3.0", 1172 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1173 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1174 | "license": "BSD-2-Clause", 1175 | "engines": { 1176 | "node": ">=4.0" 1177 | } 1178 | }, 1179 | "node_modules/esrecurse": { 1180 | "version": "4.3.0", 1181 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1182 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1183 | "license": "BSD-2-Clause", 1184 | "dependencies": { 1185 | "estraverse": "^5.2.0" 1186 | }, 1187 | "engines": { 1188 | "node": ">=4.0" 1189 | } 1190 | }, 1191 | "node_modules/esrecurse/node_modules/estraverse": { 1192 | "version": "5.3.0", 1193 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1194 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1195 | "license": "BSD-2-Clause", 1196 | "engines": { 1197 | "node": ">=4.0" 1198 | } 1199 | }, 1200 | "node_modules/estraverse": { 1201 | "version": "4.3.0", 1202 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1203 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1204 | "license": "BSD-2-Clause", 1205 | "engines": { 1206 | "node": ">=4.0" 1207 | } 1208 | }, 1209 | "node_modules/esutils": { 1210 | "version": "2.0.3", 1211 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1212 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1213 | "license": "BSD-2-Clause", 1214 | "engines": { 1215 | "node": ">=0.10.0" 1216 | } 1217 | }, 1218 | "node_modules/extend": { 1219 | "version": "3.0.2", 1220 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1221 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1222 | "license": "MIT" 1223 | }, 1224 | "node_modules/external-editor": { 1225 | "version": "2.2.0", 1226 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", 1227 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", 1228 | "license": "MIT", 1229 | "dependencies": { 1230 | "chardet": "^0.4.0", 1231 | "iconv-lite": "^0.4.17", 1232 | "tmp": "^0.0.33" 1233 | }, 1234 | "engines": { 1235 | "node": ">=0.12" 1236 | } 1237 | }, 1238 | "node_modules/extsprintf": { 1239 | "version": "1.3.0", 1240 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 1241 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 1242 | "engines": [ 1243 | "node >=0.6.0" 1244 | ], 1245 | "license": "MIT" 1246 | }, 1247 | "node_modules/fast-deep-equal": { 1248 | "version": "3.1.3", 1249 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1250 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1251 | "license": "MIT" 1252 | }, 1253 | "node_modules/fast-json-stable-stringify": { 1254 | "version": "2.1.0", 1255 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1256 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1257 | "license": "MIT" 1258 | }, 1259 | "node_modules/fast-levenshtein": { 1260 | "version": "2.0.6", 1261 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1262 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1263 | "license": "MIT" 1264 | }, 1265 | "node_modules/figures": { 1266 | "version": "2.0.0", 1267 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1268 | "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", 1269 | "license": "MIT", 1270 | "dependencies": { 1271 | "escape-string-regexp": "^1.0.5" 1272 | }, 1273 | "engines": { 1274 | "node": ">=4" 1275 | } 1276 | }, 1277 | "node_modules/file-entry-cache": { 1278 | "version": "2.0.0", 1279 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1280 | "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", 1281 | "license": "MIT", 1282 | "dependencies": { 1283 | "flat-cache": "^1.2.1", 1284 | "object-assign": "^4.0.1" 1285 | }, 1286 | "engines": { 1287 | "node": ">=0.10.0" 1288 | } 1289 | }, 1290 | "node_modules/find-root": { 1291 | "version": "1.1.0", 1292 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 1293 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", 1294 | "license": "MIT" 1295 | }, 1296 | "node_modules/find-up": { 1297 | "version": "2.1.0", 1298 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1299 | "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", 1300 | "license": "MIT", 1301 | "dependencies": { 1302 | "locate-path": "^2.0.0" 1303 | }, 1304 | "engines": { 1305 | "node": ">=4" 1306 | } 1307 | }, 1308 | "node_modules/flat-cache": { 1309 | "version": "1.3.4", 1310 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", 1311 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", 1312 | "license": "MIT", 1313 | "dependencies": { 1314 | "circular-json": "^0.3.1", 1315 | "graceful-fs": "^4.1.2", 1316 | "rimraf": "~2.6.2", 1317 | "write": "^0.2.1" 1318 | }, 1319 | "engines": { 1320 | "node": ">=0.10.0" 1321 | } 1322 | }, 1323 | "node_modules/for-each": { 1324 | "version": "0.3.3", 1325 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 1326 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 1327 | "license": "MIT", 1328 | "dependencies": { 1329 | "is-callable": "^1.1.3" 1330 | } 1331 | }, 1332 | "node_modules/forever-agent": { 1333 | "version": "0.6.1", 1334 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1335 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 1336 | "license": "Apache-2.0", 1337 | "engines": { 1338 | "node": "*" 1339 | } 1340 | }, 1341 | "node_modules/form-data": { 1342 | "version": "2.3.3", 1343 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 1344 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 1345 | "license": "MIT", 1346 | "dependencies": { 1347 | "asynckit": "^0.4.0", 1348 | "combined-stream": "^1.0.6", 1349 | "mime-types": "^2.1.12" 1350 | }, 1351 | "engines": { 1352 | "node": ">= 0.12" 1353 | } 1354 | }, 1355 | "node_modules/fs.realpath": { 1356 | "version": "1.0.0", 1357 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1358 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1359 | "license": "ISC" 1360 | }, 1361 | "node_modules/function-bind": { 1362 | "version": "1.1.2", 1363 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1364 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1365 | "license": "MIT", 1366 | "funding": { 1367 | "url": "https://github.com/sponsors/ljharb" 1368 | } 1369 | }, 1370 | "node_modules/function.prototype.name": { 1371 | "version": "1.1.6", 1372 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", 1373 | "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", 1374 | "license": "MIT", 1375 | "dependencies": { 1376 | "call-bind": "^1.0.2", 1377 | "define-properties": "^1.2.0", 1378 | "es-abstract": "^1.22.1", 1379 | "functions-have-names": "^1.2.3" 1380 | }, 1381 | "engines": { 1382 | "node": ">= 0.4" 1383 | }, 1384 | "funding": { 1385 | "url": "https://github.com/sponsors/ljharb" 1386 | } 1387 | }, 1388 | "node_modules/functional-red-black-tree": { 1389 | "version": "1.0.1", 1390 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1391 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 1392 | "license": "MIT" 1393 | }, 1394 | "node_modules/functions-have-names": { 1395 | "version": "1.2.3", 1396 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1397 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 1398 | "license": "MIT", 1399 | "funding": { 1400 | "url": "https://github.com/sponsors/ljharb" 1401 | } 1402 | }, 1403 | "node_modules/get-intrinsic": { 1404 | "version": "1.2.4", 1405 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", 1406 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", 1407 | "license": "MIT", 1408 | "dependencies": { 1409 | "es-errors": "^1.3.0", 1410 | "function-bind": "^1.1.2", 1411 | "has-proto": "^1.0.1", 1412 | "has-symbols": "^1.0.3", 1413 | "hasown": "^2.0.0" 1414 | }, 1415 | "engines": { 1416 | "node": ">= 0.4" 1417 | }, 1418 | "funding": { 1419 | "url": "https://github.com/sponsors/ljharb" 1420 | } 1421 | }, 1422 | "node_modules/get-stdin": { 1423 | "version": "6.0.0", 1424 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 1425 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 1426 | "license": "MIT", 1427 | "engines": { 1428 | "node": ">=4" 1429 | } 1430 | }, 1431 | "node_modules/get-symbol-description": { 1432 | "version": "1.0.2", 1433 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", 1434 | "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", 1435 | "license": "MIT", 1436 | "dependencies": { 1437 | "call-bind": "^1.0.5", 1438 | "es-errors": "^1.3.0", 1439 | "get-intrinsic": "^1.2.4" 1440 | }, 1441 | "engines": { 1442 | "node": ">= 0.4" 1443 | }, 1444 | "funding": { 1445 | "url": "https://github.com/sponsors/ljharb" 1446 | } 1447 | }, 1448 | "node_modules/getpass": { 1449 | "version": "0.1.7", 1450 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 1451 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 1452 | "license": "MIT", 1453 | "dependencies": { 1454 | "assert-plus": "^1.0.0" 1455 | } 1456 | }, 1457 | "node_modules/glob": { 1458 | "version": "7.2.3", 1459 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1460 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1461 | "deprecated": "Glob versions prior to v9 are no longer supported", 1462 | "license": "ISC", 1463 | "dependencies": { 1464 | "fs.realpath": "^1.0.0", 1465 | "inflight": "^1.0.4", 1466 | "inherits": "2", 1467 | "minimatch": "^3.1.1", 1468 | "once": "^1.3.0", 1469 | "path-is-absolute": "^1.0.0" 1470 | }, 1471 | "engines": { 1472 | "node": "*" 1473 | }, 1474 | "funding": { 1475 | "url": "https://github.com/sponsors/isaacs" 1476 | } 1477 | }, 1478 | "node_modules/globals": { 1479 | "version": "11.12.0", 1480 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1481 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1482 | "license": "MIT", 1483 | "engines": { 1484 | "node": ">=4" 1485 | } 1486 | }, 1487 | "node_modules/globalthis": { 1488 | "version": "1.0.4", 1489 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", 1490 | "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", 1491 | "license": "MIT", 1492 | "dependencies": { 1493 | "define-properties": "^1.2.1", 1494 | "gopd": "^1.0.1" 1495 | }, 1496 | "engines": { 1497 | "node": ">= 0.4" 1498 | }, 1499 | "funding": { 1500 | "url": "https://github.com/sponsors/ljharb" 1501 | } 1502 | }, 1503 | "node_modules/gopd": { 1504 | "version": "1.0.1", 1505 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 1506 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 1507 | "license": "MIT", 1508 | "dependencies": { 1509 | "get-intrinsic": "^1.1.3" 1510 | }, 1511 | "funding": { 1512 | "url": "https://github.com/sponsors/ljharb" 1513 | } 1514 | }, 1515 | "node_modules/graceful-fs": { 1516 | "version": "4.2.11", 1517 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1518 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1519 | "license": "ISC" 1520 | }, 1521 | "node_modules/har-schema": { 1522 | "version": "2.0.0", 1523 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1524 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 1525 | "license": "ISC", 1526 | "engines": { 1527 | "node": ">=4" 1528 | } 1529 | }, 1530 | "node_modules/har-validator": { 1531 | "version": "5.1.5", 1532 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 1533 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 1534 | "deprecated": "this library is no longer supported", 1535 | "license": "MIT", 1536 | "dependencies": { 1537 | "ajv": "^6.12.3", 1538 | "har-schema": "^2.0.0" 1539 | }, 1540 | "engines": { 1541 | "node": ">=6" 1542 | } 1543 | }, 1544 | "node_modules/has": { 1545 | "version": "1.0.4", 1546 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", 1547 | "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", 1548 | "license": "MIT", 1549 | "engines": { 1550 | "node": ">= 0.4.0" 1551 | } 1552 | }, 1553 | "node_modules/has-ansi": { 1554 | "version": "2.0.0", 1555 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1556 | "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 1557 | "license": "MIT", 1558 | "dependencies": { 1559 | "ansi-regex": "^2.0.0" 1560 | }, 1561 | "engines": { 1562 | "node": ">=0.10.0" 1563 | } 1564 | }, 1565 | "node_modules/has-ansi/node_modules/ansi-regex": { 1566 | "version": "2.1.1", 1567 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1568 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 1569 | "license": "MIT", 1570 | "engines": { 1571 | "node": ">=0.10.0" 1572 | } 1573 | }, 1574 | "node_modules/has-bigints": { 1575 | "version": "1.0.2", 1576 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1577 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 1578 | "license": "MIT", 1579 | "funding": { 1580 | "url": "https://github.com/sponsors/ljharb" 1581 | } 1582 | }, 1583 | "node_modules/has-property-descriptors": { 1584 | "version": "1.0.2", 1585 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 1586 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 1587 | "license": "MIT", 1588 | "dependencies": { 1589 | "es-define-property": "^1.0.0" 1590 | }, 1591 | "funding": { 1592 | "url": "https://github.com/sponsors/ljharb" 1593 | } 1594 | }, 1595 | "node_modules/has-proto": { 1596 | "version": "1.0.3", 1597 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", 1598 | "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", 1599 | "license": "MIT", 1600 | "engines": { 1601 | "node": ">= 0.4" 1602 | }, 1603 | "funding": { 1604 | "url": "https://github.com/sponsors/ljharb" 1605 | } 1606 | }, 1607 | "node_modules/has-symbols": { 1608 | "version": "1.0.3", 1609 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1610 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1611 | "license": "MIT", 1612 | "engines": { 1613 | "node": ">= 0.4" 1614 | }, 1615 | "funding": { 1616 | "url": "https://github.com/sponsors/ljharb" 1617 | } 1618 | }, 1619 | "node_modules/has-tostringtag": { 1620 | "version": "1.0.2", 1621 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 1622 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 1623 | "license": "MIT", 1624 | "dependencies": { 1625 | "has-symbols": "^1.0.3" 1626 | }, 1627 | "engines": { 1628 | "node": ">= 0.4" 1629 | }, 1630 | "funding": { 1631 | "url": "https://github.com/sponsors/ljharb" 1632 | } 1633 | }, 1634 | "node_modules/hasown": { 1635 | "version": "2.0.2", 1636 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1637 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1638 | "license": "MIT", 1639 | "dependencies": { 1640 | "function-bind": "^1.1.2" 1641 | }, 1642 | "engines": { 1643 | "node": ">= 0.4" 1644 | } 1645 | }, 1646 | "node_modules/hosted-git-info": { 1647 | "version": "2.8.9", 1648 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1649 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1650 | "license": "ISC" 1651 | }, 1652 | "node_modules/http-signature": { 1653 | "version": "1.2.0", 1654 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1655 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 1656 | "license": "MIT", 1657 | "dependencies": { 1658 | "assert-plus": "^1.0.0", 1659 | "jsprim": "^1.2.2", 1660 | "sshpk": "^1.7.0" 1661 | }, 1662 | "engines": { 1663 | "node": ">=0.8", 1664 | "npm": ">=1.3.7" 1665 | } 1666 | }, 1667 | "node_modules/iconv-lite": { 1668 | "version": "0.4.24", 1669 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1670 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1671 | "license": "MIT", 1672 | "dependencies": { 1673 | "safer-buffer": ">= 2.1.2 < 3" 1674 | }, 1675 | "engines": { 1676 | "node": ">=0.10.0" 1677 | } 1678 | }, 1679 | "node_modules/ignore": { 1680 | "version": "4.0.6", 1681 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1682 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1683 | "license": "MIT", 1684 | "engines": { 1685 | "node": ">= 4" 1686 | } 1687 | }, 1688 | "node_modules/imurmurhash": { 1689 | "version": "0.1.4", 1690 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1691 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1692 | "license": "MIT", 1693 | "engines": { 1694 | "node": ">=0.8.19" 1695 | } 1696 | }, 1697 | "node_modules/inflight": { 1698 | "version": "1.0.6", 1699 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1700 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1701 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 1702 | "license": "ISC", 1703 | "dependencies": { 1704 | "once": "^1.3.0", 1705 | "wrappy": "1" 1706 | } 1707 | }, 1708 | "node_modules/inherits": { 1709 | "version": "2.0.4", 1710 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1711 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1712 | "license": "ISC" 1713 | }, 1714 | "node_modules/inquirer": { 1715 | "version": "5.2.0", 1716 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", 1717 | "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", 1718 | "license": "MIT", 1719 | "dependencies": { 1720 | "ansi-escapes": "^3.0.0", 1721 | "chalk": "^2.0.0", 1722 | "cli-cursor": "^2.1.0", 1723 | "cli-width": "^2.0.0", 1724 | "external-editor": "^2.1.0", 1725 | "figures": "^2.0.0", 1726 | "lodash": "^4.3.0", 1727 | "mute-stream": "0.0.7", 1728 | "run-async": "^2.2.0", 1729 | "rxjs": "^5.5.2", 1730 | "string-width": "^2.1.0", 1731 | "strip-ansi": "^4.0.0", 1732 | "through": "^2.3.6" 1733 | }, 1734 | "engines": { 1735 | "node": ">=6.0.0" 1736 | } 1737 | }, 1738 | "node_modules/inquirer/node_modules/ansi-styles": { 1739 | "version": "3.2.1", 1740 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1741 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1742 | "license": "MIT", 1743 | "dependencies": { 1744 | "color-convert": "^1.9.0" 1745 | }, 1746 | "engines": { 1747 | "node": ">=4" 1748 | } 1749 | }, 1750 | "node_modules/inquirer/node_modules/chalk": { 1751 | "version": "2.4.2", 1752 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1753 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1754 | "license": "MIT", 1755 | "dependencies": { 1756 | "ansi-styles": "^3.2.1", 1757 | "escape-string-regexp": "^1.0.5", 1758 | "supports-color": "^5.3.0" 1759 | }, 1760 | "engines": { 1761 | "node": ">=4" 1762 | } 1763 | }, 1764 | "node_modules/inquirer/node_modules/color-convert": { 1765 | "version": "1.9.3", 1766 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1767 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1768 | "license": "MIT", 1769 | "dependencies": { 1770 | "color-name": "1.1.3" 1771 | } 1772 | }, 1773 | "node_modules/inquirer/node_modules/color-name": { 1774 | "version": "1.1.3", 1775 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1776 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1777 | "license": "MIT" 1778 | }, 1779 | "node_modules/inquirer/node_modules/has-flag": { 1780 | "version": "3.0.0", 1781 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1782 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1783 | "license": "MIT", 1784 | "engines": { 1785 | "node": ">=4" 1786 | } 1787 | }, 1788 | "node_modules/inquirer/node_modules/supports-color": { 1789 | "version": "5.5.0", 1790 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1791 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1792 | "license": "MIT", 1793 | "dependencies": { 1794 | "has-flag": "^3.0.0" 1795 | }, 1796 | "engines": { 1797 | "node": ">=4" 1798 | } 1799 | }, 1800 | "node_modules/internal-slot": { 1801 | "version": "1.0.7", 1802 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", 1803 | "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", 1804 | "license": "MIT", 1805 | "dependencies": { 1806 | "es-errors": "^1.3.0", 1807 | "hasown": "^2.0.0", 1808 | "side-channel": "^1.0.4" 1809 | }, 1810 | "engines": { 1811 | "node": ">= 0.4" 1812 | } 1813 | }, 1814 | "node_modules/is-array-buffer": { 1815 | "version": "3.0.4", 1816 | "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", 1817 | "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", 1818 | "license": "MIT", 1819 | "dependencies": { 1820 | "call-bind": "^1.0.2", 1821 | "get-intrinsic": "^1.2.1" 1822 | }, 1823 | "engines": { 1824 | "node": ">= 0.4" 1825 | }, 1826 | "funding": { 1827 | "url": "https://github.com/sponsors/ljharb" 1828 | } 1829 | }, 1830 | "node_modules/is-arrayish": { 1831 | "version": "0.2.1", 1832 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1833 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 1834 | "license": "MIT" 1835 | }, 1836 | "node_modules/is-bigint": { 1837 | "version": "1.0.4", 1838 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1839 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1840 | "license": "MIT", 1841 | "dependencies": { 1842 | "has-bigints": "^1.0.1" 1843 | }, 1844 | "funding": { 1845 | "url": "https://github.com/sponsors/ljharb" 1846 | } 1847 | }, 1848 | "node_modules/is-boolean-object": { 1849 | "version": "1.1.2", 1850 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1851 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1852 | "license": "MIT", 1853 | "dependencies": { 1854 | "call-bind": "^1.0.2", 1855 | "has-tostringtag": "^1.0.0" 1856 | }, 1857 | "engines": { 1858 | "node": ">= 0.4" 1859 | }, 1860 | "funding": { 1861 | "url": "https://github.com/sponsors/ljharb" 1862 | } 1863 | }, 1864 | "node_modules/is-callable": { 1865 | "version": "1.2.7", 1866 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 1867 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 1868 | "license": "MIT", 1869 | "engines": { 1870 | "node": ">= 0.4" 1871 | }, 1872 | "funding": { 1873 | "url": "https://github.com/sponsors/ljharb" 1874 | } 1875 | }, 1876 | "node_modules/is-core-module": { 1877 | "version": "2.15.1", 1878 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 1879 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 1880 | "license": "MIT", 1881 | "dependencies": { 1882 | "hasown": "^2.0.2" 1883 | }, 1884 | "engines": { 1885 | "node": ">= 0.4" 1886 | }, 1887 | "funding": { 1888 | "url": "https://github.com/sponsors/ljharb" 1889 | } 1890 | }, 1891 | "node_modules/is-data-view": { 1892 | "version": "1.0.1", 1893 | "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", 1894 | "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", 1895 | "license": "MIT", 1896 | "dependencies": { 1897 | "is-typed-array": "^1.1.13" 1898 | }, 1899 | "engines": { 1900 | "node": ">= 0.4" 1901 | }, 1902 | "funding": { 1903 | "url": "https://github.com/sponsors/ljharb" 1904 | } 1905 | }, 1906 | "node_modules/is-date-object": { 1907 | "version": "1.0.5", 1908 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1909 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1910 | "license": "MIT", 1911 | "dependencies": { 1912 | "has-tostringtag": "^1.0.0" 1913 | }, 1914 | "engines": { 1915 | "node": ">= 0.4" 1916 | }, 1917 | "funding": { 1918 | "url": "https://github.com/sponsors/ljharb" 1919 | } 1920 | }, 1921 | "node_modules/is-fullwidth-code-point": { 1922 | "version": "2.0.0", 1923 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1924 | "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", 1925 | "license": "MIT", 1926 | "engines": { 1927 | "node": ">=4" 1928 | } 1929 | }, 1930 | "node_modules/is-negative-zero": { 1931 | "version": "2.0.3", 1932 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", 1933 | "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", 1934 | "license": "MIT", 1935 | "engines": { 1936 | "node": ">= 0.4" 1937 | }, 1938 | "funding": { 1939 | "url": "https://github.com/sponsors/ljharb" 1940 | } 1941 | }, 1942 | "node_modules/is-number-object": { 1943 | "version": "1.0.7", 1944 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1945 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1946 | "license": "MIT", 1947 | "dependencies": { 1948 | "has-tostringtag": "^1.0.0" 1949 | }, 1950 | "engines": { 1951 | "node": ">= 0.4" 1952 | }, 1953 | "funding": { 1954 | "url": "https://github.com/sponsors/ljharb" 1955 | } 1956 | }, 1957 | "node_modules/is-regex": { 1958 | "version": "1.1.4", 1959 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1960 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1961 | "license": "MIT", 1962 | "dependencies": { 1963 | "call-bind": "^1.0.2", 1964 | "has-tostringtag": "^1.0.0" 1965 | }, 1966 | "engines": { 1967 | "node": ">= 0.4" 1968 | }, 1969 | "funding": { 1970 | "url": "https://github.com/sponsors/ljharb" 1971 | } 1972 | }, 1973 | "node_modules/is-resolvable": { 1974 | "version": "1.1.0", 1975 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1976 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1977 | "license": "ISC" 1978 | }, 1979 | "node_modules/is-shared-array-buffer": { 1980 | "version": "1.0.3", 1981 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", 1982 | "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", 1983 | "license": "MIT", 1984 | "dependencies": { 1985 | "call-bind": "^1.0.7" 1986 | }, 1987 | "engines": { 1988 | "node": ">= 0.4" 1989 | }, 1990 | "funding": { 1991 | "url": "https://github.com/sponsors/ljharb" 1992 | } 1993 | }, 1994 | "node_modules/is-string": { 1995 | "version": "1.0.7", 1996 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1997 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1998 | "license": "MIT", 1999 | "dependencies": { 2000 | "has-tostringtag": "^1.0.0" 2001 | }, 2002 | "engines": { 2003 | "node": ">= 0.4" 2004 | }, 2005 | "funding": { 2006 | "url": "https://github.com/sponsors/ljharb" 2007 | } 2008 | }, 2009 | "node_modules/is-symbol": { 2010 | "version": "1.0.4", 2011 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 2012 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 2013 | "license": "MIT", 2014 | "dependencies": { 2015 | "has-symbols": "^1.0.2" 2016 | }, 2017 | "engines": { 2018 | "node": ">= 0.4" 2019 | }, 2020 | "funding": { 2021 | "url": "https://github.com/sponsors/ljharb" 2022 | } 2023 | }, 2024 | "node_modules/is-typed-array": { 2025 | "version": "1.1.13", 2026 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", 2027 | "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", 2028 | "license": "MIT", 2029 | "dependencies": { 2030 | "which-typed-array": "^1.1.14" 2031 | }, 2032 | "engines": { 2033 | "node": ">= 0.4" 2034 | }, 2035 | "funding": { 2036 | "url": "https://github.com/sponsors/ljharb" 2037 | } 2038 | }, 2039 | "node_modules/is-typedarray": { 2040 | "version": "1.0.0", 2041 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2042 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 2043 | "license": "MIT" 2044 | }, 2045 | "node_modules/is-weakref": { 2046 | "version": "1.0.2", 2047 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 2048 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 2049 | "license": "MIT", 2050 | "dependencies": { 2051 | "call-bind": "^1.0.2" 2052 | }, 2053 | "funding": { 2054 | "url": "https://github.com/sponsors/ljharb" 2055 | } 2056 | }, 2057 | "node_modules/isarray": { 2058 | "version": "2.0.5", 2059 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 2060 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 2061 | "license": "MIT" 2062 | }, 2063 | "node_modules/isexe": { 2064 | "version": "2.0.0", 2065 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2066 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2067 | "license": "ISC" 2068 | }, 2069 | "node_modules/isstream": { 2070 | "version": "0.1.2", 2071 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 2072 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 2073 | "license": "MIT" 2074 | }, 2075 | "node_modules/js-tokens": { 2076 | "version": "3.0.2", 2077 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 2078 | "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", 2079 | "license": "MIT" 2080 | }, 2081 | "node_modules/js-yaml": { 2082 | "version": "3.14.1", 2083 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2084 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2085 | "license": "MIT", 2086 | "dependencies": { 2087 | "argparse": "^1.0.7", 2088 | "esprima": "^4.0.0" 2089 | }, 2090 | "bin": { 2091 | "js-yaml": "bin/js-yaml.js" 2092 | } 2093 | }, 2094 | "node_modules/jsbn": { 2095 | "version": "0.1.1", 2096 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 2097 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 2098 | "license": "MIT" 2099 | }, 2100 | "node_modules/json-parse-better-errors": { 2101 | "version": "1.0.2", 2102 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2103 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2104 | "license": "MIT" 2105 | }, 2106 | "node_modules/json-schema": { 2107 | "version": "0.4.0", 2108 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 2109 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 2110 | "license": "(AFL-2.1 OR BSD-3-Clause)" 2111 | }, 2112 | "node_modules/json-schema-traverse": { 2113 | "version": "0.4.1", 2114 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2115 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2116 | "license": "MIT" 2117 | }, 2118 | "node_modules/json-stable-stringify-without-jsonify": { 2119 | "version": "1.0.1", 2120 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2121 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2122 | "license": "MIT" 2123 | }, 2124 | "node_modules/json-stringify-safe": { 2125 | "version": "5.0.1", 2126 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 2127 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 2128 | "license": "ISC" 2129 | }, 2130 | "node_modules/json5": { 2131 | "version": "1.0.2", 2132 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", 2133 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", 2134 | "license": "MIT", 2135 | "dependencies": { 2136 | "minimist": "^1.2.0" 2137 | }, 2138 | "bin": { 2139 | "json5": "lib/cli.js" 2140 | } 2141 | }, 2142 | "node_modules/jsprim": { 2143 | "version": "1.4.2", 2144 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 2145 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 2146 | "license": "MIT", 2147 | "dependencies": { 2148 | "assert-plus": "1.0.0", 2149 | "extsprintf": "1.3.0", 2150 | "json-schema": "0.4.0", 2151 | "verror": "1.10.0" 2152 | }, 2153 | "engines": { 2154 | "node": ">=0.6.0" 2155 | } 2156 | }, 2157 | "node_modules/jsx-ast-utils": { 2158 | "version": "2.4.1", 2159 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", 2160 | "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", 2161 | "license": "MIT", 2162 | "dependencies": { 2163 | "array-includes": "^3.1.1", 2164 | "object.assign": "^4.1.0" 2165 | }, 2166 | "engines": { 2167 | "node": ">=4.0" 2168 | } 2169 | }, 2170 | "node_modules/kleur": { 2171 | "version": "3.0.3", 2172 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 2173 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 2174 | "license": "MIT", 2175 | "engines": { 2176 | "node": ">=6" 2177 | } 2178 | }, 2179 | "node_modules/levn": { 2180 | "version": "0.3.0", 2181 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2182 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 2183 | "license": "MIT", 2184 | "dependencies": { 2185 | "prelude-ls": "~1.1.2", 2186 | "type-check": "~0.3.2" 2187 | }, 2188 | "engines": { 2189 | "node": ">= 0.8.0" 2190 | } 2191 | }, 2192 | "node_modules/load-json-file": { 2193 | "version": "2.0.0", 2194 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2195 | "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", 2196 | "license": "MIT", 2197 | "dependencies": { 2198 | "graceful-fs": "^4.1.2", 2199 | "parse-json": "^2.2.0", 2200 | "pify": "^2.0.0", 2201 | "strip-bom": "^3.0.0" 2202 | }, 2203 | "engines": { 2204 | "node": ">=4" 2205 | } 2206 | }, 2207 | "node_modules/locate-path": { 2208 | "version": "2.0.0", 2209 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2210 | "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", 2211 | "license": "MIT", 2212 | "dependencies": { 2213 | "p-locate": "^2.0.0", 2214 | "path-exists": "^3.0.0" 2215 | }, 2216 | "engines": { 2217 | "node": ">=4" 2218 | } 2219 | }, 2220 | "node_modules/lodash": { 2221 | "version": "4.17.21", 2222 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2223 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2224 | "license": "MIT" 2225 | }, 2226 | "node_modules/loose-envify": { 2227 | "version": "1.4.0", 2228 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2229 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2230 | "license": "MIT", 2231 | "dependencies": { 2232 | "js-tokens": "^3.0.0 || ^4.0.0" 2233 | }, 2234 | "bin": { 2235 | "loose-envify": "cli.js" 2236 | } 2237 | }, 2238 | "node_modules/luxon": { 2239 | "version": "3.5.0", 2240 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", 2241 | "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", 2242 | "license": "MIT", 2243 | "engines": { 2244 | "node": ">=12" 2245 | } 2246 | }, 2247 | "node_modules/mime-db": { 2248 | "version": "1.52.0", 2249 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2250 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2251 | "license": "MIT", 2252 | "engines": { 2253 | "node": ">= 0.6" 2254 | } 2255 | }, 2256 | "node_modules/mime-types": { 2257 | "version": "2.1.35", 2258 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2259 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2260 | "license": "MIT", 2261 | "dependencies": { 2262 | "mime-db": "1.52.0" 2263 | }, 2264 | "engines": { 2265 | "node": ">= 0.6" 2266 | } 2267 | }, 2268 | "node_modules/mimic-fn": { 2269 | "version": "1.2.0", 2270 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2271 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 2272 | "license": "MIT", 2273 | "engines": { 2274 | "node": ">=4" 2275 | } 2276 | }, 2277 | "node_modules/minimatch": { 2278 | "version": "3.1.2", 2279 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2280 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2281 | "license": "ISC", 2282 | "dependencies": { 2283 | "brace-expansion": "^1.1.7" 2284 | }, 2285 | "engines": { 2286 | "node": "*" 2287 | } 2288 | }, 2289 | "node_modules/minimist": { 2290 | "version": "1.2.8", 2291 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2292 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2293 | "license": "MIT", 2294 | "funding": { 2295 | "url": "https://github.com/sponsors/ljharb" 2296 | } 2297 | }, 2298 | "node_modules/mkdirp": { 2299 | "version": "0.5.6", 2300 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2301 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2302 | "license": "MIT", 2303 | "dependencies": { 2304 | "minimist": "^1.2.6" 2305 | }, 2306 | "bin": { 2307 | "mkdirp": "bin/cmd.js" 2308 | } 2309 | }, 2310 | "node_modules/ms": { 2311 | "version": "2.1.3", 2312 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2313 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2314 | "license": "MIT" 2315 | }, 2316 | "node_modules/mute-stream": { 2317 | "version": "0.0.7", 2318 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2319 | "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", 2320 | "license": "ISC" 2321 | }, 2322 | "node_modules/natural-compare": { 2323 | "version": "1.4.0", 2324 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2325 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2326 | "license": "MIT" 2327 | }, 2328 | "node_modules/nice-try": { 2329 | "version": "1.0.5", 2330 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2331 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2332 | "license": "MIT" 2333 | }, 2334 | "node_modules/node-canvas-api": { 2335 | "version": "1.7.6", 2336 | "resolved": "https://registry.npmjs.org/node-canvas-api/-/node-canvas-api-1.7.6.tgz", 2337 | "integrity": "sha512-FVW9GMDYad7taFM/DeD3TCBt8znjEzyRa6hkvIefamnFhVVA15yiryOM2Fi1cjAqZNNu4quvCEYOj4nETDpprQ==", 2338 | "license": "MIT", 2339 | "dependencies": { 2340 | "bottleneck": "^2.19.4", 2341 | "config": "^1.31.0", 2342 | "dotenv": "^4.0.0", 2343 | "parse-link-header": "^2.0.0", 2344 | "prompts": "^2.4.2", 2345 | "ramda": "^0.27.2", 2346 | "request": "^2.88.2", 2347 | "request-promise": "^4.2.4" 2348 | } 2349 | }, 2350 | "node_modules/node-canvas-api/node_modules/dotenv": { 2351 | "version": "4.0.0", 2352 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", 2353 | "integrity": "sha512-XcaMACOr3JMVcEv0Y/iUM2XaOsATRZ3U1In41/1jjK6vJZ2PZbQ1bzCG8uvaByfaBpl9gqc9QWJovpUGBXLLYQ==", 2354 | "license": "BSD-2-Clause", 2355 | "engines": { 2356 | "node": ">=4.6.0" 2357 | } 2358 | }, 2359 | "node_modules/normalize-package-data": { 2360 | "version": "2.5.0", 2361 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2362 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2363 | "license": "BSD-2-Clause", 2364 | "dependencies": { 2365 | "hosted-git-info": "^2.1.4", 2366 | "resolve": "^1.10.0", 2367 | "semver": "2 || 3 || 4 || 5", 2368 | "validate-npm-package-license": "^3.0.1" 2369 | } 2370 | }, 2371 | "node_modules/oauth-sign": { 2372 | "version": "0.9.0", 2373 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 2374 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 2375 | "license": "Apache-2.0", 2376 | "engines": { 2377 | "node": "*" 2378 | } 2379 | }, 2380 | "node_modules/object-assign": { 2381 | "version": "4.1.1", 2382 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2383 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2384 | "license": "MIT", 2385 | "engines": { 2386 | "node": ">=0.10.0" 2387 | } 2388 | }, 2389 | "node_modules/object-inspect": { 2390 | "version": "1.13.2", 2391 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", 2392 | "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", 2393 | "license": "MIT", 2394 | "engines": { 2395 | "node": ">= 0.4" 2396 | }, 2397 | "funding": { 2398 | "url": "https://github.com/sponsors/ljharb" 2399 | } 2400 | }, 2401 | "node_modules/object-keys": { 2402 | "version": "1.1.1", 2403 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2404 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2405 | "license": "MIT", 2406 | "engines": { 2407 | "node": ">= 0.4" 2408 | } 2409 | }, 2410 | "node_modules/object.assign": { 2411 | "version": "4.1.5", 2412 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", 2413 | "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", 2414 | "license": "MIT", 2415 | "dependencies": { 2416 | "call-bind": "^1.0.5", 2417 | "define-properties": "^1.2.1", 2418 | "has-symbols": "^1.0.3", 2419 | "object-keys": "^1.1.1" 2420 | }, 2421 | "engines": { 2422 | "node": ">= 0.4" 2423 | }, 2424 | "funding": { 2425 | "url": "https://github.com/sponsors/ljharb" 2426 | } 2427 | }, 2428 | "node_modules/once": { 2429 | "version": "1.4.0", 2430 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2431 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2432 | "license": "ISC", 2433 | "dependencies": { 2434 | "wrappy": "1" 2435 | } 2436 | }, 2437 | "node_modules/onetime": { 2438 | "version": "2.0.1", 2439 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2440 | "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", 2441 | "license": "MIT", 2442 | "dependencies": { 2443 | "mimic-fn": "^1.0.0" 2444 | }, 2445 | "engines": { 2446 | "node": ">=4" 2447 | } 2448 | }, 2449 | "node_modules/optionator": { 2450 | "version": "0.8.3", 2451 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2452 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2453 | "license": "MIT", 2454 | "dependencies": { 2455 | "deep-is": "~0.1.3", 2456 | "fast-levenshtein": "~2.0.6", 2457 | "levn": "~0.3.0", 2458 | "prelude-ls": "~1.1.2", 2459 | "type-check": "~0.3.2", 2460 | "word-wrap": "~1.2.3" 2461 | }, 2462 | "engines": { 2463 | "node": ">= 0.8.0" 2464 | } 2465 | }, 2466 | "node_modules/os-tmpdir": { 2467 | "version": "1.0.2", 2468 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2469 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 2470 | "license": "MIT", 2471 | "engines": { 2472 | "node": ">=0.10.0" 2473 | } 2474 | }, 2475 | "node_modules/p-limit": { 2476 | "version": "1.3.0", 2477 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2478 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2479 | "license": "MIT", 2480 | "dependencies": { 2481 | "p-try": "^1.0.0" 2482 | }, 2483 | "engines": { 2484 | "node": ">=4" 2485 | } 2486 | }, 2487 | "node_modules/p-locate": { 2488 | "version": "2.0.0", 2489 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2490 | "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", 2491 | "license": "MIT", 2492 | "dependencies": { 2493 | "p-limit": "^1.1.0" 2494 | }, 2495 | "engines": { 2496 | "node": ">=4" 2497 | } 2498 | }, 2499 | "node_modules/p-try": { 2500 | "version": "1.0.0", 2501 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2502 | "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", 2503 | "license": "MIT", 2504 | "engines": { 2505 | "node": ">=4" 2506 | } 2507 | }, 2508 | "node_modules/parse-json": { 2509 | "version": "2.2.0", 2510 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2511 | "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", 2512 | "license": "MIT", 2513 | "dependencies": { 2514 | "error-ex": "^1.2.0" 2515 | }, 2516 | "engines": { 2517 | "node": ">=0.10.0" 2518 | } 2519 | }, 2520 | "node_modules/parse-link-header": { 2521 | "version": "2.0.0", 2522 | "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", 2523 | "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", 2524 | "license": "MIT", 2525 | "dependencies": { 2526 | "xtend": "~4.0.1" 2527 | } 2528 | }, 2529 | "node_modules/path-exists": { 2530 | "version": "3.0.0", 2531 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2532 | "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", 2533 | "license": "MIT", 2534 | "engines": { 2535 | "node": ">=4" 2536 | } 2537 | }, 2538 | "node_modules/path-is-absolute": { 2539 | "version": "1.0.1", 2540 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2541 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2542 | "license": "MIT", 2543 | "engines": { 2544 | "node": ">=0.10.0" 2545 | } 2546 | }, 2547 | "node_modules/path-is-inside": { 2548 | "version": "1.0.2", 2549 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2550 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 2551 | "license": "(WTFPL OR MIT)" 2552 | }, 2553 | "node_modules/path-key": { 2554 | "version": "2.0.1", 2555 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2556 | "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", 2557 | "license": "MIT", 2558 | "engines": { 2559 | "node": ">=4" 2560 | } 2561 | }, 2562 | "node_modules/path-parse": { 2563 | "version": "1.0.7", 2564 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2565 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2566 | "license": "MIT" 2567 | }, 2568 | "node_modules/path-type": { 2569 | "version": "2.0.0", 2570 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2571 | "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", 2572 | "license": "MIT", 2573 | "dependencies": { 2574 | "pify": "^2.0.0" 2575 | }, 2576 | "engines": { 2577 | "node": ">=4" 2578 | } 2579 | }, 2580 | "node_modules/performance-now": { 2581 | "version": "2.1.0", 2582 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 2583 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", 2584 | "license": "MIT" 2585 | }, 2586 | "node_modules/pify": { 2587 | "version": "2.3.0", 2588 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2589 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 2590 | "license": "MIT", 2591 | "engines": { 2592 | "node": ">=0.10.0" 2593 | } 2594 | }, 2595 | "node_modules/pkg-conf": { 2596 | "version": "2.1.0", 2597 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", 2598 | "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", 2599 | "license": "MIT", 2600 | "dependencies": { 2601 | "find-up": "^2.0.0", 2602 | "load-json-file": "^4.0.0" 2603 | }, 2604 | "engines": { 2605 | "node": ">=4" 2606 | } 2607 | }, 2608 | "node_modules/pkg-conf/node_modules/load-json-file": { 2609 | "version": "4.0.0", 2610 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 2611 | "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", 2612 | "license": "MIT", 2613 | "dependencies": { 2614 | "graceful-fs": "^4.1.2", 2615 | "parse-json": "^4.0.0", 2616 | "pify": "^3.0.0", 2617 | "strip-bom": "^3.0.0" 2618 | }, 2619 | "engines": { 2620 | "node": ">=4" 2621 | } 2622 | }, 2623 | "node_modules/pkg-conf/node_modules/parse-json": { 2624 | "version": "4.0.0", 2625 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2626 | "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", 2627 | "license": "MIT", 2628 | "dependencies": { 2629 | "error-ex": "^1.3.1", 2630 | "json-parse-better-errors": "^1.0.1" 2631 | }, 2632 | "engines": { 2633 | "node": ">=4" 2634 | } 2635 | }, 2636 | "node_modules/pkg-conf/node_modules/pify": { 2637 | "version": "3.0.0", 2638 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2639 | "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 2640 | "license": "MIT", 2641 | "engines": { 2642 | "node": ">=4" 2643 | } 2644 | }, 2645 | "node_modules/pkg-config": { 2646 | "version": "1.1.1", 2647 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", 2648 | "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", 2649 | "license": "MIT", 2650 | "dependencies": { 2651 | "debug-log": "^1.0.0", 2652 | "find-root": "^1.0.0", 2653 | "xtend": "^4.0.1" 2654 | }, 2655 | "engines": { 2656 | "node": ">=0.10" 2657 | } 2658 | }, 2659 | "node_modules/pluralize": { 2660 | "version": "7.0.0", 2661 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 2662 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 2663 | "license": "MIT", 2664 | "engines": { 2665 | "node": ">=4" 2666 | } 2667 | }, 2668 | "node_modules/possible-typed-array-names": { 2669 | "version": "1.0.0", 2670 | "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", 2671 | "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", 2672 | "license": "MIT", 2673 | "engines": { 2674 | "node": ">= 0.4" 2675 | } 2676 | }, 2677 | "node_modules/prelude-ls": { 2678 | "version": "1.1.2", 2679 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2680 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 2681 | "engines": { 2682 | "node": ">= 0.8.0" 2683 | } 2684 | }, 2685 | "node_modules/progress": { 2686 | "version": "2.0.3", 2687 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2688 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2689 | "license": "MIT", 2690 | "engines": { 2691 | "node": ">=0.4.0" 2692 | } 2693 | }, 2694 | "node_modules/prompts": { 2695 | "version": "2.4.2", 2696 | "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", 2697 | "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", 2698 | "license": "MIT", 2699 | "dependencies": { 2700 | "kleur": "^3.0.3", 2701 | "sisteransi": "^1.0.5" 2702 | }, 2703 | "engines": { 2704 | "node": ">= 6" 2705 | } 2706 | }, 2707 | "node_modules/prop-types": { 2708 | "version": "15.8.1", 2709 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2710 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2711 | "license": "MIT", 2712 | "dependencies": { 2713 | "loose-envify": "^1.4.0", 2714 | "object-assign": "^4.1.1", 2715 | "react-is": "^16.13.1" 2716 | } 2717 | }, 2718 | "node_modules/psl": { 2719 | "version": "1.9.0", 2720 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 2721 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 2722 | "license": "MIT" 2723 | }, 2724 | "node_modules/punycode": { 2725 | "version": "2.3.1", 2726 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2727 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2728 | "license": "MIT", 2729 | "engines": { 2730 | "node": ">=6" 2731 | } 2732 | }, 2733 | "node_modules/qs": { 2734 | "version": "6.5.3", 2735 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 2736 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 2737 | "license": "BSD-3-Clause", 2738 | "engines": { 2739 | "node": ">=0.6" 2740 | } 2741 | }, 2742 | "node_modules/queue-microtask": { 2743 | "version": "1.2.3", 2744 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2745 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2746 | "funding": [ 2747 | { 2748 | "type": "github", 2749 | "url": "https://github.com/sponsors/feross" 2750 | }, 2751 | { 2752 | "type": "patreon", 2753 | "url": "https://www.patreon.com/feross" 2754 | }, 2755 | { 2756 | "type": "consulting", 2757 | "url": "https://feross.org/support" 2758 | } 2759 | ], 2760 | "license": "MIT" 2761 | }, 2762 | "node_modules/ramda": { 2763 | "version": "0.27.2", 2764 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", 2765 | "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", 2766 | "license": "MIT" 2767 | }, 2768 | "node_modules/react-is": { 2769 | "version": "16.13.1", 2770 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2771 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2772 | "license": "MIT" 2773 | }, 2774 | "node_modules/read-pkg": { 2775 | "version": "2.0.0", 2776 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2777 | "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", 2778 | "license": "MIT", 2779 | "dependencies": { 2780 | "load-json-file": "^2.0.0", 2781 | "normalize-package-data": "^2.3.2", 2782 | "path-type": "^2.0.0" 2783 | }, 2784 | "engines": { 2785 | "node": ">=4" 2786 | } 2787 | }, 2788 | "node_modules/read-pkg-up": { 2789 | "version": "2.0.0", 2790 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2791 | "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", 2792 | "license": "MIT", 2793 | "dependencies": { 2794 | "find-up": "^2.0.0", 2795 | "read-pkg": "^2.0.0" 2796 | }, 2797 | "engines": { 2798 | "node": ">=4" 2799 | } 2800 | }, 2801 | "node_modules/regexp.prototype.flags": { 2802 | "version": "1.5.2", 2803 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", 2804 | "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", 2805 | "license": "MIT", 2806 | "dependencies": { 2807 | "call-bind": "^1.0.6", 2808 | "define-properties": "^1.2.1", 2809 | "es-errors": "^1.3.0", 2810 | "set-function-name": "^2.0.1" 2811 | }, 2812 | "engines": { 2813 | "node": ">= 0.4" 2814 | }, 2815 | "funding": { 2816 | "url": "https://github.com/sponsors/ljharb" 2817 | } 2818 | }, 2819 | "node_modules/regexpp": { 2820 | "version": "2.0.1", 2821 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 2822 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 2823 | "license": "MIT", 2824 | "engines": { 2825 | "node": ">=6.5.0" 2826 | } 2827 | }, 2828 | "node_modules/request": { 2829 | "version": "2.88.2", 2830 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 2831 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 2832 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 2833 | "license": "Apache-2.0", 2834 | "dependencies": { 2835 | "aws-sign2": "~0.7.0", 2836 | "aws4": "^1.8.0", 2837 | "caseless": "~0.12.0", 2838 | "combined-stream": "~1.0.6", 2839 | "extend": "~3.0.2", 2840 | "forever-agent": "~0.6.1", 2841 | "form-data": "~2.3.2", 2842 | "har-validator": "~5.1.3", 2843 | "http-signature": "~1.2.0", 2844 | "is-typedarray": "~1.0.0", 2845 | "isstream": "~0.1.2", 2846 | "json-stringify-safe": "~5.0.1", 2847 | "mime-types": "~2.1.19", 2848 | "oauth-sign": "~0.9.0", 2849 | "performance-now": "^2.1.0", 2850 | "qs": "~6.5.2", 2851 | "safe-buffer": "^5.1.2", 2852 | "tough-cookie": "~2.5.0", 2853 | "tunnel-agent": "^0.6.0", 2854 | "uuid": "^3.3.2" 2855 | }, 2856 | "engines": { 2857 | "node": ">= 6" 2858 | } 2859 | }, 2860 | "node_modules/request-promise": { 2861 | "version": "4.2.6", 2862 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", 2863 | "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", 2864 | "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", 2865 | "license": "ISC", 2866 | "dependencies": { 2867 | "bluebird": "^3.5.0", 2868 | "request-promise-core": "1.1.4", 2869 | "stealthy-require": "^1.1.1", 2870 | "tough-cookie": "^2.3.3" 2871 | }, 2872 | "engines": { 2873 | "node": ">=0.10.0" 2874 | }, 2875 | "peerDependencies": { 2876 | "request": "^2.34" 2877 | } 2878 | }, 2879 | "node_modules/request-promise-core": { 2880 | "version": "1.1.4", 2881 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", 2882 | "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", 2883 | "license": "ISC", 2884 | "dependencies": { 2885 | "lodash": "^4.17.19" 2886 | }, 2887 | "engines": { 2888 | "node": ">=0.10.0" 2889 | }, 2890 | "peerDependencies": { 2891 | "request": "^2.34" 2892 | } 2893 | }, 2894 | "node_modules/request/node_modules/uuid": { 2895 | "version": "3.4.0", 2896 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 2897 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 2898 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 2899 | "license": "MIT", 2900 | "bin": { 2901 | "uuid": "bin/uuid" 2902 | } 2903 | }, 2904 | "node_modules/require-uncached": { 2905 | "version": "1.0.3", 2906 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 2907 | "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", 2908 | "license": "MIT", 2909 | "dependencies": { 2910 | "caller-path": "^0.1.0", 2911 | "resolve-from": "^1.0.0" 2912 | }, 2913 | "engines": { 2914 | "node": ">=0.10.0" 2915 | } 2916 | }, 2917 | "node_modules/resolve": { 2918 | "version": "1.22.8", 2919 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 2920 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 2921 | "license": "MIT", 2922 | "dependencies": { 2923 | "is-core-module": "^2.13.0", 2924 | "path-parse": "^1.0.7", 2925 | "supports-preserve-symlinks-flag": "^1.0.0" 2926 | }, 2927 | "bin": { 2928 | "resolve": "bin/resolve" 2929 | }, 2930 | "funding": { 2931 | "url": "https://github.com/sponsors/ljharb" 2932 | } 2933 | }, 2934 | "node_modules/resolve-from": { 2935 | "version": "1.0.1", 2936 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 2937 | "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", 2938 | "license": "MIT", 2939 | "engines": { 2940 | "node": ">=0.10.0" 2941 | } 2942 | }, 2943 | "node_modules/restore-cursor": { 2944 | "version": "2.0.0", 2945 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 2946 | "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", 2947 | "license": "MIT", 2948 | "dependencies": { 2949 | "onetime": "^2.0.0", 2950 | "signal-exit": "^3.0.2" 2951 | }, 2952 | "engines": { 2953 | "node": ">=4" 2954 | } 2955 | }, 2956 | "node_modules/rimraf": { 2957 | "version": "2.6.3", 2958 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2959 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2960 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 2961 | "license": "ISC", 2962 | "dependencies": { 2963 | "glob": "^7.1.3" 2964 | }, 2965 | "bin": { 2966 | "rimraf": "bin.js" 2967 | } 2968 | }, 2969 | "node_modules/run-async": { 2970 | "version": "2.4.1", 2971 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 2972 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 2973 | "license": "MIT", 2974 | "engines": { 2975 | "node": ">=0.12.0" 2976 | } 2977 | }, 2978 | "node_modules/run-parallel": { 2979 | "version": "1.2.0", 2980 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2981 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2982 | "funding": [ 2983 | { 2984 | "type": "github", 2985 | "url": "https://github.com/sponsors/feross" 2986 | }, 2987 | { 2988 | "type": "patreon", 2989 | "url": "https://www.patreon.com/feross" 2990 | }, 2991 | { 2992 | "type": "consulting", 2993 | "url": "https://feross.org/support" 2994 | } 2995 | ], 2996 | "license": "MIT", 2997 | "dependencies": { 2998 | "queue-microtask": "^1.2.2" 2999 | } 3000 | }, 3001 | "node_modules/rxjs": { 3002 | "version": "5.5.12", 3003 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", 3004 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", 3005 | "license": "Apache-2.0", 3006 | "dependencies": { 3007 | "symbol-observable": "1.0.1" 3008 | }, 3009 | "engines": { 3010 | "npm": ">=2.0.0" 3011 | } 3012 | }, 3013 | "node_modules/safe-array-concat": { 3014 | "version": "1.1.2", 3015 | "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", 3016 | "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", 3017 | "license": "MIT", 3018 | "dependencies": { 3019 | "call-bind": "^1.0.7", 3020 | "get-intrinsic": "^1.2.4", 3021 | "has-symbols": "^1.0.3", 3022 | "isarray": "^2.0.5" 3023 | }, 3024 | "engines": { 3025 | "node": ">=0.4" 3026 | }, 3027 | "funding": { 3028 | "url": "https://github.com/sponsors/ljharb" 3029 | } 3030 | }, 3031 | "node_modules/safe-buffer": { 3032 | "version": "5.1.2", 3033 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3034 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3035 | "license": "MIT" 3036 | }, 3037 | "node_modules/safe-regex-test": { 3038 | "version": "1.0.3", 3039 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", 3040 | "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", 3041 | "license": "MIT", 3042 | "dependencies": { 3043 | "call-bind": "^1.0.6", 3044 | "es-errors": "^1.3.0", 3045 | "is-regex": "^1.1.4" 3046 | }, 3047 | "engines": { 3048 | "node": ">= 0.4" 3049 | }, 3050 | "funding": { 3051 | "url": "https://github.com/sponsors/ljharb" 3052 | } 3053 | }, 3054 | "node_modules/safer-buffer": { 3055 | "version": "2.1.2", 3056 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3057 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3058 | "license": "MIT" 3059 | }, 3060 | "node_modules/semver": { 3061 | "version": "5.7.2", 3062 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 3063 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 3064 | "license": "ISC", 3065 | "bin": { 3066 | "semver": "bin/semver" 3067 | } 3068 | }, 3069 | "node_modules/set-function-length": { 3070 | "version": "1.2.2", 3071 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 3072 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 3073 | "license": "MIT", 3074 | "dependencies": { 3075 | "define-data-property": "^1.1.4", 3076 | "es-errors": "^1.3.0", 3077 | "function-bind": "^1.1.2", 3078 | "get-intrinsic": "^1.2.4", 3079 | "gopd": "^1.0.1", 3080 | "has-property-descriptors": "^1.0.2" 3081 | }, 3082 | "engines": { 3083 | "node": ">= 0.4" 3084 | } 3085 | }, 3086 | "node_modules/set-function-name": { 3087 | "version": "2.0.2", 3088 | "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", 3089 | "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", 3090 | "license": "MIT", 3091 | "dependencies": { 3092 | "define-data-property": "^1.1.4", 3093 | "es-errors": "^1.3.0", 3094 | "functions-have-names": "^1.2.3", 3095 | "has-property-descriptors": "^1.0.2" 3096 | }, 3097 | "engines": { 3098 | "node": ">= 0.4" 3099 | } 3100 | }, 3101 | "node_modules/shebang-command": { 3102 | "version": "1.2.0", 3103 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3104 | "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", 3105 | "license": "MIT", 3106 | "dependencies": { 3107 | "shebang-regex": "^1.0.0" 3108 | }, 3109 | "engines": { 3110 | "node": ">=0.10.0" 3111 | } 3112 | }, 3113 | "node_modules/shebang-regex": { 3114 | "version": "1.0.0", 3115 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3116 | "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", 3117 | "license": "MIT", 3118 | "engines": { 3119 | "node": ">=0.10.0" 3120 | } 3121 | }, 3122 | "node_modules/side-channel": { 3123 | "version": "1.0.6", 3124 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", 3125 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", 3126 | "license": "MIT", 3127 | "dependencies": { 3128 | "call-bind": "^1.0.7", 3129 | "es-errors": "^1.3.0", 3130 | "get-intrinsic": "^1.2.4", 3131 | "object-inspect": "^1.13.1" 3132 | }, 3133 | "engines": { 3134 | "node": ">= 0.4" 3135 | }, 3136 | "funding": { 3137 | "url": "https://github.com/sponsors/ljharb" 3138 | } 3139 | }, 3140 | "node_modules/signal-exit": { 3141 | "version": "3.0.7", 3142 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3143 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3144 | "license": "ISC" 3145 | }, 3146 | "node_modules/sisteransi": { 3147 | "version": "1.0.5", 3148 | "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", 3149 | "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", 3150 | "license": "MIT" 3151 | }, 3152 | "node_modules/slice-ansi": { 3153 | "version": "1.0.0", 3154 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 3155 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 3156 | "license": "MIT", 3157 | "dependencies": { 3158 | "is-fullwidth-code-point": "^2.0.0" 3159 | }, 3160 | "engines": { 3161 | "node": ">=4" 3162 | } 3163 | }, 3164 | "node_modules/spdx-correct": { 3165 | "version": "3.2.0", 3166 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 3167 | "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 3168 | "license": "Apache-2.0", 3169 | "dependencies": { 3170 | "spdx-expression-parse": "^3.0.0", 3171 | "spdx-license-ids": "^3.0.0" 3172 | } 3173 | }, 3174 | "node_modules/spdx-exceptions": { 3175 | "version": "2.5.0", 3176 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", 3177 | "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", 3178 | "license": "CC-BY-3.0" 3179 | }, 3180 | "node_modules/spdx-expression-parse": { 3181 | "version": "3.0.1", 3182 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3183 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3184 | "license": "MIT", 3185 | "dependencies": { 3186 | "spdx-exceptions": "^2.1.0", 3187 | "spdx-license-ids": "^3.0.0" 3188 | } 3189 | }, 3190 | "node_modules/spdx-license-ids": { 3191 | "version": "3.0.20", 3192 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", 3193 | "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", 3194 | "license": "CC0-1.0" 3195 | }, 3196 | "node_modules/sprintf-js": { 3197 | "version": "1.0.3", 3198 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3199 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 3200 | "license": "BSD-3-Clause" 3201 | }, 3202 | "node_modules/sshpk": { 3203 | "version": "1.18.0", 3204 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", 3205 | "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", 3206 | "license": "MIT", 3207 | "dependencies": { 3208 | "asn1": "~0.2.3", 3209 | "assert-plus": "^1.0.0", 3210 | "bcrypt-pbkdf": "^1.0.0", 3211 | "dashdash": "^1.12.0", 3212 | "ecc-jsbn": "~0.1.1", 3213 | "getpass": "^0.1.1", 3214 | "jsbn": "~0.1.0", 3215 | "safer-buffer": "^2.0.2", 3216 | "tweetnacl": "~0.14.0" 3217 | }, 3218 | "bin": { 3219 | "sshpk-conv": "bin/sshpk-conv", 3220 | "sshpk-sign": "bin/sshpk-sign", 3221 | "sshpk-verify": "bin/sshpk-verify" 3222 | }, 3223 | "engines": { 3224 | "node": ">=0.10.0" 3225 | } 3226 | }, 3227 | "node_modules/standard": { 3228 | "version": "12.0.1", 3229 | "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", 3230 | "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", 3231 | "license": "MIT", 3232 | "dependencies": { 3233 | "eslint": "~5.4.0", 3234 | "eslint-config-standard": "12.0.0", 3235 | "eslint-config-standard-jsx": "6.0.2", 3236 | "eslint-plugin-import": "~2.14.0", 3237 | "eslint-plugin-node": "~7.0.1", 3238 | "eslint-plugin-promise": "~4.0.0", 3239 | "eslint-plugin-react": "~7.11.1", 3240 | "eslint-plugin-standard": "~4.0.0", 3241 | "standard-engine": "~9.0.0" 3242 | }, 3243 | "bin": { 3244 | "standard": "bin/cmd.js" 3245 | }, 3246 | "engines": { 3247 | "node": ">=4" 3248 | } 3249 | }, 3250 | "node_modules/standard-engine": { 3251 | "version": "9.0.0", 3252 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", 3253 | "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", 3254 | "license": "MIT", 3255 | "dependencies": { 3256 | "deglob": "^2.1.0", 3257 | "get-stdin": "^6.0.0", 3258 | "minimist": "^1.1.0", 3259 | "pkg-conf": "^2.0.0" 3260 | } 3261 | }, 3262 | "node_modules/stealthy-require": { 3263 | "version": "1.1.1", 3264 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 3265 | "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", 3266 | "license": "ISC", 3267 | "engines": { 3268 | "node": ">=0.10.0" 3269 | } 3270 | }, 3271 | "node_modules/string-width": { 3272 | "version": "2.1.1", 3273 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3274 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3275 | "license": "MIT", 3276 | "dependencies": { 3277 | "is-fullwidth-code-point": "^2.0.0", 3278 | "strip-ansi": "^4.0.0" 3279 | }, 3280 | "engines": { 3281 | "node": ">=4" 3282 | } 3283 | }, 3284 | "node_modules/string.prototype.trim": { 3285 | "version": "1.2.9", 3286 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", 3287 | "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", 3288 | "license": "MIT", 3289 | "dependencies": { 3290 | "call-bind": "^1.0.7", 3291 | "define-properties": "^1.2.1", 3292 | "es-abstract": "^1.23.0", 3293 | "es-object-atoms": "^1.0.0" 3294 | }, 3295 | "engines": { 3296 | "node": ">= 0.4" 3297 | }, 3298 | "funding": { 3299 | "url": "https://github.com/sponsors/ljharb" 3300 | } 3301 | }, 3302 | "node_modules/string.prototype.trimend": { 3303 | "version": "1.0.8", 3304 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", 3305 | "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", 3306 | "license": "MIT", 3307 | "dependencies": { 3308 | "call-bind": "^1.0.7", 3309 | "define-properties": "^1.2.1", 3310 | "es-object-atoms": "^1.0.0" 3311 | }, 3312 | "funding": { 3313 | "url": "https://github.com/sponsors/ljharb" 3314 | } 3315 | }, 3316 | "node_modules/string.prototype.trimstart": { 3317 | "version": "1.0.8", 3318 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", 3319 | "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", 3320 | "license": "MIT", 3321 | "dependencies": { 3322 | "call-bind": "^1.0.7", 3323 | "define-properties": "^1.2.1", 3324 | "es-object-atoms": "^1.0.0" 3325 | }, 3326 | "engines": { 3327 | "node": ">= 0.4" 3328 | }, 3329 | "funding": { 3330 | "url": "https://github.com/sponsors/ljharb" 3331 | } 3332 | }, 3333 | "node_modules/strip-ansi": { 3334 | "version": "4.0.0", 3335 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3336 | "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", 3337 | "license": "MIT", 3338 | "dependencies": { 3339 | "ansi-regex": "^3.0.0" 3340 | }, 3341 | "engines": { 3342 | "node": ">=4" 3343 | } 3344 | }, 3345 | "node_modules/strip-bom": { 3346 | "version": "3.0.0", 3347 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3348 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", 3349 | "license": "MIT", 3350 | "engines": { 3351 | "node": ">=4" 3352 | } 3353 | }, 3354 | "node_modules/strip-json-comments": { 3355 | "version": "2.0.1", 3356 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3357 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 3358 | "license": "MIT", 3359 | "engines": { 3360 | "node": ">=0.10.0" 3361 | } 3362 | }, 3363 | "node_modules/supports-preserve-symlinks-flag": { 3364 | "version": "1.0.0", 3365 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3366 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3367 | "license": "MIT", 3368 | "engines": { 3369 | "node": ">= 0.4" 3370 | }, 3371 | "funding": { 3372 | "url": "https://github.com/sponsors/ljharb" 3373 | } 3374 | }, 3375 | "node_modules/symbol-observable": { 3376 | "version": "1.0.1", 3377 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 3378 | "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", 3379 | "license": "MIT", 3380 | "engines": { 3381 | "node": ">=0.10.0" 3382 | } 3383 | }, 3384 | "node_modules/table": { 3385 | "version": "4.0.3", 3386 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", 3387 | "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", 3388 | "license": "BSD-3-Clause", 3389 | "dependencies": { 3390 | "ajv": "^6.0.1", 3391 | "ajv-keywords": "^3.0.0", 3392 | "chalk": "^2.1.0", 3393 | "lodash": "^4.17.4", 3394 | "slice-ansi": "1.0.0", 3395 | "string-width": "^2.1.1" 3396 | }, 3397 | "engines": { 3398 | "node": ">=4.0.0" 3399 | } 3400 | }, 3401 | "node_modules/table/node_modules/ansi-styles": { 3402 | "version": "3.2.1", 3403 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 3404 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 3405 | "license": "MIT", 3406 | "dependencies": { 3407 | "color-convert": "^1.9.0" 3408 | }, 3409 | "engines": { 3410 | "node": ">=4" 3411 | } 3412 | }, 3413 | "node_modules/table/node_modules/chalk": { 3414 | "version": "2.4.2", 3415 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 3416 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 3417 | "license": "MIT", 3418 | "dependencies": { 3419 | "ansi-styles": "^3.2.1", 3420 | "escape-string-regexp": "^1.0.5", 3421 | "supports-color": "^5.3.0" 3422 | }, 3423 | "engines": { 3424 | "node": ">=4" 3425 | } 3426 | }, 3427 | "node_modules/table/node_modules/color-convert": { 3428 | "version": "1.9.3", 3429 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 3430 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 3431 | "license": "MIT", 3432 | "dependencies": { 3433 | "color-name": "1.1.3" 3434 | } 3435 | }, 3436 | "node_modules/table/node_modules/color-name": { 3437 | "version": "1.1.3", 3438 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 3439 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 3440 | "license": "MIT" 3441 | }, 3442 | "node_modules/table/node_modules/has-flag": { 3443 | "version": "3.0.0", 3444 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 3445 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 3446 | "license": "MIT", 3447 | "engines": { 3448 | "node": ">=4" 3449 | } 3450 | }, 3451 | "node_modules/table/node_modules/supports-color": { 3452 | "version": "5.5.0", 3453 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3454 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3455 | "license": "MIT", 3456 | "dependencies": { 3457 | "has-flag": "^3.0.0" 3458 | }, 3459 | "engines": { 3460 | "node": ">=4" 3461 | } 3462 | }, 3463 | "node_modules/text-table": { 3464 | "version": "0.2.0", 3465 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3466 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 3467 | "license": "MIT" 3468 | }, 3469 | "node_modules/through": { 3470 | "version": "2.3.8", 3471 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3472 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 3473 | "license": "MIT" 3474 | }, 3475 | "node_modules/tmp": { 3476 | "version": "0.0.33", 3477 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3478 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3479 | "license": "MIT", 3480 | "dependencies": { 3481 | "os-tmpdir": "~1.0.2" 3482 | }, 3483 | "engines": { 3484 | "node": ">=0.6.0" 3485 | } 3486 | }, 3487 | "node_modules/tough-cookie": { 3488 | "version": "2.5.0", 3489 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 3490 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 3491 | "license": "BSD-3-Clause", 3492 | "dependencies": { 3493 | "psl": "^1.1.28", 3494 | "punycode": "^2.1.1" 3495 | }, 3496 | "engines": { 3497 | "node": ">=0.8" 3498 | } 3499 | }, 3500 | "node_modules/tunnel-agent": { 3501 | "version": "0.6.0", 3502 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 3503 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 3504 | "license": "Apache-2.0", 3505 | "dependencies": { 3506 | "safe-buffer": "^5.0.1" 3507 | }, 3508 | "engines": { 3509 | "node": "*" 3510 | } 3511 | }, 3512 | "node_modules/tweetnacl": { 3513 | "version": "0.14.5", 3514 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 3515 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 3516 | "license": "Unlicense" 3517 | }, 3518 | "node_modules/type-check": { 3519 | "version": "0.3.2", 3520 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3521 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 3522 | "license": "MIT", 3523 | "dependencies": { 3524 | "prelude-ls": "~1.1.2" 3525 | }, 3526 | "engines": { 3527 | "node": ">= 0.8.0" 3528 | } 3529 | }, 3530 | "node_modules/typed-array-buffer": { 3531 | "version": "1.0.2", 3532 | "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", 3533 | "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", 3534 | "license": "MIT", 3535 | "dependencies": { 3536 | "call-bind": "^1.0.7", 3537 | "es-errors": "^1.3.0", 3538 | "is-typed-array": "^1.1.13" 3539 | }, 3540 | "engines": { 3541 | "node": ">= 0.4" 3542 | } 3543 | }, 3544 | "node_modules/typed-array-byte-length": { 3545 | "version": "1.0.1", 3546 | "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", 3547 | "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", 3548 | "license": "MIT", 3549 | "dependencies": { 3550 | "call-bind": "^1.0.7", 3551 | "for-each": "^0.3.3", 3552 | "gopd": "^1.0.1", 3553 | "has-proto": "^1.0.3", 3554 | "is-typed-array": "^1.1.13" 3555 | }, 3556 | "engines": { 3557 | "node": ">= 0.4" 3558 | }, 3559 | "funding": { 3560 | "url": "https://github.com/sponsors/ljharb" 3561 | } 3562 | }, 3563 | "node_modules/typed-array-byte-offset": { 3564 | "version": "1.0.2", 3565 | "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", 3566 | "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", 3567 | "license": "MIT", 3568 | "dependencies": { 3569 | "available-typed-arrays": "^1.0.7", 3570 | "call-bind": "^1.0.7", 3571 | "for-each": "^0.3.3", 3572 | "gopd": "^1.0.1", 3573 | "has-proto": "^1.0.3", 3574 | "is-typed-array": "^1.1.13" 3575 | }, 3576 | "engines": { 3577 | "node": ">= 0.4" 3578 | }, 3579 | "funding": { 3580 | "url": "https://github.com/sponsors/ljharb" 3581 | } 3582 | }, 3583 | "node_modules/typed-array-length": { 3584 | "version": "1.0.6", 3585 | "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", 3586 | "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", 3587 | "license": "MIT", 3588 | "dependencies": { 3589 | "call-bind": "^1.0.7", 3590 | "for-each": "^0.3.3", 3591 | "gopd": "^1.0.1", 3592 | "has-proto": "^1.0.3", 3593 | "is-typed-array": "^1.1.13", 3594 | "possible-typed-array-names": "^1.0.0" 3595 | }, 3596 | "engines": { 3597 | "node": ">= 0.4" 3598 | }, 3599 | "funding": { 3600 | "url": "https://github.com/sponsors/ljharb" 3601 | } 3602 | }, 3603 | "node_modules/unbox-primitive": { 3604 | "version": "1.0.2", 3605 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 3606 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 3607 | "license": "MIT", 3608 | "dependencies": { 3609 | "call-bind": "^1.0.2", 3610 | "has-bigints": "^1.0.2", 3611 | "has-symbols": "^1.0.3", 3612 | "which-boxed-primitive": "^1.0.2" 3613 | }, 3614 | "funding": { 3615 | "url": "https://github.com/sponsors/ljharb" 3616 | } 3617 | }, 3618 | "node_modules/uniq": { 3619 | "version": "1.0.1", 3620 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 3621 | "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", 3622 | "license": "MIT" 3623 | }, 3624 | "node_modules/uri-js": { 3625 | "version": "4.4.1", 3626 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3627 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3628 | "license": "BSD-2-Clause", 3629 | "dependencies": { 3630 | "punycode": "^2.1.0" 3631 | } 3632 | }, 3633 | "node_modules/validate-npm-package-license": { 3634 | "version": "3.0.4", 3635 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3636 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3637 | "license": "Apache-2.0", 3638 | "dependencies": { 3639 | "spdx-correct": "^3.0.0", 3640 | "spdx-expression-parse": "^3.0.0" 3641 | } 3642 | }, 3643 | "node_modules/verror": { 3644 | "version": "1.10.0", 3645 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 3646 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 3647 | "engines": [ 3648 | "node >=0.6.0" 3649 | ], 3650 | "license": "MIT", 3651 | "dependencies": { 3652 | "assert-plus": "^1.0.0", 3653 | "core-util-is": "1.0.2", 3654 | "extsprintf": "^1.2.0" 3655 | } 3656 | }, 3657 | "node_modules/which": { 3658 | "version": "1.3.1", 3659 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3660 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3661 | "license": "ISC", 3662 | "dependencies": { 3663 | "isexe": "^2.0.0" 3664 | }, 3665 | "bin": { 3666 | "which": "bin/which" 3667 | } 3668 | }, 3669 | "node_modules/which-boxed-primitive": { 3670 | "version": "1.0.2", 3671 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 3672 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 3673 | "license": "MIT", 3674 | "dependencies": { 3675 | "is-bigint": "^1.0.1", 3676 | "is-boolean-object": "^1.1.0", 3677 | "is-number-object": "^1.0.4", 3678 | "is-string": "^1.0.5", 3679 | "is-symbol": "^1.0.3" 3680 | }, 3681 | "funding": { 3682 | "url": "https://github.com/sponsors/ljharb" 3683 | } 3684 | }, 3685 | "node_modules/which-typed-array": { 3686 | "version": "1.1.15", 3687 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", 3688 | "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", 3689 | "license": "MIT", 3690 | "dependencies": { 3691 | "available-typed-arrays": "^1.0.7", 3692 | "call-bind": "^1.0.7", 3693 | "for-each": "^0.3.3", 3694 | "gopd": "^1.0.1", 3695 | "has-tostringtag": "^1.0.2" 3696 | }, 3697 | "engines": { 3698 | "node": ">= 0.4" 3699 | }, 3700 | "funding": { 3701 | "url": "https://github.com/sponsors/ljharb" 3702 | } 3703 | }, 3704 | "node_modules/word-wrap": { 3705 | "version": "1.2.5", 3706 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3707 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3708 | "license": "MIT", 3709 | "engines": { 3710 | "node": ">=0.10.0" 3711 | } 3712 | }, 3713 | "node_modules/wrappy": { 3714 | "version": "1.0.2", 3715 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3716 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3717 | "license": "ISC" 3718 | }, 3719 | "node_modules/write": { 3720 | "version": "0.2.1", 3721 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 3722 | "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", 3723 | "license": "MIT", 3724 | "dependencies": { 3725 | "mkdirp": "^0.5.1" 3726 | }, 3727 | "engines": { 3728 | "node": ">=0.10.0" 3729 | } 3730 | }, 3731 | "node_modules/xtend": { 3732 | "version": "4.0.2", 3733 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3734 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 3735 | "license": "MIT", 3736 | "engines": { 3737 | "node": ">=0.4" 3738 | } 3739 | } 3740 | } 3741 | } 3742 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "canvas-discussion", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node index.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "luxon": "^3.5.0", 15 | "node-canvas-api": "^1.7.0", 16 | "standard": "^12.0.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /util.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const { DateTime } = require('luxon') 4 | 5 | const toPacificTimeString = (date) => 6 | date 7 | ? DateTime.fromJSDate(date, { zone: 'utc' }) // Convert JS Date to Luxon DateTime in UTC 8 | .setZone('America/Los_Angeles') // Convert to Pacific Time 9 | .toFormat('yyyy-MM-dd HH:mm:ss ZZZZ') // Format the DateTime object 10 | : null 11 | 12 | const flatten = arr => arr.reduce((acc, cur) => 13 | Array.isArray(cur) 14 | ? [...acc, ...cur] 15 | : [...acc, cur] 16 | , []) 17 | 18 | const average = (arr) => { 19 | if (arr.length === 0) return 0 20 | const sum = arr.reduce((acc, curr) => acc + curr, 0) 21 | return sum / arr.length 22 | } 23 | 24 | // median from array 25 | const median = (arr) => { 26 | const sorted = arr.slice().sort() 27 | const mid = Math.floor(sorted.length / 2) 28 | return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 29 | } 30 | 31 | const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' 32 | const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' 33 | const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') 34 | const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') 35 | 36 | // Word count function 37 | const getWordCount = (str) => { 38 | const cleanStr = stripHTML(escapeComment(str)) 39 | //const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags 40 | return cleanStr.trim().split(/\s+/).length 41 | } 42 | 43 | // Function to calculate the topic summary 44 | const postStatistics = (posts, referenceTimestamp) => { 45 | // Number of posts 46 | const numberOfPosts = posts.length 47 | 48 | if (numberOfPosts === 0) { 49 | return { 50 | numberOfPosts: 0, 51 | medianWordCount: 0, 52 | averageTimeDiff: null, 53 | firstReplyTimestamp: null, 54 | averageTimeToPostFromFirst: null, 55 | averagePostsPerAuthor: null 56 | } 57 | } 58 | 59 | // Word counts 60 | const wordCounts = posts.map(post => getWordCount(post.postMessage)) 61 | 62 | const medianWordCount = Math.round(median(wordCounts) * 10) / 10 63 | 64 | // Average time in hours from topicCreatedAt to postTimestamp 65 | const timeDiffs = posts.map(post => { 66 | return (post.postTimestamp - referenceTimestamp) 67 | }) 68 | 69 | const averageTimeDiff = parseFloat(average(timeDiffs).toFixed(1)) / (1000 * 60 * 60) // Convert from milliseconds to hours 70 | 71 | const postCountsByAuthor = posts.reduce((acc, post) => { 72 | acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 73 | return acc 74 | }, {}) 75 | // Average number of posts per postAuthorId 76 | 77 | const postCounts = Object.values(postCountsByAuthor) 78 | const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) 79 | 80 | const firstReplyTimestamp = new Date(Math.min(...posts.map( 81 | post => new Date(post.postTimestamp)))) 82 | 83 | const timeDiffsFromFirst = posts 84 | .map(post => { 85 | return post.postTimestamp > firstReplyTimestamp 86 | ? (post.postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours 87 | : null 88 | }) 89 | .filter(diff => diff !== null) 90 | 91 | const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 92 | ? parseFloat(average(timeDiffsFromFirst).toFixed(1)) 93 | : 0 94 | 95 | return { 96 | numberOfPosts, 97 | medianWordCount, 98 | averageTimeDiff, 99 | firstReplyTimestamp, 100 | averageTimeToPostFromFirst, 101 | averagePostsPerAuthor 102 | } 103 | 104 | } 105 | module.exports = { 106 | flatten, 107 | escapeComment, 108 | stripHTML, 109 | writeHeader, 110 | appendRow, 111 | postStatistics, 112 | toPacificTimeString 113 | } 114 | -------------------------------------------------------------------------------- /writeSummaryByModuleToCSV.js: -------------------------------------------------------------------------------- 1 | 2 | const path = require('path') 3 | const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') 4 | 5 | // Function to calculate the module summary 6 | const moduleSummary = (module) => { 7 | const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() 8 | const moduleUnlockedAt = new Date(module.unlock_at) 9 | 10 | const postSummary = postStatistics(posts, moduleUnlockedAt) 11 | 12 | return postSummary 13 | } 14 | 15 | // Function to write the summary to CSV 16 | const writeSummaryByModuleToCSV = (courseId, modules) => { 17 | console.log(`Writing summary of module discussion data for course: ${courseId}`) 18 | const csvPath = path.join(__dirname, `output/${courseId}-module-discussion-summary.csv`) 19 | const headers = [ 20 | 'module_id', 21 | 'module_name', 22 | 'module_unlock_at', 23 | 'number_of_posts', 24 | 'median_word_count', 25 | 'average_time_to_post_hours', 26 | 'first_reply_timestamp', 27 | 'average_time_to_post_from_first_hours', 28 | 'average_posts_per_author' 29 | ] 30 | 31 | writeHeader(csvPath, headers) 32 | 33 | modules.forEach(module => { 34 | const summary = moduleSummary(module) 35 | const moduleDetails = { 36 | module_id: module.id, 37 | module_name: stripHTML(escapeComment(module.name)), 38 | module_created_at: toPacificTimeString(module.unlock_at) || toPacificTimeString(module.created_at), 39 | number_of_posts: summary.numberOfPosts, 40 | median_word_count: summary.medianWordCount, 41 | average_time_to_post_hours: summary.averageTimeDiff, 42 | first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), 43 | average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, 44 | average_posts_per_author: summary.averagePostsPerAuthor 45 | } 46 | appendRow(csvPath, Object.values(moduleDetails)) 47 | }) 48 | } 49 | 50 | module.exports = writeSummaryByModuleToCSV 51 | -------------------------------------------------------------------------------- /writeSummaryToCSV.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Adjust the path as necessary 3 | 4 | const topicSummary = (topic) => { 5 | const posts = topic.replies.flat() 6 | const topicCreatedAt = new Date(topic.topicCreatedAt) 7 | 8 | const postSummary = postStatistics(posts, topicCreatedAt) 9 | 10 | return postSummary 11 | 12 | } 13 | 14 | // Function to write the summary to CSV 15 | const writeSummaryToCSV = (courseId, data) => { 16 | 17 | console.log(`Writing summary of discussion data for course: ${courseId}`) 18 | const csvPath = path.join(__dirname, `output/${courseId}-discussion-summary.csv`) 19 | 20 | const headers = [ 21 | 'topic_id', 22 | 'topic_title', 23 | //'topic_message', 24 | 'topic_author_id', 25 | 'topic_author_name', 26 | 'topic_created_at', 27 | 'topic_posted_at', 28 | 'number_of_posts', 29 | 'median_posts_word_count', 30 | 'average_time_to_post_hours', 31 | 'first_reply_timestamp', 32 | 'average_time_to_post_from_first_reply_hours', 33 | 'average_posts_per_author' 34 | ] 35 | 36 | // Write the headers to the CSV file 37 | writeHeader(csvPath, Array.from(headers)) 38 | 39 | data.forEach(discussion => { 40 | const summary = topicSummary(discussion) 41 | 42 | const topicDetails = { 43 | topic_id: discussion.topicId, 44 | topic_title: stripHTML(escapeComment(discussion.topicTitle)), 45 | //topic_message: stripHTML(escapeComment(discussion.topicMessage)), 46 | topic_author_id: discussion.topicAuthorId, 47 | topic_author_name: escapeComment(discussion.topicAuthorName), 48 | topic_created_at: toPacificTimeString(discussion.topicCreatedAt), 49 | topic_posted_at: toPacificTimeString(discussion.topicPostedAt), 50 | number_of_posts: summary.numberOfPosts, 51 | median_posts_word_count: summary.medianWordCount, 52 | average_time_to_post_hours: summary.averageTimeDiff, 53 | first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), 54 | average_time_to_post_from_first_reply_hours: summary.averageTimeToPostFromFirst, 55 | average_posts_per_author: summary.averagePostsPerAuthor 56 | } 57 | appendRow(csvPath, Object.values(topicDetails)) 58 | }) 59 | } 60 | 61 | module.exports = writeSummaryToCSV 62 | -------------------------------------------------------------------------------- /writeToCSV.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString} = require('./util') // Adjust the path as necessary 4 | 5 | const writeToCSV = (courseId, data) => { 6 | 7 | console.log(`Writing discussion data for course: ${courseId}`); 8 | 9 | const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) 10 | 11 | const headers =[ 12 | 'topic_id', 13 | 'topic_title', 14 | 'topic_message', 15 | 'topic_author_id', 16 | 'topic_author_name', 17 | 'topic_created_at', 18 | 'topic_posted_at', 19 | 'post_author_id', 20 | 'post_author_name', 21 | 'post_id', 22 | 'post_parent_id', 23 | 'post_message', 24 | 'post_likes', 25 | 'post_timestamp' 26 | ] 27 | 28 | // Write the headers to the CSV file 29 | writeHeader(csvPath, headers) 30 | 31 | data.forEach(discussion => { 32 | const topicDetails = { 33 | topic_id: discussion.topicId, 34 | topic_title: stripHTML(escapeComment(discussion.topicTitle)), 35 | topic_message: stripHTML(escapeComment(discussion.topicMessage)), 36 | topic_author_id: discussion.topicAuthorId, 37 | topic_author_name: escapeComment(discussion.topicAuthorName), 38 | topic_created_at: toPacificTimeString(discussion.topicCreatedAt), 39 | topic_posted_at: toPacificTimeString(discussion.topicPostedAt) 40 | }; 41 | 42 | if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { 43 | discussion.replies.flat().forEach(post => { 44 | const postDetails = { 45 | ...topicDetails, 46 | post_author_id: post.postAuthorId, 47 | post_author_name: escapeComment(post.postAuthorName), 48 | post_id: post.postId, 49 | post_parent_id: post.postParentId, 50 | post_message: stripHTML(escapeComment(post.postMessage)), 51 | post_likes: post.postLikes, 52 | post_timestamp: toPacificTimeString(post.postTimestamp) 53 | }; 54 | appendRow(csvPath, Object.values(postDetails)) 55 | }) 56 | } else { 57 | appendRow(csvPath, Object.values(topicDetails)) 58 | } 59 | }) 60 | } 61 | 62 | module.exports = writeToCSV; 63 | --------------------------------------------------------------------------------