From 166cada8ffb07461e7fa43608f08cd95ca4ef737 Mon Sep 17 00:00:00 2001 From: "Bastien Fafchamps (bafa)" Date: Thu, 19 Oct 2023 11:13:16 +0200 Subject: [PATCH] [ADD] owl-vision: vscode extension initial commit Owl Vision is a vscode extension that improves owl developpement by adding syntax highlights in templates and commands to easly navigate between components and templates. It also adds a Component snippet. Commands: * `Owl Vision: Find Template`: - If the cursor is on a template name, finds the corresponding template. - If the cursor is on a component, finds the template of the selected component. * `Owl Vision: Find Component`: Finds the selected component definition. * `Owl Vision: Switch`: Finds the corresponding template or component depending on the current file. * `Owl Vision: Switch Besides`: Finds the corresponding template or component depending on the current file and opens it besides. Settings: * `owl-vision.js.include`: Javascript files to include in search. * `owl-vision.js.exclude`: Javascript files to exclude in search. * `owl-vision.xml.include`: XML files to include in search. * `owl-vision.xml.exclude`: XML files to exclude in search. --- .gitignore | 9 +- tools/owl-vision/.eslintrc.json | 24 + tools/owl-vision/.vscode/launch.json | 30 + tools/owl-vision/.vscode/tasks.json | 18 + tools/owl-vision/.vscodeignore | 12 + tools/owl-vision/CHANGELOG.md | 18 + tools/owl-vision/LICENSE | 856 +++ tools/owl-vision/README.md | 29 + tools/owl-vision/assets/icon128.png | Bin 0 -> 21398 bytes tools/owl-vision/assets/syntax_highlight.png | Bin 0 -> 141265 bytes tools/owl-vision/package-lock.json | 5564 +++++++++++++++++ tools/owl-vision/package.json | 136 + tools/owl-vision/snippets/component.json | 18 + tools/owl-vision/src/definiton_providers.ts | 29 + tools/owl-vision/src/extension.ts | 18 + tools/owl-vision/src/search.ts | 222 + tools/owl-vision/src/utils.ts | 69 + .../syntaxes/owl.markup.inline.json | 34 + .../syntaxes/owl.template.inline.json | 37 + tools/owl-vision/syntaxes/owl.template.json | 257 + tools/owl-vision/tsconfig.json | 13 + 21 files changed, 7392 insertions(+), 1 deletion(-) create mode 100644 tools/owl-vision/.eslintrc.json create mode 100644 tools/owl-vision/.vscode/launch.json create mode 100644 tools/owl-vision/.vscode/tasks.json create mode 100644 tools/owl-vision/.vscodeignore create mode 100644 tools/owl-vision/CHANGELOG.md create mode 100644 tools/owl-vision/LICENSE create mode 100644 tools/owl-vision/README.md create mode 100644 tools/owl-vision/assets/icon128.png create mode 100644 tools/owl-vision/assets/syntax_highlight.png create mode 100644 tools/owl-vision/package-lock.json create mode 100644 tools/owl-vision/package.json create mode 100644 tools/owl-vision/snippets/component.json create mode 100644 tools/owl-vision/src/definiton_providers.ts create mode 100644 tools/owl-vision/src/extension.ts create mode 100644 tools/owl-vision/src/search.ts create mode 100644 tools/owl-vision/src/utils.ts create mode 100644 tools/owl-vision/syntaxes/owl.markup.inline.json create mode 100644 tools/owl-vision/syntaxes/owl.template.inline.json create mode 100644 tools/owl-vision/syntaxes/owl.template.json create mode 100644 tools/owl-vision/tsconfig.json diff --git a/.gitignore b/.gitignore index 1b59d93f..e59c7346 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ yarn-debug.log* yarn-error.log* #ide's -.vscode +**/.vscode/* .idea node_modules @@ -26,3 +26,10 @@ release-notes.md # useful in some cases /temp + +# owl-vision +*/owl-vision/out/ +*/owl-vision/.vs/ +**/*.vsix +!*/owl-vision/.vscode/launch.json +!*/owl-vision/.vscode/tasks.json diff --git a/tools/owl-vision/.eslintrc.json b/tools/owl-vision/.eslintrc.json new file mode 100644 index 00000000..f9b22b79 --- /dev/null +++ b/tools/owl-vision/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": "warn", + "@typescript-eslint/semi": "warn", + "curly": "warn", + "eqeqeq": "warn", + "no-throw-literal": "warn", + "semi": "off" + }, + "ignorePatterns": [ + "out", + "dist", + "**/*.d.ts" + ] +} diff --git a/tools/owl-vision/.vscode/launch.json b/tools/owl-vision/.vscode/launch.json new file mode 100644 index 00000000..5a13b7ae --- /dev/null +++ b/tools/owl-vision/.vscode/launch.json @@ -0,0 +1,30 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ], + "outFiles": [ + "${workspaceFolder}/out/**/*.js" + ], + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Extension Tests", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" + ], + "outFiles": [ + "${workspaceFolder}/out/test/**/*.js" + ], + "preLaunchTask": "${defaultBuildTask}" + } + ] +} \ No newline at end of file diff --git a/tools/owl-vision/.vscode/tasks.json b/tools/owl-vision/.vscode/tasks.json new file mode 100644 index 00000000..84178379 --- /dev/null +++ b/tools/owl-vision/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} \ No newline at end of file diff --git a/tools/owl-vision/.vscodeignore b/tools/owl-vision/.vscodeignore new file mode 100644 index 00000000..2963f31e --- /dev/null +++ b/tools/owl-vision/.vscodeignore @@ -0,0 +1,12 @@ +.vscode/** +.vscode-test/** +src/** +.gitignore +.yarnrc +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts +**/*.vsix +scripts/** diff --git a/tools/owl-vision/CHANGELOG.md b/tools/owl-vision/CHANGELOG.md new file mode 100644 index 00000000..6303a2f6 --- /dev/null +++ b/tools/owl-vision/CHANGELOG.md @@ -0,0 +1,18 @@ +# Change Log + +All notable changes to the "owl-vision" extension will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), + +## [Unreleased] [0.0.1] - 2023-03-10 + +- Initial release + +### Added + +- Owl templates syntax highlight in xml files +- `Find Template` Command - Finds the template file of the currently selected element. +- `Find Component` Command - Finds the selected component definition. +- `Switch` Command - Finds the corresponding template or component file depending on the current file. +- `Switch Besides` Command - Finds the corresponding template or component file depending on the current file and opens it besides. +- `Owl Documentation` Sidebar - A webview which allows easly searching through the owl's documentation from github diff --git a/tools/owl-vision/LICENSE b/tools/owl-vision/LICENSE new file mode 100644 index 00000000..d003a948 --- /dev/null +++ b/tools/owl-vision/LICENSE @@ -0,0 +1,856 @@ +OWL-VISION is published under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3 +(LGPLv3), as included below. Since the LGPL is a set of additional +permissions on top of the GPL, the text of the GPL is included at the +bottom as well. + +Some external libraries and contributions bundled with OWL-VISION may be published +under other GPL-compatible licenses. For these, please refer to the relevant +source files and/or license files, in the source code tree. + +************************************************************************** + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +************************************************************************** + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + + +************************************************************************** \ No newline at end of file diff --git a/tools/owl-vision/README.md b/tools/owl-vision/README.md new file mode 100644 index 00000000..1917d34b --- /dev/null +++ b/tools/owl-vision/README.md @@ -0,0 +1,29 @@ +# 🦉 Owl Vision 🕶️ + +Owl Vision is an extension for the amazing [Owl framework](https://github.com/odoo/owl) that complements your templates with beautiful colors and allows you to more easily navigate between components and templates. + +![Syntax highlight preview](https://raw.githubusercontent.com/odoo/owl/master/tools/owl-vision/assets/syntax_highlight.png) + +This extension also adds a small Component snippet to allow you to create beautiful components as fast as possible! + +## Commands + +* `Owl Vision: Find Template`: + - If the cursor is on a template name, finds the corresponding template. + - If the cursor is on a component, finds the template of the selected component. +* `Owl Vision: Find Component`: Finds the selected component definition. +* `Owl Vision: Switch`: Finds the corresponding template or component depending on the current file. +* `Owl Vision: Switch Besides`: Finds the corresponding template or component depending on the current file and opens it besides. + +## Extension Settings + +This extension contributes the following settings: + +* `owl-vision.include`: Glob filter for files to include while searching. +* `owl-vision.exclude`: Glob filter for files to exclude while searching. + +## Troubleshooting + +### *The extension cannot find my templates/components* + +The include and exclude settings have default values that may not work with your project structure, try adapting them. diff --git a/tools/owl-vision/assets/icon128.png b/tools/owl-vision/assets/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..3c26545358563e9a7ad0fbd97b01127300c67f36 GIT binary patch literal 21398 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 ShGW45p?ASpi=^Rj>;C{pd}*ry literal 0 HcmV?d00001 diff --git a/tools/owl-vision/assets/syntax_highlight.png b/tools/owl-vision/assets/syntax_highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..c1790c7ef18e6d8e510f7e1b0ac757c98a6f9703 GIT binary patch literal 141265 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 z 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 literal 0 HcmV?d00001 diff --git a/tools/owl-vision/package-lock.json b/tools/owl-vision/package-lock.json new file mode 100644 index 00000000..d7dceb56 --- /dev/null +++ b/tools/owl-vision/package-lock.json @@ -0,0 +1,5564 @@ +{ + "name": "owl-vision", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "owl-vision", + "version": "0.0.1", + "license": "LGPL-3.0-only", + "devDependencies": { + "@types/node": "20.2.5", + "@types/vscode": "^1.73.0", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "@vscode/test-electron": "^2.3.2", + "@vscode/vsce": "^2.20.1", + "esbuild": "^0.19.5", + "eslint": "^8.41.0", + "typescript": "^5.1.3" + }, + "engines": { + "vscode": "^1.73.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", + "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", + "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", + "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", + "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", + "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", + "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", + "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", + "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", + "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", + "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", + "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", + "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", + "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", + "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", + "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", + "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", + "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", + "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", + "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", + "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", + "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", + "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "dev": true + }, + "node_modules/@types/vscode": { + "version": "1.83.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.1.tgz", + "integrity": "sha512-BHu51NaNKOtDf3BOonY3sKFFmZKEpRkzqkZVpSYxowLbs5JqjOQemYFob7Gs5rpxE5tiGhfpnMpcdF/oKrLg4w==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.5.tgz", + "integrity": "sha512-lAW7nQ0HuPqJnGJrtCzEKZCICtRizeP6qNanyCrjmdCOAAWjX3ixiG8RVPwqsYPQBWLPgYuE12qQlwXsOR/2fQ==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/vsce": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.21.1.tgz", + "integrity": "sha512-f45/aT+HTubfCU2oC7IaWnH9NjOWp668ML002QiFObFRVUCoLtcwepp9mmql/ArFUy+HCHp54Xrq4koTcOD6TA==", + "dev": true, + "dependencies": { + "azure-devops-node-api": "^11.0.1", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "commander": "^6.2.1", + "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^12.3.2", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^7.5.2", + "tmp": "^0.2.1", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 14" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-devops-node-api": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", + "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.5", + "@esbuild/android-arm64": "0.19.5", + "@esbuild/android-x64": "0.19.5", + "@esbuild/darwin-arm64": "0.19.5", + "@esbuild/darwin-x64": "0.19.5", + "@esbuild/freebsd-arm64": "0.19.5", + "@esbuild/freebsd-x64": "0.19.5", + "@esbuild/linux-arm": "0.19.5", + "@esbuild/linux-arm64": "0.19.5", + "@esbuild/linux-ia32": "0.19.5", + "@esbuild/linux-loong64": "0.19.5", + "@esbuild/linux-mips64el": "0.19.5", + "@esbuild/linux-ppc64": "0.19.5", + "@esbuild/linux-riscv64": "0.19.5", + "@esbuild/linux-s390x": "0.19.5", + "@esbuild/linux-x64": "0.19.5", + "@esbuild/netbsd-x64": "0.19.5", + "@esbuild/openbsd-x64": "0.19.5", + "@esbuild/sunos-x64": "0.19.5", + "@esbuild/win32-arm64": "0.19.5", + "@esbuild/win32-ia32": "0.19.5", + "@esbuild/win32-x64": "0.19.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "optional": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "optional": true + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "optional": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "optional": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "optional": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", + "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", + "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", + "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", + "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", + "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", + "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", + "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", + "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", + "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", + "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", + "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", + "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", + "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", + "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", + "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", + "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", + "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", + "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", + "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", + "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", + "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", + "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, + "@types/node": { + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", + "dev": true + }, + "@types/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "dev": true + }, + "@types/vscode": { + "version": "1.83.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.1.tgz", + "integrity": "sha512-BHu51NaNKOtDf3BOonY3sKFFmZKEpRkzqkZVpSYxowLbs5JqjOQemYFob7Gs5rpxE5tiGhfpnMpcdF/oKrLg4w==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vscode/test-electron": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.5.tgz", + "integrity": "sha512-lAW7nQ0HuPqJnGJrtCzEKZCICtRizeP6qNanyCrjmdCOAAWjX3ixiG8RVPwqsYPQBWLPgYuE12qQlwXsOR/2fQ==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + } + }, + "@vscode/vsce": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.21.1.tgz", + "integrity": "sha512-f45/aT+HTubfCU2oC7IaWnH9NjOWp668ML002QiFObFRVUCoLtcwepp9mmql/ArFUy+HCHp54Xrq4koTcOD6TA==", + "dev": true, + "requires": { + "azure-devops-node-api": "^11.0.1", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "commander": "^6.2.1", + "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "keytar": "^7.7.0", + "leven": "^3.1.0", + "markdown-it": "^12.3.2", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^7.5.2", + "tmp": "^0.2.1", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "azure-devops-node-api": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "dev": true, + "requires": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "optional": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "optional": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "esbuild": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", + "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.19.5", + "@esbuild/android-arm64": "0.19.5", + "@esbuild/android-x64": "0.19.5", + "@esbuild/darwin-arm64": "0.19.5", + "@esbuild/darwin-x64": "0.19.5", + "@esbuild/freebsd-arm64": "0.19.5", + "@esbuild/freebsd-x64": "0.19.5", + "@esbuild/linux-arm": "0.19.5", + "@esbuild/linux-arm64": "0.19.5", + "@esbuild/linux-ia32": "0.19.5", + "@esbuild/linux-loong64": "0.19.5", + "@esbuild/linux-mips64el": "0.19.5", + "@esbuild/linux-ppc64": "0.19.5", + "@esbuild/linux-riscv64": "0.19.5", + "@esbuild/linux-s390x": "0.19.5", + "@esbuild/linux-x64": "0.19.5", + "@esbuild/netbsd-x64": "0.19.5", + "@esbuild/openbsd-x64": "0.19.5", + "@esbuild/sunos-x64": "0.19.5", + "@esbuild/win32-arm64": "0.19.5", + "@esbuild/win32-ia32": "0.19.5", + "@esbuild/win32-x64": "0.19.5" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "optional": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "optional": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "optional": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "optional": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node-abi": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "dev": true, + "optional": true, + "requires": { + "semver": "^7.3.5" + } + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "optional": true + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "requires": { + "semver": "^5.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true + } + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "optional": true + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "optional": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/tools/owl-vision/package.json b/tools/owl-vision/package.json new file mode 100644 index 00000000..19ac8914 --- /dev/null +++ b/tools/owl-vision/package.json @@ -0,0 +1,136 @@ +{ + "name": "owl-vision", + "displayName": "Owl Vision", + "description": "Owl framework extension that highlights templates and ease navigation between components and templates.", + "publisher": "Odoo", + "license": "LGPL-3.0-only", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/odoo/owl/tree/master/tools/owl-vision" + }, + "icon": "assets/icon128.png", + "engines": { + "vscode": "^1.73.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "onLanguage:xml", + "onLanguage:js" + ], + "main": "./out/main.js", + "contributes": { + "commands": [ + { + "command": "owl-vision.switch", + "title": "Switch", + "category": "Owl Vision" + }, + { + "command": "owl-vision.switch-besides", + "title": "Switch Besides", + "category": "Owl Vision" + }, + { + "command": "owl-vision.find-component", + "title": "Find Component", + "category": "Owl Vision" + }, + { + "command": "owl-vision.find-template", + "title": "Find Template", + "category": "Owl Vision" + } + ], + "configuration": { + "title": "Owl Vision", + "properties": { + "owl-vision.include": { + "order": 0, + "type": "string", + "default": "**/*.js,**/*.ts,**/*.mjs,**/static/**/*.xml", + "description": "Files to include in search" + }, + "owl-vision.exclude": { + "order": 1, + "type": "string", + "default": "**/node_modules/**,**/lib/**,**/tests/**", + "description": "Files to exclude in search" + } + } + }, + "snippets": [ + { + "language": "javascript", + "path": "./snippets/component.json" + } + ], + "grammars": [ + { + "scopeName": "owl.template", + "path": "./syntaxes/owl.template.json", + "embeddedLanguages": { + "meta.embedded.block.javascript": "source.js" + }, + "tokenTypes": { + "string.quoted.double.xml": "other" + }, + "injectTo": [ + "text.xml" + ] + }, + { + "scopeName": "owl.template.inline", + "path": "./syntaxes/owl.template.inline.json", + "embeddedLanguages": { + "meta.embedded.block.xml": "xml" + }, + "injectTo": [ + "source.js", + "source.jsx", + "source.ts", + "source.tsx", + "text.html" + ] + }, + { + "scopeName": "owl.markup.inline", + "path": "./syntaxes/owl.markup.inline.json", + "embeddedLanguages": { + "meta.embedded.block.html": "html" + }, + "injectTo": [ + "source.js", + "source.jsx", + "source.ts", + "source.tsx", + "text.html" + ] + } + ] + }, + "scripts": { + "compile": "tsc -p ./", + "package": "vsce package", + "watch": "tsc -watch -p ./", + "lint": "eslint src --ext ts", + "pretest": "npm run compile && npm run lint", + "vscode:prepublish": "npm run esbuild-base -- --minify", + "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node", + "esbuild": "npm run esbuild-base -- --sourcemap", + "esbuild-watch": "npm run esbuild-base -- --sourcemap --watch" + }, + "devDependencies": { + "@types/node": "20.2.5", + "@types/vscode": "^1.73.0", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "@vscode/test-electron": "^2.3.2", + "@vscode/vsce": "^2.20.1", + "esbuild": "^0.19.5", + "eslint": "^8.41.0", + "typescript": "^5.1.3" + } +} \ No newline at end of file diff --git a/tools/owl-vision/snippets/component.json b/tools/owl-vision/snippets/component.json new file mode 100644 index 00000000..b1b6d1b8 --- /dev/null +++ b/tools/owl-vision/snippets/component.json @@ -0,0 +1,18 @@ +{ + "Basic owl component": { + "prefix": "owlcomponent", + "body": [ + "export class ${1:component-name} extends Component {", + " static template = \"${2:template-name}\";", + " static components = {};", + " static props = {};", + "", + " setup() {", + "", + " }", + "}", + "" + ], + "description": "The starting base for an owl component" + } +} diff --git a/tools/owl-vision/src/definiton_providers.ts b/tools/owl-vision/src/definiton_providers.ts new file mode 100644 index 00000000..6387e2e4 --- /dev/null +++ b/tools/owl-vision/src/definiton_providers.ts @@ -0,0 +1,29 @@ +import * as vscode from 'vscode'; +import { getSelectedText, showStatusMessage, hideStatusMessage } from './utils'; +import { Search } from './search'; + +export class ComponentDefinitionProvider implements vscode.DefinitionProvider { + + search: Search; + + constructor(search: Search) { + this.search = search; + } + + /** + * Interface implementation to provide definition when ctrl+click on Component + * tag in template. + */ + async provideDefinition(document: vscode.TextDocument, position: vscode.Position) { + const currentWord = getSelectedText(/<\/?[A-Z][a-zA-Z]+/, document, position); + if (!currentWord) { + return; + } + const componentName = currentWord.replace(/[\/<]/g, "").trim(); + + showStatusMessage(`Searching for component "${componentName}"`); + const result = await this.search.findComponent(componentName); + hideStatusMessage(); + return result; + } +} diff --git a/tools/owl-vision/src/extension.ts b/tools/owl-vision/src/extension.ts new file mode 100644 index 00000000..8e2a9620 --- /dev/null +++ b/tools/owl-vision/src/extension.ts @@ -0,0 +1,18 @@ +import * as vscode from 'vscode'; +import { Search } from './search'; +import { ComponentDefinitionProvider } from './definiton_providers'; + +export async function activate(context: vscode.ExtensionContext) { + const search = new Search(); + + context.subscriptions.push(vscode.commands.registerCommand('owl-vision.switch', () => search.switchCommand())); + context.subscriptions.push(vscode.commands.registerCommand('owl-vision.switch-besides', () => search.switchCommand(true))); + context.subscriptions.push(vscode.commands.registerCommand('owl-vision.find-component', () => search.findComponentCommand())); + context.subscriptions.push(vscode.commands.registerCommand('owl-vision.find-template', () => search.findTemplateCommand())); + + const componentDefProvider = new ComponentDefinitionProvider(search); + context.subscriptions.push(vscode.languages.registerDefinitionProvider({ language: 'xml' }, componentDefProvider)); + context.subscriptions.push(vscode.languages.registerDefinitionProvider({ language: 'javascript' }, componentDefProvider)); +} + +export function deactivate() { } diff --git a/tools/owl-vision/src/search.ts b/tools/owl-vision/src/search.ts new file mode 100644 index 00000000..d033942a --- /dev/null +++ b/tools/owl-vision/src/search.ts @@ -0,0 +1,222 @@ +import path = require('path'); +import * as vscode from 'vscode'; +import { getSelectedText, showStatusMessage, hideStatusMessage, getActiveCursorIndex, getClosestMatch } from './utils'; + +class SearchResult { + uri: vscode.Uri; + range: vscode.Range; + + constructor(uri: vscode.Uri, range: vscode.Range) { + this.uri = uri; + this.range = range; + } +} + +export class Search { + + finderCache = new Map(); + + public async switchCommand(openBesides: Boolean = false) { + if (!this.currentDocument) { + return; + } + + let result = undefined; + const text = this.currentDocument.getText(); + const isJs = this.currentDocument.fileName.endsWith(".js"); + const isXml = this.currentDocument.fileName.endsWith(".xml"); + + if (isJs) { + const templateName = this.getTemplateNameInJS(text); + if (templateName) { + result = await this.findTemplate(templateName); + } + } else if (isXml) { + const templateName = this.getTemplateNameInXML(text); + if (templateName) { + result = await this.findComponentFromTemplateName(templateName); + } + } + + if (result !== undefined) { + this.showResult(result, openBesides); + } else if (isJs) { + vscode.window.showWarningMessage(`Could not find a template for current component`); + } else if (isXml) { + vscode.window.showWarningMessage(`Could not find a component for current template`); + } + } + + public async findComponentCommand() { + const currentWord = getSelectedText(); + if (!currentWord) { + return; + } + + showStatusMessage(`Searching for component "${currentWord}"`); + const result = await this.findComponent(currentWord); + if (result) { + this.showResult(result); + } else { + vscode.window.showWarningMessage(`Could not find a component for "${currentWord}"`); + } + hideStatusMessage(); + } + + public async findTemplateCommand() { + const currentWord = getSelectedText(/[\w.-]+/); + if (!currentWord) { + return; + } + + showStatusMessage(`Searching for template "${currentWord}"`); + const result = await this.findTemplate(currentWord); + if (result) { + this.showResult(result); + } else { + vscode.window.showWarningMessage(`Could not find a template for "${currentWord}"`); + } + hideStatusMessage(); + } + + public async findComponent(componentName: string): Promise { + if (componentName.toLowerCase() === componentName || componentName.includes(".") || componentName.includes("-")) { + return; + } + + const query = this.buildQuery(`class\\s+`, componentName, `\\s+extends`); + return await this.find(componentName, query, "js"); + } + + public async findTemplate(templateName: string): Promise { + const isComponentName = templateName.match(/^[A-Z][a-zA-Z0-9_]*$/); + + if (isComponentName) { + const componentResult = await this.findComponent(templateName); + if (!componentResult) { + return; + } else { + const document = await vscode.workspace.openTextDocument(componentResult.uri); + const text = document.getText(); + const foundTemplateName = this.getTemplateNameInJS(text); + if (foundTemplateName) { + templateName = foundTemplateName; + } else { + return; + } + } + } + + const query = this.buildQuery(`t-name="`, templateName, `"`); + return await this.find(templateName, query, "xml"); + } + + private async findComponentFromTemplateName(templateName: string): Promise { + const query = this.buildQuery(`template\\s*=\\s*["']`, templateName, `["']`); + return await this.find(templateName, query, "js"); + } + + private getTemplateNameInJS(str: string): string | undefined { + return getClosestMatch(str, /template\s*=\s*["']([a-zA-Z0-9_\-\.]+)["']/g, +1); + } + + private getTemplateNameInXML(str: string): string | undefined { + return getClosestMatch(str, /t-name="([a-zA-Z0-9_\-\.]+)"/g); + } + + private async find( + name: string, + searchQuery: string, + fileType: "js" | "xml", + ) { + const key = `${name}-${fileType}`; + const cachedUri = this.finderCache.get(key); + if (cachedUri) { + const result = await this.findInFile(cachedUri, searchQuery); + if (result) { + return result; + } else { + this.finderCache.delete(key); + } + } + + const include = `{${vscode.workspace.getConfiguration().get(`owl-vision.include`)}}`; + const exclude = `{${vscode.workspace.getConfiguration().get(`owl-vision.exclude`)}}`; + const files = await this.getFiles(name, include, exclude); + + for (const file of files) { + const result = await this.findInFile(file, searchQuery); + if (result) { + this.finderCache.set(key, result.uri); + return result; + } + } + } + + private async getFiles( + searchQuery: string, + include: vscode.GlobPattern, + exclude: vscode.GlobPattern, + ): Promise> { + const files = await vscode.workspace.findFiles(include, exclude); + const parts = searchQuery.split(".").flatMap(s => s.split(/(?=[A-Z])/)).map(s => s.toLowerCase()); + const currentDir = this.currentDocument ? path.dirname(this.currentDocument.uri.path) : ""; + + const results = files.map(file => { + const filepath = file.path.toLowerCase(); + let score = 0; + if (path.dirname(filepath) === currentDir) { + score += 99; + } + for (const part of parts) { + if (filepath.includes(part)) { + score++; + } + } + return { score, file }; + }) + .sort((a, b) => a.score > b.score ? -1 : 1) + .slice(0, 25); + + return results.map(r => r.file); + } + + private async findInFile( + file: vscode.Uri, + searchQuery: string, + ): Promise { + const document = await vscode.workspace.openTextDocument(file); + const text = document.getText(); + const match = text.match(new RegExp(searchQuery)); + + if (match) { + const index = match.index || 0; + return new SearchResult(file, new vscode.Range( + document.positionAt(index), + document.positionAt(index) + )); + } + } + + private async showResult(result: SearchResult, openBesides: Boolean = false) { + const editor = await vscode.window.showTextDocument(result.uri, { + viewColumn: openBesides ? vscode.ViewColumn.Beside : vscode.ViewColumn.Active, + }); + + editor.revealRange(result.range); + editor.selection = new vscode.Selection(result.range.start, result.range.end); + } + + private get currentDocument() { + return vscode.window.activeTextEditor?.document; + } + + private buildQuery( + prefix: string, + content: string, + postfix: string, + ): string { + return `(?<=${prefix})(${content})(?=${postfix})`; + } +} + diff --git a/tools/owl-vision/src/utils.ts b/tools/owl-vision/src/utils.ts new file mode 100644 index 00000000..97139b6f --- /dev/null +++ b/tools/owl-vision/src/utils.ts @@ -0,0 +1,69 @@ +import * as vscode from 'vscode'; + +let statusMessage: vscode.StatusBarItem | undefined = undefined; + +export function showStatusMessage(text: string) { + if (!statusMessage) { + statusMessage = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left); + } + statusMessage.text = `$(sync~spin) ${text}`; + statusMessage.show(); +} + +export function hideStatusMessage() { + statusMessage?.hide(); +} + +export function getActiveCursorIndex(lineDelta = 0): number { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return 0; + } + const position = editor.selection.active.translate(lineDelta); + return editor.document.offsetAt(position); +} + +export function getSelectedText(regex?: RegExp, document?: vscode.TextDocument, position?: vscode.Position): string | undefined { + const editor = vscode.window.activeTextEditor; + if (!document) { + if (!editor) { + return; + } + document = editor.document; + } + + position = position || vscode.window.activeTextEditor?.selection.active; + + if (!position) { + return; + } + + const wordRange = document.getWordRangeAtPosition(position, regex); + if (!wordRange) { + return; + } + return document.getText(wordRange); +} + +export function getClosestMatch(str: string, regex: RegExp, lineDelta = 0): string | undefined { + const index = getActiveCursorIndex(lineDelta); + const matches = [...str.matchAll(regex)]; + + if (matches.length === 0) { + return; + } + + let closestMatch = matches[0]; + let closestDistance = Math.abs(index - (closestMatch.index || 0)); + + for (const match of matches) { + const matchIndex = match.index || 0; + const distance = Math.abs(index - matchIndex); + if (matchIndex < index && distance < closestDistance) { + closestMatch = match; + closestDistance = distance; + } + } + + return closestMatch[1]; +} diff --git a/tools/owl-vision/syntaxes/owl.markup.inline.json b/tools/owl-vision/syntaxes/owl.markup.inline.json new file mode 100644 index 00000000..c20c15e7 --- /dev/null +++ b/tools/owl-vision/syntaxes/owl.markup.inline.json @@ -0,0 +1,34 @@ +{ + "injectionSelector": "L:source.js -comment", + "scopeName": "owl.markup.inline", + "patterns": [ + { + "include": "#markup" + } + ], + "repository": { + "markup": { + "begin": "\\s+(markup)(`)", + "contentName": "meta.embedded.block.html", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js owl-markup" + }, + "2": { + "name": "punctuation.definition.string.template.begin.js string.template.js" + } + }, + "end": "(`)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.template.end.js string.template.js" + } + }, + "patterns": [ + { + "include": "text.html.basic" + } + ] + } + } +} diff --git a/tools/owl-vision/syntaxes/owl.template.inline.json b/tools/owl-vision/syntaxes/owl.template.inline.json new file mode 100644 index 00000000..4d8385c8 --- /dev/null +++ b/tools/owl-vision/syntaxes/owl.template.inline.json @@ -0,0 +1,37 @@ +{ + "injectionSelector": "L:source.js -comment", + "scopeName": "owl.template.inline", + "patterns": [ + { + "include": "#xml-tag" + } + ], + "repository": { + "xml-tag": { + "begin": "\\s+(xml)(`)", + "contentName": "meta.embedded.block.xml", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js owl-inline-template" + }, + "2": { + "name": "punctuation.definition.string.template.begin.js string.template.js" + } + }, + "end": "(`)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.template.end.js string.template.js" + } + }, + "patterns": [ + { + "include": "owl.template" + }, + { + "include": "text.xml" + } + ] + } + } +} diff --git a/tools/owl-vision/syntaxes/owl.template.json b/tools/owl-vision/syntaxes/owl.template.json new file mode 100644 index 00000000..032c2c69 --- /dev/null +++ b/tools/owl-vision/syntaxes/owl.template.json @@ -0,0 +1,257 @@ +{ + "injectionSelector": "L:text.xml -comment", + "scopeName": "owl.template", + "patterns": [ + { + "include": "#component-tags" + }, + { + "include": "#t-tag" + }, + { + "include": "#xml-tags" + }, + { + "include": "#props" + } + ], + "repository": { + "component-tags": { + "begin": "()", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.xml punctuation" + } + }, + "patterns": [ + { + "include": "#qweb-directives-interpreted" + }, + { + "include": "#qweb-directives-string" + }, + { + "include": "#component-props" + } + ] + }, + "component-props": { + "contentName": "meta.embedded.block.javascript string.quoted.double.xml", + "begin": "(\\s*)([a-zA-Z_:.]*)(=)(\")", + "beginCaptures": { + "2": { + "name": "entity.other.attribute-name.localname.xml owl.component.props" + }, + "4": { + "name": "punctuation.definition.string.begin.xml punctuation" + } + }, + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.xml punctuation" + } + }, + "patterns": [ + { + "include": "source.js" + }, + { + "name": "keyword.operator.logical.js", + "match": "\\s(and|or)\\s" + } + ] + }, + "xml-tags": { + "begin": "()", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.xml owl.xml.punctuation" + } + }, + "patterns": [ + { + "include": "#qweb-directives-interpreted" + }, + { + "include": "#qweb-directives-string" + }, + { + "include": "#qweb-directives-formatted-string" + }, + { + "include": "#xml-attributes" + }, + { + "name": "string.quoted.double.xml", + "match": "(\")((.*)(=>)(.*))(\")" + } + ] + }, + "xml-attributes": { + "contentName": "string.quoted.double.xml owl.xml.string", + "begin": "(\\s)([a-z][a-z_:.-]+)(=)(\")", + "beginCaptures": { + "2": { + "name": "entity.other.attribute-name.localname.xml owl.xml.attribute" + }, + "4": { + "name": "punctuation.definition.string.begin.xml owl.xml.punctuation" + } + }, + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.xml owl.xml.punctuation" + } + } + }, + "t-tag": { + "begin": "()", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.xml owl.punctuation" + } + }, + "patterns": [ + { + "include": "#qweb-directives-interpreted" + }, + { + "include": "#qweb-directives-string" + }, + { + "include": "#xml-attributes" + }, + { + "name": "string.quoted.double.xml", + "match": "(\")((.*)(=>)(.*))(\")" + } + ] + }, + "qweb-directives-interpreted": { + "contentName": "meta.embedded.block.javascript string.quoted.double.xml", + "begin": "(\\s)(t-if|t-else|t-elif|t-foreach|t-as|t-key|t-esc|t-out|t-props|t-component|t-set|t-value|t-portal|(t-att-|t-on-)[a-z_:.-]+)(=)(\")", + "beginCaptures": { + "2": { + "name": "entity.other.attribute-name.localname.xml owl.attribute" + }, + "5": { + "name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote" + } + }, + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote" + } + }, + "patterns": [ + { + "include": "source.js" + }, + { + "name": "keyword.operator.logical.js", + "match": "\\s(and|or)\\s" + } + ] + }, + "qweb-directives-string": { + "contentName": "string.quoted.double.xml", + "begin": "(\\s)(t-name|t-ref|t-slot|t-set-slot|t-model|t-translation)(=)(\")", + "beginCaptures": { + "2": { + "name": "entity.other.attribute-name.localname.xml owl.attribute" + }, + "5": { + "name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote" + } + }, + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote" + } + } + }, + "qweb-directives-formatted-string": { + "begin": "(\\s)(t-call|(t-attf-)[a-z_:.-]+)(=)(\")", + "beginCaptures": { + "2": { + "name": "entity.other.attribute-name.localname.xml owl.attribute owl.attribute.formatted" + }, + "5": { + "name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote" + } + }, + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote" + } + }, + "patterns": [ + { + "include": "#formatted-string" + } + ] + }, + "formatted-string": { + "contentName": "meta.embedded.block.javascript string.quoted.double.xml", + "begin": "([^\"|}}]*)({{)", + "beginCaptures": { + "1": { + "name": "string.quoted.double.xml" + }, + "2": { + "name": "string.quoted.double.xml owl.doublecurlybrackets" + } + }, + "end": "(}})([^\"|{{]*)", + "endCaptures": { + "1": { + "name": "string.quoted.double.xml owl.doublecurlybrackets" + }, + "2": { + "name": "string.quoted.double.xml" + } + }, + "patterns": [ + { + "include": "source.js" + } + ] + }, + "props": { + "name": "variable.language owl.expression.props", + "match": "\\b(props)\\b" + } + } +} \ No newline at end of file diff --git a/tools/owl-vision/tsconfig.json b/tools/owl-vision/tsconfig.json new file mode 100644 index 00000000..5674ee24 --- /dev/null +++ b/tools/owl-vision/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "outDir": "out", + "lib": [ + "ES2020" + ], + "sourceMap": true, + "rootDir": "src", + "strict": true + } +} \ No newline at end of file