diff --git a/.eslintignore b/.eslintignore index 9fd52a1d0..9ea4f8663 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,7 @@ # Javascript builds node_modules public +dist .DS_Store coverage diff --git a/.gitignore b/.gitignore index 42e5f23ad..cbd627c80 100644 --- a/.gitignore +++ b/.gitignore @@ -48,5 +48,6 @@ node_modules/ .env public/ +dist/ .DS_Store .idea diff --git a/.travis.yml b/.travis.yml index 98cb2db11..9272cf2c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ env: - REPO="git@github.com:RedHatInsights/cost-management-build" - REPO_DIR="cost-management-build" - BRANCH=${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH} - - APP_BUILD_DIR="public" + - APP_BUILD_DIR="dist" diff --git a/LICENSE b/LICENSE index dbbe35581..ab58b1298 100644 --- a/LICENSE +++ b/LICENSE @@ -1,661 +1,201 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 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 Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are 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. - - 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. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - 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 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 work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - 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 AGPL, see -. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Red Hat, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/components/charts/common/chart.styles.ts b/archive/components/charts/common/chart.styles.ts similarity index 100% rename from src/components/charts/common/chart.styles.ts rename to archive/components/charts/common/chart.styles.ts diff --git a/src/components/charts/common/chartLegend.tsx b/archive/components/charts/common/chartLegend.tsx similarity index 100% rename from src/components/charts/common/chartLegend.tsx rename to archive/components/charts/common/chartLegend.tsx diff --git a/src/components/charts/common/chartLegendItem.styles.ts b/archive/components/charts/common/chartLegendItem.styles.ts similarity index 100% rename from src/components/charts/common/chartLegendItem.styles.ts rename to archive/components/charts/common/chartLegendItem.styles.ts diff --git a/src/components/charts/common/chartLegendItem.test.tsx b/archive/components/charts/common/chartLegendItem.test.tsx similarity index 100% rename from src/components/charts/common/chartLegendItem.test.tsx rename to archive/components/charts/common/chartLegendItem.test.tsx diff --git a/src/components/charts/common/chartLegendItem.tsx b/archive/components/charts/common/chartLegendItem.tsx similarity index 100% rename from src/components/charts/common/chartLegendItem.tsx rename to archive/components/charts/common/chartLegendItem.tsx diff --git a/src/components/charts/common/chartTitle.tsx b/archive/components/charts/common/chartTitle.tsx similarity index 100% rename from src/components/charts/common/chartTitle.tsx rename to archive/components/charts/common/chartTitle.tsx diff --git a/config/chrome-render-loader.js b/config/chrome-render-loader.js deleted file mode 100644 index 3e0e3db87..000000000 --- a/config/chrome-render-loader.js +++ /dev/null @@ -1,7 +0,0 @@ -function chromeRenderLoader(source) { - const loaderUtils = require('loader-utils'); - const options = loaderUtils.getOptions(this); - return `document.getElementById('root').classList.add('${options.appName}');var isChrome2 = window.insights && window.insights.chrome && window.insights.chrome.isChrome2 || false; if(!isChrome2){${source}}`; -} - -module.exports = chromeRenderLoader; diff --git a/config/chunk-mapper.js b/config/chunk-mapper.js deleted file mode 100644 index 621ac4295..000000000 --- a/config/chunk-mapper.js +++ /dev/null @@ -1,55 +0,0 @@ -/* global */ - -/** - * The chunk mapper is required for other apps which do not run cost webpack init to propery register its modules - * If we want to used the remote module outside of cost and before it was run in browser, the fed-mods.json is required - * to properly find and register new remote modules. - */ -class ChunkMapper { - constructor(options) { - this.config = {}; - this.options = options || {}; - } - - apply(compiler) { - compiler.hooks.emit.tap('ChunkMapper', compilation => { - const prefix = - this.options.prefix || RegExp('^/.*/$').test(compiler.options.output.publicPath) - ? compiler.options.output.publicPath - : '/'; - compilation.chunks.forEach(({ name, files, runtime }) => { - const modules = Array.isArray(this.options.modules) ? this.options.modules : [this.options.modules]; - if (modules.find(oneEntry => RegExp(`${oneEntry}$`).test(runtime))) { - this.config[runtime] = { - ...(this.config[runtime] || {}), - ...(name === runtime - ? { - entry: Array.from(files) - .map(item => `${prefix}${item}`) - .filter((file, _index, array) => { - if (array.find(item => !RegExp('\\.hot-update\\.js$').test(item))) { - return !RegExp('\\.hot-update\\.js$').test(file); - } - - return true; - }), - } - : { - modules: [ - ...(this.config[runtime].modules || []), - ...Array.from(files).map(item => `${prefix}${item}`), - ], - }), - }; - } - }); - - compilation.assets['fed-mods.json'] = { - source: () => JSON.stringify(this.config, null, 4), - size: () => JSON.stringify(this.config, null, 4).length, - }; - }); - } -} - -module.exports = ChunkMapper; diff --git a/config/spandx.config.js b/config/spandx.config.js index 3a6522e31..a77484ac8 100644 --- a/config/spandx.config.js +++ b/config/spandx.config.js @@ -1,6 +1,4 @@ -/*global module*/ -const localhost = - process.env.PLATFORM === 'linux' ? 'localhost' : 'host.docker.internal'; +const localhost = process.env.PLATFORM === 'linux' ? 'localhost' : 'host.docker.internal'; module.exports = { routes: { @@ -10,12 +8,6 @@ module.exports = { '/beta/apps/cost-management': { host: `http://${localhost}:8002`, }, - '/cost-management': { - host: `http://${localhost}:8002`, - }, - '/beta/cost-management': { - host: `http://${localhost}:8002`, - }, // New URLs '/openshift/cost-management': { host: `http://${localhost}:8002`, diff --git a/config/spandx.config.local.js b/config/spandx.config.local.js index d3323a008..a08821fdd 100644 --- a/config/spandx.config.local.js +++ b/config/spandx.config.local.js @@ -1,9 +1,5 @@ -/* global exports */ -const localhost = - process.env.PLATFORM === 'linux' ? 'localhost' : 'host.docker.internal'; -const localKokuPort = process.env.LOCAL_API_PORT - ? process.env.LOCAL_API_PORT - : '80'; +const localhost = process.env.PLATFORM === 'linux' ? 'localhost' : 'host.docker.internal'; +const localKokuPort = process.env.LOCAL_API_PORT ? process.env.LOCAL_API_PORT : '80'; const localKoku = 'http://' + process.env.LOCAL_API + ':' + localKokuPort; exports.routes = { '/api/cost-management/': { diff --git a/koku-ui-manifest b/koku-ui-manifest index d1d0bf932..6f8b11107 100644 --- a/koku-ui-manifest +++ b/koku-ui-manifest @@ -55,7 +55,6 @@ mgmt_services/cost-mgmt:koku-ui/@babel/runtime:7.13.10.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/runtime:7.13.10.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/runtime:7.13.10.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/runtime:7.13.10.yarnlock -mgmt_services/cost-mgmt:koku-ui/@babel/runtime:7.13.10.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/template:7.12.13.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/template:7.12.13.yarnlock mgmt_services/cost-mgmt:koku-ui/@babel/traverse:7.13.0.yarnlock @@ -89,29 +88,31 @@ mgmt_services/cost-mgmt:koku-ui/@nodelib/fs.scandir:2.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/@nodelib/fs.stat:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/@nodelib/fs.stat:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/@nodelib/fs.walk:1.2.6.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/patternfly:4.102.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-charts:6.14.16.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-core:4.115.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-core:4.115.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-icons:4.10.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-icons:4.10.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-styles:4.10.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-styles:4.10.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-table:4.26.6.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-tokens:4.11.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/@patternfly/react-tokens:4.11.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/patternfly:4.103.6.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-charts:6.14.22.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-core:4.121.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-core:4.121.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-icons:4.10.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-icons:4.10.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-styles:4.10.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-styles:4.10.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-table:4.27.6.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-tokens:4.11.8.yarnlock +mgmt_services/cost-mgmt:koku-ui/@patternfly/react-tokens:4.11.8.yarnlock mgmt_services/cost-mgmt:koku-ui/@popperjs/core:2.9.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-config-utilities:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-notifications:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-utilities:3.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-utilities:3.1.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-utilities:3.1.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components:3.1.7.yarnlock -mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/rbac-client:1.0.96.yarnlock +mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components-utilities:3.1.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/frontend-components:3.1.11.yarnlock +mgmt_services/cost-mgmt:koku-ui/@redhat-cloud-services/rbac-client:1.0.97.yarnlock mgmt_services/cost-mgmt:koku-ui/@restart/context:2.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/@restart/hooks:0.3.26.yarnlock mgmt_services/cost-mgmt:koku-ui/@restart/hooks:0.3.26.yarnlock mgmt_services/cost-mgmt:koku-ui/@scalprum/core:0.0.11.yarnlock mgmt_services/cost-mgmt:koku-ui/@scalprum/react-core:0.0.16.yarnlock +mgmt_services/cost-mgmt:koku-ui/@schibstedpl/circuit-breaker-js:0.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/@sentry/browser:5.30.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@sentry/core:5.30.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@sentry/hub:5.30.0.yarnlock @@ -140,12 +141,12 @@ mgmt_services/cost-mgmt:koku-ui/@types/enzyme:3.10.8.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/eslint-scope:3.7.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/eslint:7.2.7.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/estree:0.0.46.yarnlock -mgmt_services/cost-mgmt:koku-ui/@types/estree:0.0.46.yarnlock +mgmt_services/cost-mgmt:koku-ui/@types/estree:0.0.47.yarnlock +mgmt_services/cost-mgmt:koku-ui/@types/glob:7.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/graceful-fs:4.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/history:4.7.8.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/hoist-non-react-statics:3.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/html-minifier-terser:5.1.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@types/http-proxy:1.17.5.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/i18next-xhr-backend:1.4.2.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/i18next:13.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/invariant:2.2.34.yarnlock @@ -160,6 +161,7 @@ mgmt_services/cost-mgmt:koku-ui/@types/json-schema:7.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/json-schema:7.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/json-schema:7.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/json5:0.0.29.yarnlock +mgmt_services/cost-mgmt:koku-ui/@types/minimatch:3.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/node:14.14.33.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/normalize-package-data:2.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/prettier:2.2.2.yarnlock @@ -176,7 +178,6 @@ mgmt_services/cost-mgmt:koku-ui/@types/react:17.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/react:17.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/react:17.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/react:17.0.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/@types/retry:0.12.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/scheduler:0.16.1.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/source-list-map:0.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/@types/stack-utils:2.0.0.yarnlock @@ -209,9 +210,9 @@ mgmt_services/cost-mgmt:koku-ui/@webassemblyjs/wasm-gen:1.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@webassemblyjs/wasm-opt:1.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@webassemblyjs/wasm-parser:1.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@webassemblyjs/wast-printer:1.11.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/@webpack-cli/configtest:1.0.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/@webpack-cli/info:1.2.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/@webpack-cli/serve:1.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/@webpack-cli/configtest:1.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/@webpack-cli/info:1.2.4.yarnlock +mgmt_services/cost-mgmt:koku-ui/@webpack-cli/serve:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@wojtekmaj/enzyme-adapter-react-17:0.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/@xstate/graph:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/@xstate/test:0.4.2.yarnlock @@ -229,21 +230,27 @@ mgmt_services/cost-mgmt:koku-ui/acorn-walk:7.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/acorn:7.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/acorn:7.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/acorn:8.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/acorn:8.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/aggregate-error:3.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/acorn:8.2.4.yarnlock mgmt_services/cost-mgmt:koku-ui/airbnb-prop-types:2.16.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/ajv-errors:1.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/ajv-keywords:3.5.2.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv-keywords:3.5.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/ajv:5.5.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/ajv:6.12.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv:6.12.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv:6.12.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv:6.12.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv:6.12.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ajv:7.2.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/ansi-colors:3.2.4.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-colors:4.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-escapes:4.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-html:0.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-regex:2.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/ansi-regex:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-regex:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-styles:3.2.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/ansi-styles:3.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-styles:4.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ansi-styles:4.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/anymatch:2.0.0.yarnlock @@ -260,7 +267,9 @@ mgmt_services/cost-mgmt:koku-ui/array-flatten:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/array-flatten:2.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/array-includes:3.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/array-includes:3.1.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/array-union:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/array-union:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/array-uniq:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/array-unique:0.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/array.prototype.find:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/array.prototype.flat:1.2.4.yarnlock @@ -272,6 +281,8 @@ mgmt_services/cost-mgmt:koku-ui/assert-plus:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/assign-symbols:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ast-types-flow:0.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/astral-regex:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/async-each:1.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/async-limiter:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/async:2.6.3.yarnlock mgmt_services/cost-mgmt:koku-ui/asynckit:0.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/atob:2.1.2.yarnlock @@ -281,6 +292,7 @@ mgmt_services/cost-mgmt:koku-ui/awesome-imperative-promise:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/awesome-only-resolves-last-promise:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/aws-sign2:0.7.0.yarnlock mgmt_services/cost-mgmt:koku-ui/aws4:1.11.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/aws4:1.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/axe-core:4.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/axios:0.21.1.yarnlock mgmt_services/cost-mgmt:koku-ui/axios:0.21.1.yarnlock @@ -293,26 +305,33 @@ mgmt_services/cost-mgmt:koku-ui/babel-preset-current-node-syntax:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/babel-preset-jest:26.6.2.yarnlock mgmt_services/cost-mgmt:koku-ui/bail:1.0.5.yarnlock mgmt_services/cost-mgmt:koku-ui/balanced-match:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/base64-js:1.5.1.yarnlock mgmt_services/cost-mgmt:koku-ui/base:0.11.2.yarnlock mgmt_services/cost-mgmt:koku-ui/batch:0.6.1.yarnlock mgmt_services/cost-mgmt:koku-ui/bcrypt-pbkdf:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/big.js:5.2.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/binary-extensions:1.13.1.yarnlock mgmt_services/cost-mgmt:koku-ui/binary-extensions:2.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/bindings:1.5.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/bl:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/body-parser:1.19.0.yarnlock mgmt_services/cost-mgmt:koku-ui/bonjour:3.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/boolbase:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/boolbase:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/brace-expansion:1.1.11.yarnlock mgmt_services/cost-mgmt:koku-ui/braces:2.3.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/braces:2.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/braces:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/braces:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/browser-process-hrtime:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/browserslist:4.16.3.yarnlock mgmt_services/cost-mgmt:koku-ui/bs-logger:0.2.6.yarnlock mgmt_services/cost-mgmt:koku-ui/bser:2.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/buffer-equal-constant-time:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/buffer-from:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/buffer-from:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/buffer-indexof:1.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/buffer:5.7.1.yarnlock mgmt_services/cost-mgmt:koku-ui/bytes:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/bytes:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/cache-base:1.0.1.yarnlock @@ -326,6 +345,7 @@ mgmt_services/cost-mgmt:koku-ui/camelcase:5.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/camelcase:6.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/camelcase:6.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/caniuse-lite:1.0.30001197.yarnlock +mgmt_services/cost-mgmt:koku-ui/capitalize:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/capture-exit:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/caseless:0.12.0.yarnlock mgmt_services/cost-mgmt:koku-ui/chalk:2.4.2.yarnlock @@ -333,24 +353,32 @@ mgmt_services/cost-mgmt:koku-ui/chalk:2.4.2.yarnlock mgmt_services/cost-mgmt:koku-ui/chalk:2.4.2.yarnlock mgmt_services/cost-mgmt:koku-ui/chalk:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/chalk:4.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/chalk:4.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/char-regex:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/character-entities-legacy:1.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/character-entities:1.2.4.yarnlock mgmt_services/cost-mgmt:koku-ui/character-reference-invalid:1.1.4.yarnlock +mgmt_services/cost-mgmt:koku-ui/chardet:0.7.0.yarnlock mgmt_services/cost-mgmt:koku-ui/cheerio-select-tmp:0.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/cheerio:1.0.0-rc.5.yarnlock mgmt_services/cost-mgmt:koku-ui/chokidar:3.5.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/chokidar:3.5.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/chokidar:2.1.8.yarnlock mgmt_services/cost-mgmt:koku-ui/chrome-trace-event:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/ci-info:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/cjs-module-lexer:0.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/class-utils:0.3.6.yarnlock mgmt_services/cost-mgmt:koku-ui/classnames:2.2.6.yarnlock mgmt_services/cost-mgmt:koku-ui/clean-css:4.2.3.yarnlock -mgmt_services/cost-mgmt:koku-ui/clean-stack:2.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/cli-cursor:3.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/cli-spinners:2.6.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/cli-width:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/cliui:3.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/cliui:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/cliui:6.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/clone-deep:4.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/clone:1.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/clone:2.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/clone:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/co:4.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/code-point-at:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/collapse-white-space:1.0.6.yarnlock @@ -364,13 +392,13 @@ mgmt_services/cost-mgmt:koku-ui/colorette:1.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/colorette:1.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/combined-stream:1.0.8.yarnlock mgmt_services/cost-mgmt:koku-ui/combined-stream:1.0.8.yarnlock +mgmt_services/cost-mgmt:koku-ui/combined-stream:1.0.8.yarnlock mgmt_services/cost-mgmt:koku-ui/commander:7.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/commander:7.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/commander:2.20.3.yarnlock mgmt_services/cost-mgmt:koku-ui/commander:2.20.3.yarnlock mgmt_services/cost-mgmt:koku-ui/commander:4.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/comment-parser:1.1.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/commondir:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/component-emitter:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/compressible:2.0.18.yarnlock mgmt_services/cost-mgmt:koku-ui/compression:1.7.4.yarnlock @@ -397,7 +425,7 @@ mgmt_services/cost-mgmt:koku-ui/cross-spawn:7.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/cross-spawn:7.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/cross-spawn:7.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/css-in-js-utils:2.0.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/css-loader:5.0.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/css-loader:5.2.4.yarnlock mgmt_services/cost-mgmt:koku-ui/css-select:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/css-select:3.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/css-what:3.4.2.yarnlock @@ -432,6 +460,7 @@ mgmt_services/cost-mgmt:koku-ui/debug:2.6.9.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:2.6.9.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:2.6.9.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:3.2.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/debug:3.2.7.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:4.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:4.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/debug:4.3.1.yarnlock @@ -444,12 +473,13 @@ mgmt_services/cost-mgmt:koku-ui/deep-equal:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/deep-is:0.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/deep-is:0.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/deepmerge:4.2.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/default-gateway:6.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/default-gateway:4.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/defaults:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/define-properties:1.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/define-property:0.2.5.yarnlock mgmt_services/cost-mgmt:koku-ui/define-property:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/define-property:2.0.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/del:6.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/del:4.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/delaunator:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/delaunay-find:0.0.5.yarnlock mgmt_services/cost-mgmt:koku-ui/delayed-stream:1.0.0.yarnlock @@ -487,17 +517,18 @@ mgmt_services/cost-mgmt:koku-ui/domutils:2.4.4.yarnlock mgmt_services/cost-mgmt:koku-ui/domutils:2.4.4.yarnlock mgmt_services/cost-mgmt:koku-ui/dot-case:3.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/ecc-jsbn:0.1.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/ecdsa-sig-formatter:1.0.11.yarnlock mgmt_services/cost-mgmt:koku-ui/ee-first:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/electron-to-chromium:1.3.683.yarnlock mgmt_services/cost-mgmt:koku-ui/emittery:0.7.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/emoji-regex:7.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/emoji-regex:8.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/emoji-regex:9.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/emojis-list:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/encodeurl:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/end-of-stream:1.4.4.yarnlock mgmt_services/cost-mgmt:koku-ui/enhanced-resolve:4.5.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/enhanced-resolve:5.7.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/enquirer:2.3.6.yarnlock +mgmt_services/cost-mgmt:koku-ui/enhanced-resolve:5.8.2.yarnlock mgmt_services/cost-mgmt:koku-ui/enquirer:2.3.6.yarnlock mgmt_services/cost-mgmt:koku-ui/entities:1.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/entities:2.2.0.yarnlock @@ -535,7 +566,7 @@ mgmt_services/cost-mgmt:koku-ui/eslint-plugin-import:2.22.1.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-jest:21.27.2.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-jsdoc:32.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-jsx-a11y:6.4.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/eslint-plugin-markdown:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/eslint-plugin-markdown:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-node:6.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-patternfly-react:4.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/eslint-plugin-prettier:2.7.0.yarnlock @@ -572,6 +603,7 @@ mgmt_services/cost-mgmt:koku-ui/esutils:2.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/etag:1.8.1.yarnlock mgmt_services/cost-mgmt:koku-ui/eventemitter3:4.0.7.yarnlock mgmt_services/cost-mgmt:koku-ui/events:3.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/eventsource:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/exec-sh:0.3.4.yarnlock mgmt_services/cost-mgmt:koku-ui/execa:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/execa:4.1.0.yarnlock @@ -585,9 +617,12 @@ mgmt_services/cost-mgmt:koku-ui/extend-shallow:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/extend-shallow:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/extend:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/extend:3.0.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/extend:3.0.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/external-editor:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/extglob:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/extsprintf:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/extsprintf:1.4.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/fast-deep-equal:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/fast-deep-equal:3.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/fast-diff:1.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/fast-diff:1.2.0.yarnlock @@ -601,15 +636,17 @@ mgmt_services/cost-mgmt:koku-ui/fastest-levenshtein:1.0.12.yarnlock mgmt_services/cost-mgmt:koku-ui/fastq:1.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/faye-websocket:0.11.3.yarnlock mgmt_services/cost-mgmt:koku-ui/fb-watchman:2.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/figures:3.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/file-entry-cache:6.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/file-selector:0.1.19.yarnlock +mgmt_services/cost-mgmt:koku-ui/file-uri-to-path:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/fill-range:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/fill-range:7.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/finalhandler:1.1.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/find-cache-dir:3.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/find-up:1.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/find-up:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/find-up:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/find-up:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/find-up:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/find-up:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/flat-cache:3.0.4.yarnlock @@ -620,11 +657,12 @@ mgmt_services/cost-mgmt:koku-ui/follow-redirects:1.13.3.yarnlock mgmt_services/cost-mgmt:koku-ui/for-in:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/forever-agent:0.6.1.yarnlock mgmt_services/cost-mgmt:koku-ui/form-data:2.3.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/form-data:2.3.3.yarnlock mgmt_services/cost-mgmt:koku-ui/forwarded:0.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/fragment-cache:0.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/fresh:0.5.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/fs-monkey:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/fs.realpath:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/fsevents:1.2.13.yarnlock mgmt_services/cost-mgmt:koku-ui/fsevents:2.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/fsevents:2.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/function-bind:1.1.1.yarnlock @@ -647,11 +685,14 @@ mgmt_services/cost-mgmt:koku-ui/get-value:2.0.6.yarnlock mgmt_services/cost-mgmt:koku-ui/get-value:2.0.6.yarnlock mgmt_services/cost-mgmt:koku-ui/getpass:0.1.7.yarnlock mgmt_services/cost-mgmt:koku-ui/git-revision-webpack-plugin:3.0.6.yarnlock +mgmt_services/cost-mgmt:koku-ui/glob-parent:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/glob-parent:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/glob-parent:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/glob-parent:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/glob-parent:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/glob-to-regexp:0.4.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/glob:7.1.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/glob:7.1.7.yarnlock mgmt_services/cost-mgmt:koku-ui/glob:7.1.6.yarnlock mgmt_services/cost-mgmt:koku-ui/glob:7.1.6.yarnlock mgmt_services/cost-mgmt:koku-ui/glob:7.1.6.yarnlock @@ -660,12 +701,15 @@ mgmt_services/cost-mgmt:koku-ui/glob:7.1.6.yarnlock mgmt_services/cost-mgmt:koku-ui/globals:11.12.0.yarnlock mgmt_services/cost-mgmt:koku-ui/globals:12.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/globby:11.0.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/globby:6.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/good-guy-http:1.12.0.yarnlock mgmt_services/cost-mgmt:koku-ui/graceful-fs:4.2.6.yarnlock mgmt_services/cost-mgmt:koku-ui/graceful-fs:4.2.6.yarnlock mgmt_services/cost-mgmt:koku-ui/graceful-fs:4.2.6.yarnlock mgmt_services/cost-mgmt:koku-ui/growly:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/handle-thing:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/har-schema:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/har-validator:5.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/har-validator:5.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/has-bigints:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/has-flag:3.0.0.yarnlock @@ -679,6 +723,7 @@ mgmt_services/cost-mgmt:koku-ui/has-values:0.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/has-values:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/has:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/he:1.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/he:1.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/history:4.10.1.yarnlock mgmt_services/cost-mgmt:koku-ui/hoist-non-react-statics:3.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/hoist-non-react-statics:3.3.2.yarnlock @@ -688,13 +733,13 @@ mgmt_services/cost-mgmt:koku-ui/hosted-git-info:2.8.8.yarnlock mgmt_services/cost-mgmt:koku-ui/hpack.js:2.1.6.yarnlock mgmt_services/cost-mgmt:koku-ui/html-element-map:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/html-encoding-sniffer:2.0.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/html-entities:2.3.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/html-entities:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/html-escaper:2.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/html-loader:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/html-minifier-terser:5.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/html-minifier-terser:5.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/html-parse-stringify2:2.0.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/html-parse-stringify2:2.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/html-parse-stringify:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/html-replace-webpack-plugin:2.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/html-webpack-plugin:5.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/htmlparser2:3.10.1.yarnlock @@ -704,7 +749,7 @@ mgmt_services/cost-mgmt:koku-ui/http-errors:1.7.2.yarnlock mgmt_services/cost-mgmt:koku-ui/http-errors:1.6.3.yarnlock mgmt_services/cost-mgmt:koku-ui/http-errors:1.7.3.yarnlock mgmt_services/cost-mgmt:koku-ui/http-parser-js:0.5.3.yarnlock -mgmt_services/cost-mgmt:koku-ui/http-proxy-middleware:1.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/http-proxy-middleware:0.19.1.yarnlock mgmt_services/cost-mgmt:koku-ui/http-proxy:1.18.1.yarnlock mgmt_services/cost-mgmt:koku-ui/http-signature:1.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/human-date:1.4.0.yarnlock @@ -717,16 +762,18 @@ mgmt_services/cost-mgmt:koku-ui/i18next-xhr-backend:3.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/i18next:19.9.2.yarnlock mgmt_services/cost-mgmt:koku-ui/i18next:19.8.8.yarnlock mgmt_services/cost-mgmt:koku-ui/iconv-lite:0.4.24.yarnlock +mgmt_services/cost-mgmt:koku-ui/iconv-lite:0.4.24.yarnlock mgmt_services/cost-mgmt:koku-ui/icss-utils:5.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/icss-utils:5.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/ieee754:1.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ignore:3.3.10.yarnlock mgmt_services/cost-mgmt:koku-ui/ignore:4.0.6.yarnlock mgmt_services/cost-mgmt:koku-ui/ignore:5.1.8.yarnlock mgmt_services/cost-mgmt:koku-ui/import-fresh:3.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/import-fresh:3.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/import-local:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/import-local:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/imurmurhash:0.1.4.yarnlock -mgmt_services/cost-mgmt:koku-ui/indent-string:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/indexes-of:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/inflight:1.0.6.yarnlock mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock @@ -735,18 +782,20 @@ mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock +mgmt_services/cost-mgmt:koku-ui/inherits:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/inherits:2.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/inline-style-prefixer:5.1.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/internal-ip:6.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/inquirer:8.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/internal-ip:4.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/internal-slot:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/interpret:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/invariant:2.2.4.yarnlock mgmt_services/cost-mgmt:koku-ui/invert-kv:1.0.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/ip-regex:4.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/ip-regex:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/ip:1.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/ip:1.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/ipaddr.js:1.9.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ipaddr.js:1.9.1.yarnlock -mgmt_services/cost-mgmt:koku-ui/ipaddr.js:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-absolute-url:3.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/is-accessor-descriptor:0.1.6.yarnlock mgmt_services/cost-mgmt:koku-ui/is-accessor-descriptor:1.0.0.yarnlock @@ -755,6 +804,7 @@ mgmt_services/cost-mgmt:koku-ui/is-alphanumerical:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/is-arguments:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-arrayish:0.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-bigint:1.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-binary-path:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-binary-path:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-boolean-object:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-boolean-object:1.1.0.yarnlock @@ -777,22 +827,25 @@ mgmt_services/cost-mgmt:koku-ui/is-extendable:0.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-extendable:0.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-extendable:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-extglob:2.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-extglob:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-fullwidth-code-point:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-fullwidth-code-point:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-fullwidth-code-point:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-generator-fn:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-glob:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-glob:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-glob:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-glob:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-hexadecimal:1.0.4.yarnlock -mgmt_services/cost-mgmt:koku-ui/is-ip:3.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-interactive:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-negative-zero:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-number-object:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/is-number:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-number:7.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-path-cwd:2.2.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/is-path-inside:3.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-path-in-cwd:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-path-inside:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-plain-obj:1.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/is-plain-obj:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-plain-object:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/is-plain-object:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/is-plain-object:5.0.0.yarnlock @@ -809,11 +862,12 @@ mgmt_services/cost-mgmt:koku-ui/is-symbol:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/is-symbol:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/is-typedarray:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-typedarray:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-unicode-supported:0.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-utf8:0.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/is-whitespace-character:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/is-windows:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/is-word-character:1.0.4.yarnlock -mgmt_services/cost-mgmt:koku-ui/is-wsl:2.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/is-wsl:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/is-wsl:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/isarray:0.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/isarray:1.0.0.yarnlock @@ -871,6 +925,7 @@ mgmt_services/cost-mgmt:koku-ui/jsdom:16.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/jsesc:2.5.2.yarnlock mgmt_services/cost-mgmt:koku-ui/json-parse-better-errors:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/json-parse-even-better-errors:2.3.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/json-schema-traverse:0.3.1.yarnlock mgmt_services/cost-mgmt:koku-ui/json-schema-traverse:0.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/json-schema-traverse:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/json-schema:0.2.3.yarnlock @@ -878,6 +933,7 @@ mgmt_services/cost-mgmt:koku-ui/json-stable-stringify-without-jsonify:1.0.1.yarn mgmt_services/cost-mgmt:koku-ui/json-stable-stringify:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/json-stringify-safe:5.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/json-stringify-safe:5.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/json3:3.3.3.yarnlock mgmt_services/cost-mgmt:koku-ui/json5:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/json5:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/json5:1.0.1.yarnlock @@ -885,6 +941,8 @@ mgmt_services/cost-mgmt:koku-ui/jsonify:0.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/jsprim:1.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/jsx-ast-utils:3.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/jsx-ast-utils:3.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/jwa:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/jws:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/killable:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/kind-of:3.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/kind-of:3.2.2.yarnlock @@ -908,6 +966,7 @@ mgmt_services/cost-mgmt:koku-ui/load-json-file:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/loader-runner:4.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/loader-utils:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/locate-path:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/locate-path:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/locate-path:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/lodash-es:4.17.21.yarnlock mgmt_services/cost-mgmt:koku-ui/lodash.assign:4.2.0.yarnlock @@ -922,6 +981,10 @@ mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock +mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock +mgmt_services/cost-mgmt:koku-ui/lodash:4.17.21.yarnlock +mgmt_services/cost-mgmt:koku-ui/log-symbols:4.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/loglevel:1.7.1.yarnlock mgmt_services/cost-mgmt:koku-ui/loglevelnext:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/loose-envify:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/loose-envify:1.4.0.yarnlock @@ -932,22 +995,20 @@ mgmt_services/cost-mgmt:koku-ui/lower-case:2.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/lru-cache:6.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/lz-string:1.4.4.yarnlock mgmt_services/cost-mgmt:koku-ui/make-dir:3.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/make-dir:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/make-error:1.3.6.yarnlock mgmt_services/cost-mgmt:koku-ui/makeerror:1.0.11.yarnlock -mgmt_services/cost-mgmt:koku-ui/map-age-cleaner:0.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/map-cache:0.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/map-visit:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/markdown-escapes:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/media-typer:0.3.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/mem:8.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/memfs:3.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/memory-fs:0.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/memory-fs:0.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/merge-descriptors:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/merge-stream:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/merge2:1.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/methods:1.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/micromatch:3.1.10.yarnlock +mgmt_services/cost-mgmt:koku-ui/micromatch:3.1.10.yarnlock mgmt_services/cost-mgmt:koku-ui/micromatch:4.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/micromatch:4.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/mime-db:1.46.0.yarnlock @@ -957,10 +1018,9 @@ mgmt_services/cost-mgmt:koku-ui/mime-types:2.1.29.yarnlock mgmt_services/cost-mgmt:koku-ui/mime-types:2.1.29.yarnlock mgmt_services/cost-mgmt:koku-ui/mime-types:2.1.29.yarnlock mgmt_services/cost-mgmt:koku-ui/mime-types:2.1.29.yarnlock -mgmt_services/cost-mgmt:koku-ui/mime-types:2.1.29.yarnlock mgmt_services/cost-mgmt:koku-ui/mime:1.6.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/mime:2.5.2.yarnlock mgmt_services/cost-mgmt:koku-ui/mimic-fn:2.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/mimic-fn:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/mini-create-react-context:0.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/mini-css-extract-plugin:1.3.9.yarnlock mgmt_services/cost-mgmt:koku-ui/minimalistic-assert:1.0.1.yarnlock @@ -971,6 +1031,7 @@ mgmt_services/cost-mgmt:koku-ui/minimist:1.2.5.yarnlock mgmt_services/cost-mgmt:koku-ui/mixin-deep:1.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/mkdirp:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/mkdirp:0.5.5.yarnlock +mgmt_services/cost-mgmt:koku-ui/mkdirp:0.5.5.yarnlock mgmt_services/cost-mgmt:koku-ui/moo:0.5.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ms:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ms:2.1.1.yarnlock @@ -978,8 +1039,11 @@ mgmt_services/cost-mgmt:koku-ui/ms:2.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/ms:2.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/multicast-dns-service-types:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/multicast-dns:6.2.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/mute-stream:0.0.8.yarnlock +mgmt_services/cost-mgmt:koku-ui/nan:2.14.2.yarnlock mgmt_services/cost-mgmt:koku-ui/nanoid:2.1.11.yarnlock mgmt_services/cost-mgmt:koku-ui/nanoid:3.1.20.yarnlock +mgmt_services/cost-mgmt:koku-ui/nanoid:3.1.23.yarnlock mgmt_services/cost-mgmt:koku-ui/nanomatch:1.2.13.yarnlock mgmt_services/cost-mgmt:koku-ui/natural-compare:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/nearley:2.20.1.yarnlock @@ -992,6 +1056,7 @@ mgmt_services/cost-mgmt:koku-ui/node-int64:0.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/node-modules-regexp:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/node-notifier:8.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/node-releases:1.1.71.yarnlock +mgmt_services/cost-mgmt:koku-ui/nodesi:1.15.0.yarnlock mgmt_services/cost-mgmt:koku-ui/normalize-package-data:2.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/normalize-package-data:2.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/normalize-path:2.1.1.yarnlock @@ -1005,8 +1070,10 @@ mgmt_services/cost-mgmt:koku-ui/nth-check:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/null-loader:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/number-is-nan:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/nwsapi:2.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/oauth-sign:0.8.2.yarnlock mgmt_services/cost-mgmt:koku-ui/oauth-sign:0.9.0.yarnlock mgmt_services/cost-mgmt:koku-ui/object-assign:4.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/object-assign:4.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/object-copy:0.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/object-inspect:1.9.0.yarnlock mgmt_services/cost-mgmt:koku-ui/object-inspect:1.9.0.yarnlock @@ -1034,23 +1101,25 @@ mgmt_services/cost-mgmt:koku-ui/once:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/once:1.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/onetime:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/onetime:5.1.2.yarnlock -mgmt_services/cost-mgmt:koku-ui/open:7.4.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/opn:5.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/optionator:0.8.3.yarnlock mgmt_services/cost-mgmt:koku-ui/optionator:0.9.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/ora:5.4.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/original:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/os-locale:1.4.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/p-defer:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/os-tmpdir:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/p-each-series:2.2.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/p-event:4.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-finally:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-limit:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-limit:2.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/p-limit:2.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-limit:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-limit:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-locate:2.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/p-locate:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-locate:4.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/p-map:4.0.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/p-retry:4.5.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/p-timeout:3.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/p-map:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/p-retry:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/p-try:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/p-try:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/param-case:3.0.4.yarnlock @@ -1068,10 +1137,12 @@ mgmt_services/cost-mgmt:koku-ui/parseurl:1.3.3.yarnlock mgmt_services/cost-mgmt:koku-ui/parseurl:1.3.3.yarnlock mgmt_services/cost-mgmt:koku-ui/pascal-case:3.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/pascalcase:0.1.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/path-dirname:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/path-exists:2.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/path-exists:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/path-exists:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/path-is-absolute:1.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/path-is-inside:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/path-key:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/path-key:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/path-key:3.1.1.yarnlock @@ -1087,11 +1158,12 @@ mgmt_services/cost-mgmt:koku-ui/picomatch:2.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/picomatch:2.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/picomatch:2.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/pify:2.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/pify:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/pinkie-promise:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/pinkie:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/pirates:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/pkg-dir:2.0.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/pkg-dir:4.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/pkg-dir:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/pkg-dir:4.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/popper.js:1.16.1.yarnlock mgmt_services/cost-mgmt:koku-ui/portfinder:1.0.28.yarnlock @@ -1104,7 +1176,7 @@ mgmt_services/cost-mgmt:koku-ui/postcss-selector-parser:6.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/postcss-selector-parser:6.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/postcss-value-parser:4.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/postcss:8.2.7.yarnlock -mgmt_services/cost-mgmt:koku-ui/postcss:8.2.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/postcss:8.2.15.yarnlock mgmt_services/cost-mgmt:koku-ui/prelude-ls:1.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/prelude-ls:1.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/prettier-linter-helpers:1.0.0.yarnlock @@ -1126,12 +1198,15 @@ mgmt_services/cost-mgmt:koku-ui/psl:1.8.0.yarnlock mgmt_services/cost-mgmt:koku-ui/psl:1.8.0.yarnlock mgmt_services/cost-mgmt:koku-ui/pump:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/punycode:1.3.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/punycode:1.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/punycode:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/punycode:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/qs:6.7.0.yarnlock mgmt_services/cost-mgmt:koku-ui/qs:6.9.6.yarnlock mgmt_services/cost-mgmt:koku-ui/qs:6.5.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/qs:6.5.2.yarnlock mgmt_services/cost-mgmt:koku-ui/querystring:0.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/querystringify:2.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/queue-microtask:1.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/raf:3.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/railroad-diagrams:1.0.0.yarnlock @@ -1146,7 +1221,7 @@ mgmt_services/cost-mgmt:koku-ui/react-dom:17.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/react-dropzone:9.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/react-fast-compare:2.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/react-i18next:11.8.9.yarnlock -mgmt_services/cost-mgmt:koku-ui/react-i18next:11.8.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/react-i18next:11.8.15.yarnlock mgmt_services/cost-mgmt:koku-ui/react-is:16.13.1.yarnlock mgmt_services/cost-mgmt:koku-ui/react-is:16.13.1.yarnlock mgmt_services/cost-mgmt:koku-ui/react-is:16.13.1.yarnlock @@ -1174,8 +1249,11 @@ mgmt_services/cost-mgmt:koku-ui/read-pkg:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/read-pkg:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/read-pkg:5.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/readable-stream:2.3.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/readable-stream:2.3.7.yarnlock +mgmt_services/cost-mgmt:koku-ui/readable-stream:3.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/readable-stream:3.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/readable-stream:3.6.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/readdirp:2.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/readdirp:3.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/rechoir:0.7.0.yarnlock mgmt_services/cost-mgmt:koku-ui/redux-thunk:2.3.0.yarnlock @@ -1191,7 +1269,7 @@ mgmt_services/cost-mgmt:koku-ui/regexpp:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/regexpp:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/regextras:0.7.1.yarnlock mgmt_services/cost-mgmt:koku-ui/relateurl:0.2.7.yarnlock -mgmt_services/cost-mgmt:koku-ui/remark-parse:5.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/remark-parse:7.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/remove-trailing-separator:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/renderkid:2.0.5.yarnlock mgmt_services/cost-mgmt:koku-ui/repeat-element:1.1.3.yarnlock @@ -1200,13 +1278,16 @@ mgmt_services/cost-mgmt:koku-ui/repeat-string:1.6.1.yarnlock mgmt_services/cost-mgmt:koku-ui/replace-ext:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/request-promise-core:1.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/request-promise-native:1.0.9.yarnlock +mgmt_services/cost-mgmt:koku-ui/request:2.87.0.yarnlock mgmt_services/cost-mgmt:koku-ui/request:2.88.2.yarnlock mgmt_services/cost-mgmt:koku-ui/require-directory:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/require-from-string:2.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/require-main-filename:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/require-main-filename:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/requires-port:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/resolve-cwd:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve-cwd:3.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/resolve-from:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve-from:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve-from:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve-pathname:3.0.0.yarnlock @@ -1217,14 +1298,18 @@ mgmt_services/cost-mgmt:koku-ui/resolve:1.20.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve:1.20.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve:1.20.0.yarnlock mgmt_services/cost-mgmt:koku-ui/resolve:1.20.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/restore-cursor:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/ret:0.1.15.yarnlock mgmt_services/cost-mgmt:koku-ui/retry:0.12.0.yarnlock mgmt_services/cost-mgmt:koku-ui/reusify:1.0.4.yarnlock +mgmt_services/cost-mgmt:koku-ui/rimraf:2.7.1.yarnlock mgmt_services/cost-mgmt:koku-ui/rimraf:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/rimraf:3.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/rst-selector-parser:2.2.3.yarnlock mgmt_services/cost-mgmt:koku-ui/rsvp:4.8.5.yarnlock +mgmt_services/cost-mgmt:koku-ui/run-async:2.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/run-parallel:1.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/rxjs:6.6.7.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.1.2.yarnlock @@ -1233,6 +1318,7 @@ mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.2.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/safe-buffer:5.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/safe-regex:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/safer-buffer:2.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/safer-buffer:2.1.2.yarnlock @@ -1245,6 +1331,7 @@ mgmt_services/cost-mgmt:koku-ui/sass:1.32.8.yarnlock mgmt_services/cost-mgmt:koku-ui/saxes:5.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/scheduler:0.19.1.yarnlock mgmt_services/cost-mgmt:koku-ui/scheduler:0.20.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/schema-utils:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/schema-utils:3.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/select-hose:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/selfsigned:1.10.8.yarnlock @@ -1259,6 +1346,7 @@ mgmt_services/cost-mgmt:koku-ui/semver:7.3.4.yarnlock mgmt_services/cost-mgmt:koku-ui/semver:7.3.4.yarnlock mgmt_services/cost-mgmt:koku-ui/semver:6.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/semver:6.3.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/semver:7.3.5.yarnlock mgmt_services/cost-mgmt:koku-ui/send:0.17.1.yarnlock mgmt_services/cost-mgmt:koku-ui/serialize-javascript:5.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/serve-index:1.9.1.yarnlock @@ -1284,6 +1372,7 @@ mgmt_services/cost-mgmt:koku-ui/slice-ansi:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/snapdragon-node:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/snapdragon-util:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/snapdragon:0.8.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/sockjs-client:1.5.1.yarnlock mgmt_services/cost-mgmt:koku-ui/sockjs:0.3.21.yarnlock mgmt_services/cost-mgmt:koku-ui/source-list-map:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/source-list-map:2.0.1.yarnlock @@ -1322,6 +1411,8 @@ mgmt_services/cost-mgmt:koku-ui/string-hash:1.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/string-length:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/string-width:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/string-width:1.0.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/string-width:3.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/string-width:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/string-width:4.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/string-width:4.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/string.prototype.matchall:4.0.4.yarnlock @@ -1332,6 +1423,9 @@ mgmt_services/cost-mgmt:koku-ui/string_decoder:1.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/string_decoder:1.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-ansi:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-ansi:3.0.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/strip-ansi:5.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/strip-ansi:5.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/strip-ansi:5.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-ansi:6.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-bom:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-bom:3.0.0.yarnlock @@ -1341,6 +1435,7 @@ mgmt_services/cost-mgmt:koku-ui/strip-final-newline:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-json-comments:3.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/strip-json-comments:3.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/supports-color:5.5.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/supports-color:6.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/supports-color:7.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/supports-color:7.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/supports-hyperlinks:2.1.0.yarnlock @@ -1359,11 +1454,13 @@ mgmt_services/cost-mgmt:koku-ui/terser:5.6.0.yarnlock mgmt_services/cost-mgmt:koku-ui/test-exclude:6.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/text-table:0.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/throat:5.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/through:2.3.8.yarnlock mgmt_services/cost-mgmt:koku-ui/thunky:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/tiny-invariant:1.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/tiny-warning:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/tiny-warning:1.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/tippy.js:5.1.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/tmp:0.0.33.yarnlock mgmt_services/cost-mgmt:koku-ui/tmpl:1.0.4.yarnlock mgmt_services/cost-mgmt:koku-ui/to-fast-properties:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/to-object-path:0.3.0.yarnlock @@ -1375,6 +1472,7 @@ mgmt_services/cost-mgmt:koku-ui/toidentifier:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/tough-cookie:2.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/tough-cookie:2.5.0.yarnlock mgmt_services/cost-mgmt:koku-ui/tough-cookie:4.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/tough-cookie:2.3.4.yarnlock mgmt_services/cost-mgmt:koku-ui/tr46:2.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/trim-trailing-lines:1.1.4.yarnlock mgmt_services/cost-mgmt:koku-ui/trim:0.0.1.yarnlock @@ -1408,6 +1506,7 @@ mgmt_services/cost-mgmt:koku-ui/typesafe-actions:5.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/typescript:4.1.5.yarnlock mgmt_services/cost-mgmt:koku-ui/unbox-primitive:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/uncontrollable:7.2.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/underscore:1.8.3.yarnlock mgmt_services/cost-mgmt:koku-ui/unherit:1.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/unified:6.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/union-value:1.0.1.yarnlock @@ -1422,8 +1521,11 @@ mgmt_services/cost-mgmt:koku-ui/universalify:0.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/unpipe:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/unpipe:1.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/unset-value:1.0.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/upath:1.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/uri-js:4.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/urix:0.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/url-parse:1.5.1.yarnlock +mgmt_services/cost-mgmt:koku-ui/url-parse:1.5.1.yarnlock mgmt_services/cost-mgmt:koku-ui/url:0.11.0.yarnlock mgmt_services/cost-mgmt:koku-ui/use:3.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/util-deprecate:1.0.2.yarnlock @@ -1433,6 +1535,7 @@ mgmt_services/cost-mgmt:koku-ui/utila:0.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/utils-merge:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/uuid:3.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/uuid:3.4.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/uuid:3.4.0.yarnlock mgmt_services/cost-mgmt:koku-ui/uuid:8.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/v8-compile-cache:2.3.0.yarnlock mgmt_services/cost-mgmt:koku-ui/v8-compile-cache:2.3.0.yarnlock @@ -1470,6 +1573,7 @@ mgmt_services/cost-mgmt:koku-ui/victory-voronoi-container:35.4.11.yarnlock mgmt_services/cost-mgmt:koku-ui/victory-voronoi-container:35.4.11.yarnlock mgmt_services/cost-mgmt:koku-ui/victory-zoom-container:35.4.11.yarnlock mgmt_services/cost-mgmt:koku-ui/victory-zoom-container:35.4.11.yarnlock +mgmt_services/cost-mgmt:koku-ui/void-elements:3.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/void-elements:2.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/w3c-hr-time:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/w3c-xmlserializer:2.0.0.yarnlock @@ -1480,16 +1584,18 @@ mgmt_services/cost-mgmt:koku-ui/warning:4.0.3.yarnlock mgmt_services/cost-mgmt:koku-ui/watchpack:2.1.1.yarnlock mgmt_services/cost-mgmt:koku-ui/wbuf:1.7.3.yarnlock mgmt_services/cost-mgmt:koku-ui/wbuf:1.7.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/wcwidth:1.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/webidl-conversions:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/webidl-conversions:6.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/webpack-cli:4.5.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/webpack-dev-middleware:4.1.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/webpack-dev-server:4.0.0-beta.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/webpack-cli:4.7.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/webpack-dev-middleware:3.7.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/webpack-dev-server:3.11.2.yarnlock +mgmt_services/cost-mgmt:koku-ui/webpack-log:2.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/webpack-log:3.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/webpack-merge:5.7.3.yarnlock mgmt_services/cost-mgmt:koku-ui/webpack-sources:1.4.3.yarnlock mgmt_services/cost-mgmt:koku-ui/webpack-sources:2.2.0.yarnlock -mgmt_services/cost-mgmt:koku-ui/webpack:5.24.4.yarnlock +mgmt_services/cost-mgmt:koku-ui/webpack:5.37.1.yarnlock mgmt_services/cost-mgmt:koku-ui/websocket-driver:0.7.4.yarnlock mgmt_services/cost-mgmt:koku-ui/websocket-driver:0.7.4.yarnlock mgmt_services/cost-mgmt:koku-ui/websocket-extensions:0.1.4.yarnlock @@ -1507,9 +1613,11 @@ mgmt_services/cost-mgmt:koku-ui/window-size:0.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/word-wrap:1.2.3.yarnlock mgmt_services/cost-mgmt:koku-ui/word-wrap:1.2.3.yarnlock mgmt_services/cost-mgmt:koku-ui/wrap-ansi:2.1.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/wrap-ansi:5.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/wrap-ansi:6.2.0.yarnlock mgmt_services/cost-mgmt:koku-ui/wrappy:1.0.2.yarnlock mgmt_services/cost-mgmt:koku-ui/write-file-atomic:3.0.3.yarnlock +mgmt_services/cost-mgmt:koku-ui/ws:6.2.1.yarnlock mgmt_services/cost-mgmt:koku-ui/ws:7.4.4.yarnlock mgmt_services/cost-mgmt:koku-ui/x-is-string:0.1.0.yarnlock mgmt_services/cost-mgmt:koku-ui/xml-name-validator:3.0.0.yarnlock @@ -1521,8 +1629,10 @@ mgmt_services/cost-mgmt:koku-ui/y18n:3.2.2.yarnlock mgmt_services/cost-mgmt:koku-ui/y18n:4.0.1.yarnlock mgmt_services/cost-mgmt:koku-ui/yallist:4.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/yargs-parser:20.2.6.yarnlock +mgmt_services/cost-mgmt:koku-ui/yargs-parser:13.1.2.yarnlock mgmt_services/cost-mgmt:koku-ui/yargs-parser:18.1.3.yarnlock mgmt_services/cost-mgmt:koku-ui/yargs-parser:3.2.0.yarnlock +mgmt_services/cost-mgmt:koku-ui/yargs:13.3.2.yarnlock mgmt_services/cost-mgmt:koku-ui/yargs:15.4.1.yarnlock mgmt_services/cost-mgmt:koku-ui/yargs:5.0.0.yarnlock mgmt_services/cost-mgmt:koku-ui/yocto-queue:0.1.0.yarnlock diff --git a/package.json b/package.json index ce61dd6f5..401bb609f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "build": "yarn build:client", "build:client": "yarn clean && node --max_old_space_size=8192 node_modules/.bin/webpack --mode=production", - "clean": "rimraf public/", + "clean": "rimraf dist/", "lint": "yarn lint:locales && yarn lint:ts", "lint:locales": "node scripts/syncLocales --check", "lint:locales:fix": "node scripts/syncLocales", @@ -19,8 +19,9 @@ "i18n:key:check:full": "scripts/utils/i18n_key_tool.py --json-file src/locales/en.json --search-path src --exclude-file scripts/utils/i18n_excludes", "i18n:key:check:notfound": "scripts/utils/i18n_key_tool.py --Xreport-found --json-file src/locales/en.json --search-path src --exclude-file scripts/utils/i18n_excludes", "i18n:key:check:duplicates": "scripts/utils/i18n_key_tool.py --find-duplicates --Xreport-found --Xreport-not-found --json-file src/locales/en.json --search-path src --exclude-file scripts/utils/i18n_excludes", - "start": "NODE_OPTIONS=--max-old-space-size=8192 webpack serve -c ./webpack.config.js", - "start:beta": "BETA_ENV=true yarn start", + "i18n:key:check:excludes": "scripts/utils/i18n_key_tool.py --validate-excludes --Xreport-found --Xreport-not-found --json-file src/locales/en.json --search-path src --exclude-file scripts/utils/i18n_excludes", + "start": "node scripts/start-dev-server.js", + "start:dev": "NODE_OPTIONS=--max-old-space-size=8192 webpack serve -c ./webpack.config.js", "stats": "yarn build:client --profile --json > stats.json", "test": "jest", "manifest:update": "node scripts/createManifest", @@ -31,17 +32,17 @@ }, "dependencies": { "@fortawesome/free-solid-svg-icons": "5.15.2", - "@patternfly/patternfly": "4.102.1", - "@patternfly/react-charts": "^6.14.16", - "@patternfly/react-core": "4.115.1", - "@patternfly/react-icons": "4.10.1", - "@patternfly/react-styles": "4.10.1", - "@patternfly/react-table": "4.26.6", - "@patternfly/react-tokens": "4.11.2", - "@redhat-cloud-services/frontend-components": "^3.1.7", + "@patternfly/patternfly": "4.103.6", + "@patternfly/react-charts": "6.14.22", + "@patternfly/react-core": "4.121.0", + "@patternfly/react-icons": "4.10.7", + "@patternfly/react-styles": "4.10.7", + "@patternfly/react-table": "4.27.6", + "@patternfly/react-tokens": "4.11.8", + "@redhat-cloud-services/frontend-components": "^3.1.11", "@redhat-cloud-services/frontend-components-notifications": "^3.1.0", - "@redhat-cloud-services/frontend-components-utilities": "^3.1.1", - "@redhat-cloud-services/rbac-client": "^1.0.96", + "@redhat-cloud-services/frontend-components-utilities": "^3.1.2", + "@redhat-cloud-services/rbac-client": "^1.0.97", "@types/date-fns": "2.6.0", "@types/i18next": "13.0.0", "@types/i18next-xhr-backend": "1.4.2", @@ -65,7 +66,7 @@ "react": "17.0.1", "react-bootstrap": "1.5.0", "react-dom": "17.0.1", - "react-i18next": "11.8.7", + "react-i18next": "11.8.15", "react-redux": "7.2.2", "react-router-dom": "5.2.0", "redux": "4.0.5", @@ -76,6 +77,7 @@ "xstate": "4.16.2" }, "devDependencies": { + "@redhat-cloud-services/frontend-components-config-utilities": "^1.1.1", "@testing-library/react": "11.2.5", "@types/enzyme": "3.10.8", "@types/jest": "26.0.20", @@ -86,24 +88,28 @@ "@yarnpkg/lockfile": "1.1.0", "aphrodite": "2.4.0", "copy-webpack-plugin": "7.0.0", - "css-loader": "5.0.2", + "css-loader": "5.2.4", "enzyme": "3.11.0", "enzyme-adapter-react-16": "1.15.6", "enzyme-to-json": "3.6.1", "eslint": "^7.20.0", "eslint-plugin-jsdoc": "^32.0.1", - "eslint-plugin-markdown": "^2.0.0", + "eslint-plugin-markdown": "^2.1.0", "eslint-plugin-patternfly-react": "^4.1.5", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-react": "^7.22.0", "eslint-plugin-simple-import-sort": "^5.0.3", "git-revision-webpack-plugin": "3.0.6", + "glob": "^7.1.7", "html-loader": "2.0.0", "html-replace-webpack-plugin": "2.6.0", "html-webpack-plugin": "^5.1.0", "i18next-json-sync": "^2.3.1", + "inquirer": "^8.1.0", "jest": "26.6.3", + "jws": "^4.0.0", "mini-css-extract-plugin": "^1.3.7", + "nodesi": "^1.15.0", "null-loader": "4.0.1", "prettier": "^2.2.1", "rimraf": "^3.0.2", @@ -112,12 +118,12 @@ "ts-jest": "26.5.1", "ts-loader": "8.0.17", "tsconfig-paths-webpack-plugin": "^3.3.0", - "webpack": "^5.24.3", - "webpack-cli": "^4.5.0", - "webpack-dev-server": "^4.0.0-beta.2", + "webpack": "^5.37.1", + "webpack-cli": "^4.7.0", + "webpack-dev-server": "^3.11.2", "webpack-log": "^3.0.1" }, "insights": { "appname": "cost-management" } -} +} \ No newline at end of file diff --git a/scripts/start-dev-server.js b/scripts/start-dev-server.js new file mode 100644 index 000000000..f0b39ddc0 --- /dev/null +++ b/scripts/start-dev-server.js @@ -0,0 +1,52 @@ +/* eslint-disable no-console */ +const inquirer = require('inquirer'); +const { resolve } = require('path'); +const { spawn } = require('child_process'); + +async function setEnv() { + return inquirer + .prompt([ + { type: 'list', name: 'uiEnv', message: 'Which UI environment you want to use?', choices: ['beta', 'stable'] }, + { + type: 'list', + name: 'clouddotEnv', + message: 'Which platform environment you want to use', + choices: ['ci', 'qa', 'prod'], + }, + { + name: 'insightsProxy', + message: 'Do you want to use the Insights proxy?', + type: 'confirm', + default: false, + }, + // { + // name: 'localApi', + // message: 'Do you want to use local api?', + // type: 'confirm', + // default: false, + // }, + ]) + .then(answers => { + const { uiEnv, clouddotEnv, insightsProxy, localApi } = answers; + + process.env.BETA_ENV = uiEnv === 'beta' ? 'true' : 'false'; + process.env.CLOUDOT_ENV = clouddotEnv; + process.env.USE_PROXY = (!insightsProxy).toString(); // Set 'true' for webpack proxy + // process.env.USE_LOCAL_ROUTES = localApi.toString(); + }); +} + +async function run() { + await setEnv(); + const child = spawn('yarn', ['start:dev'], { + stdio: [process.stdout, process.stdout, process.stdout], + cwd: resolve(__dirname, '../'), + }); +} + +try { + run(); +} catch (error) { + console.error(error); + process.exit(1); +} diff --git a/scripts/utils/i18n_excludes b/scripts/utils/i18n_excludes index ceb9aee5d..e55f18017 100644 --- a/scripts/utils/i18n_excludes +++ b/scripts/utils/i18n_excludes @@ -13,7 +13,6 @@ breakdown.navigation.azure breakdown.navigation.gcp breakdown.navigation.ibm breakdown.navigation.ocp -breakdown.navigation.ocpunit_tooltips.core-hours chart.cost_forecast_cone_legend_label_no_data chart.cost_forecast_cone_legend_label_plural chart.cost_forecast_legend_label_no_data @@ -35,25 +34,15 @@ chart.requests_legend_label_no_data chart.requests_legend_label_plural chart.usage_legend_label_no_data chart.usage_legend_label_plural +chart.usage_legend_label_plural cost_models.add_rate_form.save_rate_button cost_models.infra_cost_switch -cost_models.infra_no -cost_models.infra_yes cost_models.learn_more cost_models.lowercase.Currency cost_models.lowercase.Request cost_models.lowercase.Usage cost_models.node-month cost_models.remove_button -cost_models_details.action_view -cost_models_details.add_source_desc -cost_models_details.filter.placeholder -cost_models_details.filter.type_options_aria_label -cost_models_details.filter.type_options_label -cost_models_details.sources_filter_results -cost_models_details.table.actions.clone -cost_models_details.table.actions.delete -cost_models_details.table.actions.view cost_models_router.no_match cost_models_wizard.finish_button cost_models_wizard.inprogress_message @@ -70,11 +59,11 @@ cost_models_wizard.source_table.active_filters cost_models_wizard.source_table.already_assigned cost_models_wizard.source_table.clear_all_filters cost_models_wizard.source_table.filter_section_aria_label -cost_models_wizard.source_table.name_label cost_models_wizard.source_table.results_text cost_models_wizard.source_table.select_filter_type cost_models_wizard.source_table.toolbar_results_section cost_models_wizard.warning_sources +details.more_tags details.price_list.modal.hours details.price_list.modal.month details.price_list.modal.no_match @@ -103,9 +92,11 @@ dialog.title explorer.title.azure explorer.title.gcp explorer.title.ocp -explorer.total_cost export.daily +export.file.daily +export.file.monthly export.monthly +filter.name filter_by.account.button_aria_label filter_by.account.input_aria_label filter_by.account.placeholder @@ -189,20 +180,14 @@ group_by.values.tag group_by.values.tag_plural months_abbr no_match_found_state.title -onboarding.type_label -overview.title_aria_label source_details.type.AWS source_details.type.AZURE source_details.type.OCP source_details.type.GCP toolbar.filterby -toolbar.pricelist.options.Currency -toolbar.pricelist.options.Request -toolbar.pricelist.options.Usage +toolbar.sources.category.name toolbar.sources.lower.description toolbar.sources.lower.name -toolbar.sources.primary.description -toolbar.sources.primary.name toolbar.sources.primary.source_type toolbar.sources.secondary.aws toolbar.sources.secondary.azure @@ -228,4 +213,3 @@ unit_tooltips.gibibyte month unit_tooltips.hour unit_tooltips.vm-hours unit_tooltips.usd - diff --git a/scripts/utils/i18n_key_tool.py b/scripts/utils/i18n_key_tool.py index 9c1968b80..f08e96121 100755 --- a/scripts/utils/i18n_key_tool.py +++ b/scripts/utils/i18n_key_tool.py @@ -4,6 +4,7 @@ import glob import json import os +import sys from functools import reduce import operator @@ -38,6 +39,7 @@ def check_file(filename): parser.add_argument('--exclude-file', type=check_file, help='file that lists i18n tags in dot notation to exclude' 'from reporting') parser.add_argument('--find-duplicates', action='store_true', help='report all duplicate values') +parser.add_argument('--validate-excludes', action='store_true', help='validate excluded in keys are valid') parser.add_argument('--Xreport-found', action='store_false', help='do not report any "Found" keys') parser.add_argument('--Xreport-not-found', action='store_false', help='do not report any "Not Found" keys') @@ -109,21 +111,32 @@ def find_duplicate_values(data): print(Colors.OKCYAN + "TOTAL DUPLICATES FOUND: ", Colors.OKBLUE + str(total_dupes) + Colors.ENDC) +# validate excludes are valid +def validate_excludes(elist, data): + i18n_keys = list(set(walk_keys(json_data))) + print('{:>30s}'.format(Colors.OKBLUE + "Validating exclude list..." + Colors.ENDC)) + for exclude in elist: + if exclude not in i18n_keys and exclude: + print('{:<80s}{:>10s}'.format(Colors.OKCYAN + exclude, Colors.FAIL + '[EXCLUDE NOT VALID]') + Colors.ENDC) + + json_data = json.load(open(args.json_file)) previous_key_status = {} # Check all i18n_keys to see if they are being used in the src code if args.Xreport_not_found or args.Xreport_found: + # check if exclude list is given + exclude_data = [] + if args.exclude_file is not None: + with open(args.exclude_file) as f: + exclude_data = f.read().splitlines() + validate_excludes(exclude_data, json_data) + + print(' ') print(Colors.OKBLUE + 'Checking for dead keys...' + Colors.ENDC) for i18n_key in sorted(list(set(walk_keys(json_data)))): - exclude_data = [] found = False - # check if exclude list is given - if args.exclude_file is not None: - with open(args.exclude_file) as f: - exclude_data = f.read().splitlines() - if exclude_data.__contains__(i18n_key): # key is on exclude list previous_key_status.clear() @@ -206,3 +219,14 @@ def get(self, path, default=None): print("\n") find_duplicate_values(key_vals) + + +# check excludes for validity +if args.validate_excludes: + if args.exclude_file is not None: + exclude_data = [] + with open(args.exclude_file) as f: + exclude_data = f.read().splitlines() + validate_excludes(exclude_data, json_data) + else: + sys.exit(Colors.FAIL + 'You must supply an exclude file' + Colors.ENDC) diff --git a/src/api/tags/awsCloudTags.ts b/src/api/tags/awsCloudTags.ts new file mode 100644 index 000000000..a3473e9bc --- /dev/null +++ b/src/api/tags/awsCloudTags.ts @@ -0,0 +1,14 @@ +import axios from 'axios'; + +import { Tag, TagType } from './tag'; + +export interface AwsCloudTag extends Tag {} + +export const TagTypePaths: Partial> = { + [TagType.tag]: 'tags/openshift/infrastructures/aws/', +}; + +export function runTag(tagType: TagType, query: string) { + const path = TagTypePaths[tagType]; + return axios.get(`${path}?${query}`); +} diff --git a/src/api/tags/azureCloudTags.ts b/src/api/tags/azureCloudTags.ts new file mode 100644 index 000000000..f438c5a9b --- /dev/null +++ b/src/api/tags/azureCloudTags.ts @@ -0,0 +1,14 @@ +import axios from 'axios'; + +import { Tag, TagType } from './tag'; + +export interface AzureCloudTag extends Tag {} + +export const TagTypePaths: Partial> = { + [TagType.tag]: 'tags/openshift/infrastructures/azure/', +}; + +export function runTag(tagType: TagType, query: string) { + const path = TagTypePaths[tagType]; + return axios.get(`${path}?${query}`); +} diff --git a/src/api/tags/ocpCloudTags.ts b/src/api/tags/ocpCloudTags.ts new file mode 100644 index 000000000..33bd0b1c2 --- /dev/null +++ b/src/api/tags/ocpCloudTags.ts @@ -0,0 +1,14 @@ +import axios from 'axios'; + +import { Tag, TagType } from './tag'; + +export interface OcpCloudTag extends Tag {} + +export const TagTypePaths: Partial> = { + [TagType.tag]: 'tags/openshift/infrastructures/all/', +}; + +export function runTag(tagType: TagType, query: string) { + const path = TagTypePaths[tagType]; + return axios.get(`${path}?${query}`); +} diff --git a/src/api/tags/tag.ts b/src/api/tags/tag.ts index d9b86a250..3e0a3f173 100644 --- a/src/api/tags/tag.ts +++ b/src/api/tags/tag.ts @@ -38,8 +38,11 @@ export const enum TagType { // eslint-disable-next-line no-shadow export const enum TagPathsType { aws = 'aws', + awsCloud = 'aws_cloud', azure = 'azure', + azureCloud = 'azure_cloud', gcp = 'gcp', ibm = 'gcp', // Todo: update to use ibm backend apis when they become available ocp = 'ocp', + ocpCloud = 'ocp_cloud', } diff --git a/src/api/tags/tagUtils.ts b/src/api/tags/tagUtils.ts index af85c9a93..c55043e54 100644 --- a/src/api/tags/tagUtils.ts +++ b/src/api/tags/tagUtils.ts @@ -1,7 +1,10 @@ +import { runTag as runAwsCloudTag } from './awsCloudTags'; import { runTag as runAwsTag } from './awsTags'; +import { runTag as runAzureCloudTag } from './azureCloudTags'; import { runTag as runAzureTag } from './azureTags'; import { runTag as runGcpTag } from './gcpTags'; import { runTag as runIbmTag } from './ibmTags'; +import { runTag as runOcpCloudTag } from './ocpCloudTags'; import { runTag as runOcpTag } from './ocpTags'; import { TagPathsType, TagType } from './tag'; @@ -11,9 +14,15 @@ export function runTag(tagPathsType: TagPathsType, tagType: TagType, query: stri case TagPathsType.aws: tagReport = runAwsTag(tagType, query); break; + case TagPathsType.awsCloud: + tagReport = runAwsCloudTag(tagType, query); + break; case TagPathsType.azure: tagReport = runAzureTag(tagType, query); break; + case TagPathsType.azureCloud: + tagReport = runAzureCloudTag(tagType, query); + break; case TagPathsType.gcp: tagReport = runGcpTag(tagType, query); break; @@ -23,6 +32,9 @@ export function runTag(tagPathsType: TagPathsType, tagType: TagType, query: stri case TagPathsType.ocp: tagReport = runOcpTag(tagType, query); break; + case TagPathsType.ocpCloud: + tagReport = runOcpCloudTag(tagType, query); + break; } return tagReport; } diff --git a/src/components/charts/common/__snapshots__/chartLegendItem.test.tsx.snap b/src/components/charts/common/__snapshots__/chartLegendItem.test.tsx.snap deleted file mode 100644 index 25dae9cfb..000000000 --- a/src/components/charts/common/__snapshots__/chartLegendItem.test.tsx.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`range is formated with start and end date 1`] = `""`; - -exports[`range is formated with start and end date for an empty report 1`] = `""`; diff --git a/src/components/charts/common/index.ts b/src/components/charts/common/index.ts index 913a73073..fe96c08fe 100644 --- a/src/components/charts/common/index.ts +++ b/src/components/charts/common/index.ts @@ -1,4 +1 @@ -export { ChartLegend, ChartLegendProps } from './chartLegend'; -export { ChartLegendItem, ChartLegendItemProps } from './chartLegendItem'; -export { ChartTitle, ChartTitleProps } from './chartTitle'; export { ChartDatum } from './chartDatumUtils'; diff --git a/src/components/charts/costExplorerChart/costExplorerChart.tsx b/src/components/charts/costExplorerChart/costExplorerChart.tsx index 03de6eab7..de2872653 100644 --- a/src/components/charts/costExplorerChart/costExplorerChart.tsx +++ b/src/components/charts/costExplorerChart/costExplorerChart.tsx @@ -234,12 +234,40 @@ class CostExplorerChart extends React.Component { return adjustedContainerHeight; }; - private getChart = (series: ChartSeries, index: number) => { + // If bar width exceeds max and domainPadding is true, extra width is returned to help center bars horizontally + private getBarWidth = (domainPadding: boolean = false) => { + const { hiddenSeries, series, width } = this.state; + const maxWidth = 200; + let maxValue = -1; + + if (series) { + series.forEach((s: any, index) => { + if (!isSeriesHidden(hiddenSeries, index) && s.data && s.data.length !== 0) { + if (s.data.length > maxValue) { + maxValue = s.data.length; + } + } + }); + } + + // Divide available width into equal sections + const sections = maxValue * 2 + 1; + const sectionWidth = maxValue > 0 ? width / sections : 0; + + if (domainPadding) { + // Add any extra bar width for domain padding + const extraWidth = sectionWidth > maxWidth ? (sectionWidth - maxWidth) * maxValue : 0; + return (sectionWidth + extraWidth / 2) * 2; + } + return sectionWidth > maxWidth ? maxWidth : sectionWidth; + }; + + private getChart = (series: ChartSeries, index: number, barWidth: number) => { const { hiddenSeries } = this.state; const data = !hiddenSeries.has(index) ? series.data : [{ y: null }]; return ( - + ); }; @@ -336,8 +364,11 @@ class CostExplorerChart extends React.Component { // Prune tick values const tickValues = []; + const modVal = values.length < 6 ? 2 : 3; for (let i = 0; i < values.length; i++) { - if (i % 3 === 0 && i + 2 < values.length) { + if (i % modVal === 0 && i + 2 < values.length) { + tickValues.push(values[i]); + } else if (values.length < 3 && i + 1 < values.length) { tickValues.push(values[i]); } } @@ -409,6 +440,8 @@ class CostExplorerChart extends React.Component { }) : undefined; + const barWidth = this.getBarWidth(); + // Note: For tooltip values to match properly, chart groups must be rendered in the order given as legend data return (
@@ -416,6 +449,7 @@ class CostExplorerChart extends React.Component { { width={width} > {series && series.length > 0 && ( - {series.map((s, index) => this.getChart(s, index))} + {series.map((s, index) => this.getChart(s, index, barWidth))} )} - +
diff --git a/src/components/sources/inactiveSources/inactiveSources.tsx b/src/components/sources/inactiveSources/inactiveSources.tsx index b5a77edf2..30b7301cd 100644 --- a/src/components/sources/inactiveSources/inactiveSources.tsx +++ b/src/components/sources/inactiveSources/inactiveSources.tsx @@ -160,7 +160,7 @@ class InactiveSourcesBase extends React.Component { }; private getInactiveSourceNames = () => { - const { awsProviders, azureProviders, ocpProviders } = this.props; + const { awsProviders, azureProviders, gcpProviders, ibmProviders, ocpProviders } = this.props; const sources = []; @@ -178,6 +178,20 @@ class InactiveSourcesBase extends React.Component { } }); } + if (gcpProviders && gcpProviders.data) { + gcpProviders.data.map(data => { + if (data.active !== true) { + sources.push(data.name); + } + }); + } + if (ibmProviders && ibmProviders.data) { + ibmProviders.data.map(data => { + if (data.active !== true) { + sources.push(data.name); + } + }); + } if (ocpProviders && ocpProviders.data) { ocpProviders.data.map(data => { if (data.active !== true) { @@ -231,6 +245,12 @@ class InactiveSourcesBase extends React.Component { azureProviders, azureProvidersError, azureProvidersFetchStatus, + gcpProviders, + gcpProvidersError, + gcpProvidersFetchStatus, + ibmProviders, + ibmProvidersError, + ibmProvidersFetchStatus, ocpProviders, ocpProvidersError, ocpProvidersFetchStatus, @@ -250,6 +270,12 @@ class InactiveSourcesBase extends React.Component { azureProviders && azureProvidersFetchStatus === FetchStatus.complete && !azureProvidersError && + gcpProviders && + gcpProvidersFetchStatus === FetchStatus.complete && + !gcpProvidersError && + ibmProviders && + ibmProvidersFetchStatus === FetchStatus.complete && + !ibmProvidersError && ocpProviders && ocpProvidersFetchStatus === FetchStatus.complete && !ocpProvidersError @@ -321,8 +347,8 @@ const mapStateToProps = createMapStateToPropsStatus Page for known outages.", "assign_sources_error_title": "This action is temporarily unavailable", "cost_model": { "cost_models": "Cost models", @@ -236,15 +236,14 @@ "description": "A cost model allows you to associate a price to metrics provided by your sources to charge for utilization of resources.", "empty_state": { "add_rate": "Add rate", - "desc_create": "To create a price list, begin by clicking the {{add_rate}} button.", + "desc_create": "To create a price list, begin by clicking the <0>Create rate button.", "desc_other_time": "You can create a price list or modify one at a later time.", - "desc_skip": "To skip this step, click the {{next}} button.", + "desc_skip": "To skip this step, click the <0>next button.", "next": "Next", "title": "A price list has not been created." }, "finish_button": "Finish", "general_info": { - "learn_more": "Learn more", "name_too_long": "Should not exceed 100 characters", "source_type_empty_value_label": "Select source type", "source_type_label": "Source type", @@ -282,7 +281,7 @@ "create_button": "Create", "markup": "Markup/discount", "sources": "Assigned sources", - "sub_title_details": "Review and confirm your cost model configuration and assignments. Click {{create}} to create the cost model, or {{back}} to revise.", + "sub_title_details": "Review and confirm your cost model configuration and assignments. Click <0>Create to create the cost model, or <1>Back to revise.", "sub_title_success": "Costs for resources connected to the assigned sources will now be calculated using the newly created {{ cost_model }} cost model.", "title_details": "Review details", "title_success": "Creation successful" @@ -291,7 +290,7 @@ "caption": "Select from the following {{ type }} sources:", "error": { "action": "Refresh this step", - "desc": "Try refreshing this step or you can skip this step (as it is optional) and assign the source to the cost model at a later time. If the problem persists, contact your organization administrator or visit our <2>status page for known outages.", + "desc": "Try refreshing this step or you can skip this step (as it is optional) and assign the source to the cost model at a later time. If the problem persists, contact your organization administrator or visit our <0>Status Page for known outages.", "title": "This step is temporarily unavailable" }, "sub_title": "Select one or more sources to this cost model. You can skip this step and assign the cost model to a source at a later time. A source will be unavailable for selection if a cost model is already assigned to it.", @@ -418,9 +417,10 @@ "title": "Delete {{rate.metric.label_metric}}-{{rate.metric.label_measurement}} ({{rate.metric.label_measurement_unit}}) rate?" }, "docs": { - "add_ocp_sources": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html/getting_started_with_cost_management/assembly-adding-openshift-container-platform-source", - "config_cost_models": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html/using_cost_models/assembly-setting-up-cost-models", - "using_cost_model": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html/using_cost_models/assembly-using-cost-models#cost-model-terminology" + "add_ocp_sources": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html-single/getting_started_with_cost_management/index#assembly-adding-openshift-container-platform-source", + "config_cost_models": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html-single/using_cost_models/index#assembly-setting-up-cost-models", + "cost_model_terminology": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html-single/using_cost_models/index#cost-model-terminology", + "using_cost_models": "https://access.redhat.com/documentation/en-us/cost_management_service/2021/html-single/using_cost_models/index" }, "empty_filter_state": { "subtitle": "Sorry, no data with the given filter was found.", @@ -443,7 +443,6 @@ "no_data": "no data", "org_unit_column_title": "Names", "perspective": { - "all_cloud": "All cloud filtered by OpenShift", "aws": "Amazon Web Services", "aws_cloud": "Amazon Web Services filtered by OpenShift", "azure": "Microsoft Azure", @@ -451,11 +450,11 @@ "gcp": "Google Cloud Platform", "ibm": "IBM Cloud", "ocp": "All OpenShift cost", + "ocp_cloud": "All cloud filtered by OpenShift", "ocp_supplementary": "OpenShift supplementary cost", "ocp_usage": "OpenShift usage" }, "title": { - "all_cloud": "All cloud filtered by OpenShift - Top 5 Costliest", "aws": "Amazon Web Services - Top 5 Costliest", "aws_cloud": "Amazon Web Services filtered by OpenShift - Top 5 Costliest", "azure": "Microsoft Azure - Top 5 Costliest", @@ -463,6 +462,7 @@ "gcp": "Google Cloud Platform - Top 5 Costliest", "ibm": "IBM Cloud - Top 5 Costliest", "ocp": "All OpenShift cost - Top 5 Costliest", + "ocp_cloud": "All cloud filtered by OpenShift - Top 5 Costliest", "ocp_supplementary": "OpenShift supplementary cost - Top 5 Costliest", "ocp_usage": "OpenShift usage - Top 5 Costliest" } @@ -662,6 +662,7 @@ "title": "A problem was detected with {{value}}", "title_multiple": "A problem was detected with the following sources" }, + "learn_more": "Learn more", "loading": "Loading", "loading_state": { "sources_desc": "Searching for your sources. Do not refresh the browser", @@ -816,7 +817,6 @@ "ocp_desc": "Total cost for OpenShift Container Platform, comprising the infrastructure cost and cost calculated from metrics.", "perspective": { "all": "All", - "all_cloud": "All cloud filtered by OpenShift", "aws": "Amazon Web Services", "aws_cloud": "Amazon Web Services filtered by OpenShift", "azure": "Microsoft Azure", @@ -824,6 +824,7 @@ "gcp": "Google Cloud Platform", "ibm": "IBM Cloud", "label": "Perspective", + "ocp_cloud": "All cloud filtered by OpenShift", "ocp_usage": "OpenShift usage", "supplementary": "Supplementary" } @@ -843,10 +844,11 @@ "filter_by_description": "Filter by description", "filter_by_name": "Filter by name", "filter_by_source_type": "Filter by source type", - "header_popover": "A cost model allows you to associate a price to metrics provided by your sources to charge for utilization of resources.", + "header_popover": "A cost model allows you to associate a price to metrics provided by your sources to charge for utilization of resources. <0>Learn more", "header_title": "Cost models", "last_change": "Last change", "no_cost_models_description": "Create a cost model to start calculating your hybrid cloud costs using custom price lists, markups, or both. Click on the button below to begin the journey.", + "no_cost_models_learn_more": "Read about setting up a cost model", "no_cost_models_title": "What is your hybrid cloud costing you?", "ocp": "OpenShift Container Platform", "source_type": "Source type" @@ -872,6 +874,7 @@ "OCP": "Red Hat OpenShift" } }, + "status_url": "https://status.redhat.com", "tag": { "heading_key": "Key", "heading_value": "Value", diff --git a/src/pages/costModels/components/errorState.tsx b/src/pages/costModels/components/errorState.tsx index 09d0a5562..c8c521a2e 100644 --- a/src/pages/costModels/components/errorState.tsx +++ b/src/pages/costModels/components/errorState.tsx @@ -51,9 +51,7 @@ export const SourceStepErrorState: React.FunctionComponent - Try refreshing this step or you can skip this step (as it is optional) and assign the source to the cost model at - a later time. If the problem persists, contact your organization administrator or visit our{' '} - status page for known outages. + ); const actionButton = ( @@ -83,8 +81,7 @@ export const SourcesModalErrorStateBase: React.FunctionComponent - You cannot assign a source at this time. Try refreshing this page. If the problem persists, contact your - organization administrator or visit our status page for known outages. + ); const actionButton = ( diff --git a/src/pages/costModels/costModelsDetails/header.tsx b/src/pages/costModels/costModelsDetails/header.tsx index ec833972a..2ffd1bdaa 100644 --- a/src/pages/costModels/costModelsDetails/header.tsx +++ b/src/pages/costModels/costModelsDetails/header.tsx @@ -1,7 +1,7 @@ import { Button, ButtonVariant, Popover, TextContent, Title } from '@patternfly/react-core'; import { OutlinedQuestionCircleIcon } from '@patternfly/react-icons/dist/js/icons/outlined-question-circle-icon'; import React from 'react'; -import { WithTranslation, withTranslation } from 'react-i18next'; +import { Trans, WithTranslation, withTranslation } from 'react-i18next'; import { connect } from 'react-redux'; import { RootState } from 'store'; @@ -21,10 +21,19 @@ function HeaderBase({ children }: HeaderProps): JSX.Element { const mapStateToProps = (state: RootState, ownProps: WithTranslation) => { const { t } = ownProps; + const children = ( <> {t('page_cost_models.header_title')} - + + + + } + enableFlip + > diff --git a/src/pages/costModels/costModelsDetails/noCostModels.tsx b/src/pages/costModels/costModelsDetails/noCostModels.tsx index db23b24eb..08b3f3b38 100644 --- a/src/pages/costModels/costModelsDetails/noCostModels.tsx +++ b/src/pages/costModels/costModelsDetails/noCostModels.tsx @@ -12,7 +12,16 @@ const NoCostModels = HookIntoProps(() => { title: t('page_cost_models.no_cost_models_title'), description: t('page_cost_models.no_cost_models_description'), icon: PlusCircleIcon, - actions: , + actions: ( + <> + +
+
+
+ {t('page_cost_models.no_cost_models_learn_more')} + + + ), }; })(EmptyStateBase); diff --git a/src/pages/costModels/createCostModelWizard/generalInformation.tsx b/src/pages/costModels/createCostModelWizard/generalInformation.tsx index 1573737bc..4eaf124c0 100644 --- a/src/pages/costModels/createCostModelWizard/generalInformation.tsx +++ b/src/pages/costModels/createCostModelWizard/generalInformation.tsx @@ -27,8 +27,8 @@ const GeneralInformation: React.SFC = ({ t }) => { - - {t('cost_models_wizard.general_info.learn_more')} + + {t('learn_more')} diff --git a/src/pages/costModels/createCostModelWizard/priceListTable.tsx b/src/pages/costModels/createCostModelWizard/priceListTable.tsx index 74039a692..e77db792f 100644 --- a/src/pages/costModels/createCostModelWizard/priceListTable.tsx +++ b/src/pages/costModels/createCostModelWizard/priceListTable.tsx @@ -45,7 +45,7 @@ const NoTiersEmptyState = ({ t }) => ( - {t('cost_models_wizard.empty_state.add_rate')} + {t('cost_models_wizard.price_list.create_rate')}
diff --git a/src/pages/costModels/createCostModelWizard/review.tsx b/src/pages/costModels/createCostModelWizard/review.tsx index 76e7afc0e..5f1aebe4c 100644 --- a/src/pages/costModels/createCostModelWizard/review.tsx +++ b/src/pages/costModels/createCostModelWizard/review.tsx @@ -65,8 +65,8 @@ const ReviewDetailsBase: React.SFC = ({ t }) => ( - {t('cost_models_wizard.review.create_button')} - {t('cost_models_wizard.review.back_button')} + {t('cost_models_wizard.review.create_button')} + {t('cost_models_wizard.review.back_button')} diff --git a/src/pages/state/notAuthorized/notAuthorizedState.tsx b/src/pages/state/notAuthorized/notAuthorizedState.tsx index 066e078d0..ce2338eff 100644 --- a/src/pages/state/notAuthorized/notAuthorizedState.tsx +++ b/src/pages/state/notAuthorized/notAuthorizedState.tsx @@ -25,6 +25,12 @@ class NotAuthorizedStateBase extends React.Component { case paths.azureDetailsBreakdown: serviceName = 'no_auth_state.azure_service_name'; break; + case paths.costModels: + serviceName = 'no_auth_state.cost_models_service_name'; + break; + case paths.explorer: + serviceName = 'cost_management'; + break; case paths.gcpDetails: case paths.gcpDetailsBreakdown: serviceName = 'no_auth_state.gcp_service_name'; @@ -33,9 +39,6 @@ class NotAuthorizedStateBase extends React.Component { case paths.ibmDetailsBreakdown: serviceName = 'no_auth_state.ibm_service_name'; break; - case paths.costModels: - serviceName = 'no_auth_state.cost_models_service_name'; - break; case paths.ocpDetails: case paths.ocpDetailsBreakdown: serviceName = 'no_auth_state.ocp_service_name'; diff --git a/src/pages/views/components/export/exportModal.tsx b/src/pages/views/components/export/exportModal.tsx index 9bd1961a9..5f09c903f 100644 --- a/src/pages/views/components/export/exportModal.tsx +++ b/src/pages/views/components/export/exportModal.tsx @@ -27,6 +27,7 @@ export interface ExportModalOwnProps extends WithTranslation { queryString?: string; reportPathsType: ReportPathsType; resolution?: 'daily' | 'monthly'; // Default resolution + showAggregateType?: boolean; // monthly resolution filters are not valid with date range showTimeScope?: boolean; // timeScope filters are not valid with date range } @@ -90,7 +91,16 @@ export class ExportModalBase extends React.Component{t('export.heading', { groupBy })}
- - - {resolutionOptions.map((option, index) => ( - - ))} - - + {showAggregateType && ( + + + {resolutionOptions.map((option, index) => ( + + ))} + + + )} {showTimeScope && ( diff --git a/src/pages/views/components/groupBy/groupBy.tsx b/src/pages/views/components/groupBy/groupBy.tsx index 12938c95b..da3b55183 100644 --- a/src/pages/views/components/groupBy/groupBy.tsx +++ b/src/pages/views/components/groupBy/groupBy.tsx @@ -15,6 +15,7 @@ import { GroupByOrg } from './groupByOrg'; import { GroupByTag } from './groupByTag'; interface GroupByOwnProps extends WithTranslation { + endDate?: string; getIdKeyForGroupBy: (groupBy: Query['group_by']) => string; groupBy?: string; isDisabled?: boolean; @@ -23,11 +24,13 @@ interface GroupByOwnProps extends WithTranslation { label: string; value: string; }[]; + orgQueryString?: string; orgReportPathsType?: OrgPathsType; perspective?: PerspectiveType; - queryString?: string; showOrgs?: boolean; showTags?: boolean; + startDate?: string; + tagQueryString?: string; tagReportPathsType: TagPathsType; } @@ -83,12 +86,21 @@ class GroupByBase extends React.Component { } public componentDidMount() { - const { fetchOrg, fetchTag, queryString, orgReportPathsType, showOrgs, showTags, tagReportPathsType } = this.props; + const { + fetchOrg, + fetchTag, + orgQueryString, + orgReportPathsType, + showOrgs, + showTags, + tagQueryString, + tagReportPathsType, + } = this.props; if (showOrgs) { - fetchOrg(orgReportPathsType, orgReportType, queryString); + fetchOrg(orgReportPathsType, orgReportType, orgQueryString); } if (showTags) { - fetchTag(tagReportPathsType, tagReportType, queryString); + fetchTag(tagReportPathsType, tagReportType, tagQueryString); } this.setState({ currentItem: this.getCurrentGroupBy(), @@ -100,19 +112,20 @@ class GroupByBase extends React.Component { fetchOrg, fetchTag, groupBy, + orgQueryString, orgReportPathsType, perspective, - queryString, showOrgs, showTags, + tagQueryString, tagReportPathsType, } = this.props; if (prevProps.groupBy !== groupBy || prevProps.perspective !== perspective) { if (showOrgs) { - fetchOrg(orgReportPathsType, orgReportType, queryString); + fetchOrg(orgReportPathsType, orgReportType, orgQueryString); } if (showTags) { - fetchTag(tagReportPathsType, tagReportType, queryString); + fetchTag(tagReportPathsType, tagReportType, tagQueryString); } let options; @@ -251,28 +264,50 @@ class GroupByBase extends React.Component { } const mapStateToProps = createMapStateToProps( - (state, { orgReportPathsType, tagReportPathsType }) => { - const queryString = getQuery({ + (state, { endDate, startDate, orgReportPathsType, tagReportPathsType }) => { + const tagQuery = + endDate && startDate + ? { + start_date: startDate, + end_date: endDate, + } + : { + filter: { + resolution: 'monthly', + time_scope_units: 'month', + time_scope_value: -1, + }, + }; + + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does + const tagQueryString = getQuery({ + ...tagQuery, // key_only: true }); - const orgReport = orgSelectors.selectOrg(state, orgReportPathsType, orgReportType, queryString); - const orgReportFetchStatus = orgSelectors.selectOrgFetchStatus( - state, - orgReportPathsType, - orgReportType, - queryString - ); - const tagReport = tagSelectors.selectTag(state, tagReportPathsType, tagReportType, queryString); + const tagReport = tagSelectors.selectTag(state, tagReportPathsType, tagReportType, tagQueryString); const tagReportFetchStatus = tagSelectors.selectTagFetchStatus( state, tagReportPathsType, tagReportType, - queryString + tagQueryString ); + + const orgQueryString = getQuery({ + // TBD... + }); + const orgReport = orgSelectors.selectOrg(state, orgReportPathsType, orgReportType, orgQueryString); + const orgReportFetchStatus = orgSelectors.selectOrgFetchStatus( + state, + orgReportPathsType, + orgReportType, + orgQueryString + ); + return { - queryString, + orgQueryString, orgReport, orgReportFetchStatus, + tagQueryString, tagReport, tagReportFetchStatus, }; diff --git a/src/pages/views/details/awsDetails/awsDetails.tsx b/src/pages/views/details/awsDetails/awsDetails.tsx index 82c905f47..929324083 100644 --- a/src/pages/views/details/awsDetails/awsDetails.tsx +++ b/src/pages/views/details/awsDetails/awsDetails.tsx @@ -148,7 +148,6 @@ class AwsDetails extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/details/awsDetails/detailsToolbar.tsx b/src/pages/views/details/awsDetails/detailsToolbar.tsx index 8881b6f6b..59263b37e 100644 --- a/src/pages/views/details/awsDetails/detailsToolbar.tsx +++ b/src/pages/views/details/awsDetails/detailsToolbar.tsx @@ -151,8 +151,13 @@ export class DetailsToolbarBase extends React.Component { // eslint-disable-next-line @typescript-eslint/no-unused-vars const mapStateToProps = createMapStateToProps((state, props) => { - // Omitting key_only to share a single request -- the toolbar needs key values + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does const queryString = getQuery({ + filter: { + resolution: 'monthly', + time_scope_units: 'month', + time_scope_value: -1, + }, // key_only: true }); const orgReport = orgSelectors.selectOrg(state, orgReportPathsType, orgReportType, queryString); diff --git a/src/pages/views/details/azureDetails/azureDetails.tsx b/src/pages/views/details/azureDetails/azureDetails.tsx index 16611c6db..430ff34a3 100644 --- a/src/pages/views/details/azureDetails/azureDetails.tsx +++ b/src/pages/views/details/azureDetails/azureDetails.tsx @@ -146,7 +146,6 @@ class AzureDetails extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/details/azureDetails/detailsToolbar.tsx b/src/pages/views/details/azureDetails/detailsToolbar.tsx index 253974433..16de3c3a5 100644 --- a/src/pages/views/details/azureDetails/detailsToolbar.tsx +++ b/src/pages/views/details/azureDetails/detailsToolbar.tsx @@ -139,7 +139,7 @@ export class DetailsToolbarBase extends React.Component { // eslint-disable-next-line @typescript-eslint/no-unused-vars const mapStateToProps = createMapStateToProps((state, props) => { - // Omitting key_only to share a single request -- the toolbar needs key values + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does const queryString = getQuery({ filter: { resolution: 'monthly', diff --git a/src/pages/views/details/components/actions/actions.tsx b/src/pages/views/details/components/actions/actions.tsx index a4671ef86..e3f2de7c7 100644 --- a/src/pages/views/details/components/actions/actions.tsx +++ b/src/pages/views/details/components/actions/actions.tsx @@ -64,7 +64,6 @@ class DetailsActionsBase extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/details/components/costOverview/costOverviewBase.tsx b/src/pages/views/details/components/costOverview/costOverviewBase.tsx index b59d406c4..75d272c58 100644 --- a/src/pages/views/details/components/costOverview/costOverviewBase.tsx +++ b/src/pages/views/details/components/costOverview/costOverviewBase.tsx @@ -88,8 +88,8 @@ class CostOverviewBase extends React.Component {

{t('breakdown.markup_title')}

{t('breakdown.markup_desc')}


- - {t('cost_models_wizard.general_info.learn_more')} + + {t('learn_more')} } diff --git a/src/pages/views/details/components/tag/tagLink.tsx b/src/pages/views/details/components/tag/tagLink.tsx index c3dd3b653..6c0f9f81f 100644 --- a/src/pages/views/details/components/tag/tagLink.tsx +++ b/src/pages/views/details/components/tag/tagLink.tsx @@ -120,6 +120,7 @@ const mapStateToProps = createMapStateToProps { // eslint-disable-next-line @typescript-eslint/no-unused-vars const mapStateToProps = createMapStateToProps((state, props) => { - // Omitting key_only to share a single request -- the toolbar needs key values + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does const queryString = getQuery({ + filter: { + resolution: 'monthly', + time_scope_units: 'month', + time_scope_value: -1, + }, // key_only: true }); diff --git a/src/pages/views/details/gcpDetails/gcpDetails.tsx b/src/pages/views/details/gcpDetails/gcpDetails.tsx index c5e5d16dd..959101533 100644 --- a/src/pages/views/details/gcpDetails/gcpDetails.tsx +++ b/src/pages/views/details/gcpDetails/gcpDetails.tsx @@ -146,7 +146,6 @@ class GcpDetails extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/details/ibmDetails/detailsToolbar.tsx b/src/pages/views/details/ibmDetails/detailsToolbar.tsx index 694e1bdc0..dd18c2a96 100644 --- a/src/pages/views/details/ibmDetails/detailsToolbar.tsx +++ b/src/pages/views/details/ibmDetails/detailsToolbar.tsx @@ -136,8 +136,13 @@ export class DetailsToolbarBase extends React.Component { // eslint-disable-next-line @typescript-eslint/no-unused-vars const mapStateToProps = createMapStateToProps((state, props) => { - // Omitting key_only to share a single request -- the toolbar needs key values + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does const queryString = getQuery({ + filter: { + resolution: 'monthly', + time_scope_units: 'month', + time_scope_value: -1, + }, // key_only: true }); diff --git a/src/pages/views/details/ibmDetails/ibmDetails.tsx b/src/pages/views/details/ibmDetails/ibmDetails.tsx index 3033a9178..c40df9f76 100644 --- a/src/pages/views/details/ibmDetails/ibmDetails.tsx +++ b/src/pages/views/details/ibmDetails/ibmDetails.tsx @@ -146,7 +146,6 @@ class IbmDetails extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/details/ocpDetails/detailsToolbar.tsx b/src/pages/views/details/ocpDetails/detailsToolbar.tsx index e1ab51ea9..cb9bb59f6 100644 --- a/src/pages/views/details/ocpDetails/detailsToolbar.tsx +++ b/src/pages/views/details/ocpDetails/detailsToolbar.tsx @@ -132,7 +132,7 @@ export class DetailsToolbarBase extends React.Component { // eslint-disable-next-line @typescript-eslint/no-unused-vars const mapStateToProps = createMapStateToProps((state, props) => { - // Omitting key_only to share a single request -- the toolbar needs key values + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does const queryString = getQuery({ filter: { resolution: 'monthly', diff --git a/src/pages/views/details/ocpDetails/ocpDetails.tsx b/src/pages/views/details/ocpDetails/ocpDetails.tsx index e71f49eed..b5c752c45 100644 --- a/src/pages/views/details/ocpDetails/ocpDetails.tsx +++ b/src/pages/views/details/ocpDetails/ocpDetails.tsx @@ -146,7 +146,6 @@ class OcpDetails extends React.Component { onClose={this.handleExportModalClose} query={query} reportPathsType={reportPathsType} - showTimeScope /> ); }; diff --git a/src/pages/views/explorer/explorer.tsx b/src/pages/views/explorer/explorer.tsx index 5e3c8ad86..ba3bf8534 100644 --- a/src/pages/views/explorer/explorer.tsx +++ b/src/pages/views/explorer/explorer.tsx @@ -177,6 +177,8 @@ class Explorer extends React.Component { query={query} reportPathsType={getReportPathsType(perspective)} resolution="daily" + showAggregateType={false} + showTimeScope={false} /> ); }; @@ -224,6 +226,7 @@ class Explorer extends React.Component { isLoading={reportFetchStatus === FetchStatus.inProgress} onSelected={this.handleSelected} onSort={this.handleSort} + perspective={perspective} query={query} report={report} selectedItems={selectedItems} @@ -307,7 +310,7 @@ class Explorer extends React.Component { group_by: { [groupByKey]: value, }, - // order_by: { cost: 'desc' }, // // Todo: omit default sort + order_by: undefined, // Clear sort }; history.replace(getRouteForQuery(history, newQuery, true)); this.setState({ isAllSelected: false, selectedItems: [] }); @@ -378,11 +381,11 @@ class Explorer extends React.Component { getRouteForQuery(history, { filter_by: query ? query.filter_by : undefined, group_by: query ? query.group_by : undefined, - // order_by: { cost: 'desc' }, // Todo: omit default sort + order_by: query ? query.order_by : undefined, dateRange, // Preserve date range }) ); - } else { + } else if (perspective) { fetchReport(getReportPathsType(perspective), getReportType(perspective), queryString); } }; @@ -462,11 +465,15 @@ class Explorer extends React.Component { onFilterRemoved={this.handleFilterRemoved} onGroupByClicked={this.handleGroupByClick} onPerspectiveClicked={this.handlePerspectiveClick} + perspective={perspective} /> {itemsTotal > 0 && (
- +
)} @@ -500,38 +507,6 @@ const mapStateToProps = createMapStateToProps(location.search); - const perspective = getPerspectiveDefault(queryFromRoute, userAccess); - const dateRange = getDateRangeDefault(queryFromRoute); - const { end_date, start_date } = getDateRange(queryFromRoute); - - const query = { - filter: { - ...baseQuery.filter, - ...queryFromRoute.filter, - }, - filter_by: queryFromRoute.filter_by || baseQuery.filter_by, - group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, - // order_by: queryFromRoute.order_by || baseQuery.order_by, // Todo: omit default sort - order_by: queryFromRoute.order_by, - perspective, - dateRange, - end_date, - start_date, - }; - const queryString = getQuery({ - ...query, - perspective: undefined, - dateRange: undefined, - }); - - const reportPathsType = getReportPathsType(perspective); - const reportType = getReportType(perspective); - - const report = reportSelectors.selectReport(state, reportPathsType, reportType, queryString); - const reportError = reportSelectors.selectReportError(state, reportPathsType, reportType, queryString); - const reportFetchStatus = reportSelectors.selectReportFetchStatus(state, reportPathsType, reportType, queryString); - const awsProvidersQueryString = getProvidersQuery(awsProvidersQuery); const awsProviders = providersSelectors.selectProviders(state, ProviderType.aws, awsProvidersQueryString); const awsProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( @@ -586,6 +561,51 @@ const mapStateToProps = createMapStateToProps(location.search); + const dateRange = getDateRangeDefault(queryFromRoute); + const { end_date, start_date } = getDateRange(getDateRangeDefault(queryFromRoute)); + const perspective = getPerspectiveDefault({ + awsProviders, + awsProvidersFetchStatus, + azureProviders, + azureProvidersFetchStatus, + gcpProviders, + gcpProvidersFetchStatus, + ibmProviders, + ibmProvidersFetchStatus, + ocpProviders, + ocpProvidersFetchStatus, + queryFromRoute, + userAccess, + }); + + const query = { + filter: { + ...baseQuery.filter, + ...queryFromRoute.filter, + }, + filter_by: queryFromRoute.filter_by || baseQuery.filter_by, + group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, + order_by: queryFromRoute.order_by, + perspective, + dateRange, + end_date, + start_date, + }; + const queryString = getQuery({ + ...query, + perspective: undefined, + dateRange: undefined, + }); + + const reportPathsType = getReportPathsType(perspective); + const reportType = getReportType(perspective); + + const report = reportSelectors.selectReport(state, reportPathsType, reportType, queryString); + const reportError = reportSelectors.selectReportError(state, reportPathsType, reportType, queryString); + const reportFetchStatus = reportSelectors.selectReportFetchStatus(state, reportPathsType, reportType, queryString); + return { awsProviders, awsProvidersFetchStatus, diff --git a/src/pages/views/explorer/explorerChart.tsx b/src/pages/views/explorer/explorerChart.tsx index fc9e58d4e..95d29d86f 100644 --- a/src/pages/views/explorer/explorerChart.tsx +++ b/src/pages/views/explorer/explorerChart.tsx @@ -1,8 +1,6 @@ import { Skeleton, Title } from '@patternfly/react-core'; import { getQuery, parseQuery, Query } from 'api/queries/query'; -import { getUserAccessQuery } from 'api/queries/userAccessQuery'; import { Report } from 'api/reports/report'; -import { UserAccessType } from 'api/userAccess'; import { AxiosError } from 'axios'; import { ChartDatum, ComputedReportItemType, isFloat, isInt } from 'components/charts/common/chartDatumUtils'; import { CostExplorerChart } from 'components/charts/costExplorerChart'; @@ -14,7 +12,6 @@ import { connect } from 'react-redux'; import { RouteComponentProps, withRouter } from 'react-router-dom'; import { createMapStateToProps, FetchStatus } from 'store/common'; import { reportActions, reportSelectors } from 'store/reports'; -import { allUserAccessQuery, userAccessSelectors } from 'store/userAccess'; import { getIdKeyForGroupBy } from 'utils/computedReport/getComputedExplorerReportItems'; import { ComputedReportItem, getUnsortedComputedReportItems } from 'utils/computedReport/getComputedReportItems'; import { formatValue } from 'utils/formatValue'; @@ -26,7 +23,6 @@ import { getDateRange, getDateRangeDefault, getGroupByDefault, - getPerspectiveDefault, getReportPathsType, getReportType, PerspectiveType, @@ -34,6 +30,7 @@ import { interface ExplorerChartOwnProps extends RouteComponentProps, WithTranslation { computedReportItemType?: ComputedReportItemType; + perspective: PerspectiveType; } interface ExplorerChartStateProps { @@ -108,10 +105,12 @@ class ExplorerChartBase extends React.Component { private fetchReport = () => { const { fetchReport, perspective, queryString } = this.props; - const reportPathsType = getReportPathsType(perspective); - const reportType = getReportType(perspective); + if (perspective) { + const reportPathsType = getReportPathsType(perspective); + const reportType = getReportType(perspective); - fetchReport(reportPathsType, reportType, queryString); + fetchReport(reportPathsType, reportType, queryString); + } }; private getChartDatums = (computedItems: ComputedReportItem[]) => { @@ -139,9 +138,6 @@ class ExplorerChartBase extends React.Component { private getChartTitle = (perspective: string) => { let result; switch (perspective) { - case PerspectiveType.allCloud: - result = 'explorer.title.all_cloud'; - break; case PerspectiveType.aws: result = 'explorer.title.aws'; break; @@ -163,6 +159,9 @@ class ExplorerChartBase extends React.Component { case PerspectiveType.ocp: result = 'explorer.title.ocp'; break; + case PerspectiveType.ocpCloud: + result = 'explorer.title.ocp_cloud'; + break; case PerspectiveType.ocpSupplementary: result = 'explorer.title.ocp_supplementary'; break; @@ -276,53 +275,51 @@ class ExplorerChartBase extends React.Component { } // eslint-disable-next-line @typescript-eslint/no-unused-vars -const mapStateToProps = createMapStateToProps((state, props) => { - const userAccessQueryString = getUserAccessQuery(allUserAccessQuery); - const userAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.all, userAccessQueryString); - - const queryFromRoute = parseQuery(location.search); - const perspective = getPerspectiveDefault(queryFromRoute, userAccess); - const dateRange = getDateRangeDefault(queryFromRoute); - const { end_date, start_date } = getDateRange(queryFromRoute); - - const query = { - filter: { - ...baseQuery.filter, - ...queryFromRoute.filter, - limit: 5, - offset: undefined, - }, - filter_by: queryFromRoute.filter_by || baseQuery.filter_by, - group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, - perspective, - dateRange, - end_date, - start_date, - }; - const queryString = getQuery({ - ...query, - perspective: undefined, - dateRange: undefined, - }); - - const reportPathsType = getReportPathsType(perspective); - const reportType = getReportType(perspective); - - const report = reportSelectors.selectReport(state, reportPathsType, reportType, queryString); - const reportError = reportSelectors.selectReportError(state, reportPathsType, reportType, queryString); - const reportFetchStatus = reportSelectors.selectReportFetchStatus(state, reportPathsType, reportType, queryString); - - return { - end_date, - perspective, - query, - queryString, - report, - reportError, - reportFetchStatus, - start_date, - }; -}); +const mapStateToProps = createMapStateToProps( + (state, { perspective }) => { + const queryFromRoute = parseQuery(location.search); + const dateRange = getDateRangeDefault(queryFromRoute); + const { end_date, start_date } = getDateRange(getDateRangeDefault(queryFromRoute)); + + const query = { + filter: { + ...baseQuery.filter, + ...queryFromRoute.filter, + limit: 5, + offset: undefined, + }, + filter_by: queryFromRoute.filter_by || baseQuery.filter_by, + group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, + perspective, + dateRange, + end_date, + start_date, + }; + const queryString = getQuery({ + ...query, + perspective: undefined, + dateRange: undefined, + }); + + const reportPathsType = getReportPathsType(perspective); + const reportType = getReportType(perspective); + + const report = reportSelectors.selectReport(state, reportPathsType, reportType, queryString); + const reportError = reportSelectors.selectReportError(state, reportPathsType, reportType, queryString); + const reportFetchStatus = reportSelectors.selectReportFetchStatus(state, reportPathsType, reportType, queryString); + + return { + end_date, + perspective, + query, + queryString, + report, + reportError, + reportFetchStatus, + start_date, + }; + } +); const mapDispatchToProps: ExplorerChartDispatchProps = { fetchReport: reportActions.fetchReport, diff --git a/src/pages/views/explorer/explorerFilter.tsx b/src/pages/views/explorer/explorerFilter.tsx index 10462b161..251bd7e3a 100644 --- a/src/pages/views/explorer/explorerFilter.tsx +++ b/src/pages/views/explorer/explorerFilter.tsx @@ -1,9 +1,7 @@ import { ToolbarChipGroup } from '@patternfly/react-core'; import { Org, OrgPathsType, OrgType } from 'api/orgs/org'; import { getQuery, orgUnitIdKey, parseQuery, Query, tagKey } from 'api/queries/query'; -import { getUserAccessQuery } from 'api/queries/userAccessQuery'; import { Tag, TagPathsType, TagType } from 'api/tags/tag'; -import { UserAccessType } from 'api/userAccess'; import { DataToolbar } from 'pages/views/components/dataToolbar/dataToolbar'; import React from 'react'; import { WithTranslation, withTranslation } from 'react-i18next'; @@ -12,7 +10,7 @@ import { RouteComponentProps, withRouter } from 'react-router-dom'; import { createMapStateToProps, FetchStatus } from 'store/common'; import { orgActions, orgSelectors } from 'store/orgs'; import { tagActions, tagSelectors } from 'store/tags'; -import { allUserAccessQuery, userAccessSelectors } from 'store/userAccess'; +import { getLast60DaysDate } from 'utils/dateRange'; import { isEqual } from 'utils/equal'; import { DateRange } from './dateRange'; @@ -23,7 +21,6 @@ import { getDateRangeDefault, getGroupByOptions, getOrgReportPathsType, - getPerspectiveDefault, getRouteForQuery, getTagReportPathsType, PerspectiveType, @@ -34,9 +31,11 @@ interface ExplorerFilterOwnProps { isDisabled?: boolean; onFilterAdded(filterType: string, filterValue: string); onFilterRemoved(filterType: string, filterValue?: string); + orgQueryString?: string; pagination?: React.ReactNode; + perspective: PerspectiveType; query?: Query; - queryString?: string; + tagQueryString?: string; } interface ExplorerFilterStateProps { @@ -44,7 +43,6 @@ interface ExplorerFilterStateProps { orgReport?: Org; orgReportFetchStatus?: FetchStatus; orgReportPathsType?: OrgPathsType; - perspective: PerspectiveType; tagReport?: Tag; tagReportFetchStatus?: FetchStatus; tagReportPathsType?: TagPathsType; @@ -74,13 +72,13 @@ export class ExplorerFilterBase extends React.Component { public state: ExplorerFilterState = { ...this.defaultState }; public componentDidMount() { - const { fetchOrg, fetchTag, orgReportPathsType, queryString, tagReportPathsType } = this.props; + const { fetchOrg, fetchTag, orgQueryString, orgReportPathsType, tagQueryString, tagReportPathsType } = this.props; if (orgReportPathsType) { - fetchOrg(orgReportPathsType, orgReportType, queryString); + fetchOrg(orgReportPathsType, orgReportType, orgQueryString); } if (tagReportPathsType) { - fetchTag(tagReportPathsType, tagReportType, queryString); + fetchTag(tagReportPathsType, tagReportType, tagQueryString); } this.setState({ categoryOptions: this.getCategoryOptions(), @@ -92,21 +90,22 @@ export class ExplorerFilterBase extends React.Component { const { fetchOrg, fetchTag, + orgQueryString, orgReport, orgReportPathsType, perspective, query, - queryString, + tagQueryString, tagReport, tagReportPathsType, } = this.props; if (query && !isEqual(query, prevProps.query)) { if (orgReportPathsType) { - fetchOrg(orgReportPathsType, orgReportType, queryString); + fetchOrg(orgReportPathsType, orgReportType, orgQueryString); } if (tagReportPathsType) { - fetchTag(tagReportPathsType, tagReportType, queryString); + fetchTag(tagReportPathsType, tagReportType, tagQueryString); } } if (!isEqual(orgReport, prevProps.orgReport) || !isEqual(tagReport, prevProps.tagReport)) { @@ -197,53 +196,72 @@ export class ExplorerFilterBase extends React.Component { } // eslint-disable-next-line @typescript-eslint/no-unused-vars -const mapStateToProps = createMapStateToProps((state, props) => { - const userAccessQueryString = getUserAccessQuery(allUserAccessQuery); - const userAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.all, userAccessQueryString); - - const queryFromRoute = parseQuery(location.search); - const perspective = getPerspectiveDefault(queryFromRoute, userAccess); - const dateRange = getDateRangeDefault(queryFromRoute); - - // Omitting key_only to share a single request -- the toolbar needs key values - const queryString = getQuery({ - // key_only: true - }); - - let orgReport; - let orgReportFetchStatus; - const orgReportPathsType = getOrgReportPathsType(perspective); - if (orgReportPathsType) { - orgReport = orgSelectors.selectOrg(state, orgReportPathsType, orgReportType, queryString); - orgReportFetchStatus = orgSelectors.selectOrgFetchStatus(state, orgReportPathsType, orgReportType, queryString); - } +const mapStateToProps = createMapStateToProps( + (state, { perspective }) => { + const queryFromRoute = parseQuery(location.search); + const dateRange = getDateRangeDefault(queryFromRoute); - let tagReport; - let tagReportFetchStatus; - const tagReportPathsType = getTagReportPathsType(perspective); - if (tagReportPathsType) { - tagReport = tagSelectors.selectTag(state, tagReportPathsType, tagReportType, queryString); - tagReportFetchStatus = tagSelectors.selectTagFetchStatus(state, tagReportPathsType, tagReportType, queryString); - } + // Omitting key_only to share a single request -- the toolbar needs key values + const orgQueryString = getQuery({ + // TBD... + }); - return { - dateRange, - orgReport, - orgReportFetchStatus, - orgReportPathsType, - perspective, - queryString, - tagReport, - tagReportFetchStatus, - tagReportPathsType, - }; -}); + let orgReport; + let orgReportFetchStatus; + const orgReportPathsType = getOrgReportPathsType(perspective); + if (orgReportPathsType) { + orgReport = orgSelectors.selectOrg(state, orgReportPathsType, orgReportType, orgQueryString); + orgReportFetchStatus = orgSelectors.selectOrgFetchStatus( + state, + orgReportPathsType, + orgReportType, + orgQueryString + ); + } + + // Fetch tags with largest date range available + const { start_date, end_date } = getLast60DaysDate(); + + // Omitting key_only to share a single, cached request -- although the header doesn't need key values, the toolbar does + const tagQueryString = getQuery({ + start_date, + end_date, + // key_only: true + }); + let tagReport; + let tagReportFetchStatus; + const tagReportPathsType = getTagReportPathsType(perspective); + if (tagReportPathsType) { + tagReport = tagSelectors.selectTag(state, tagReportPathsType, tagReportType, tagQueryString); + tagReportFetchStatus = tagSelectors.selectTagFetchStatus( + state, + tagReportPathsType, + tagReportType, + tagQueryString + ); + } + + return { + dateRange, + orgQueryString, + orgReport, + orgReportFetchStatus, + orgReportPathsType, + perspective, + tagQueryString, + tagReport, + tagReportFetchStatus, + tagReportPathsType, + }; + } +); const mapDispatchToProps: ExplorerFilterDispatchProps = { fetchOrg: orgActions.fetchOrg, fetchTag: tagActions.fetchTag, }; -const ExplorerFilter = withRouter(withTranslation()(connect(mapStateToProps, mapDispatchToProps)(ExplorerFilterBase))); +const ExplorerFilterConnect = connect(mapStateToProps, mapDispatchToProps)(ExplorerFilterBase); +const ExplorerFilter = withRouter(withTranslation()(ExplorerFilterConnect)); export { ExplorerFilter, ExplorerFilterProps }; diff --git a/src/pages/views/explorer/explorerHeader.tsx b/src/pages/views/explorer/explorerHeader.tsx index 53fad4f58..05f53d2c9 100644 --- a/src/pages/views/explorer/explorerHeader.tsx +++ b/src/pages/views/explorer/explorerHeader.tsx @@ -22,6 +22,7 @@ import { } from 'store/providers'; import { allUserAccessQuery, ibmUserAccessQuery, userAccessSelectors } from 'store/userAccess'; import { getIdKeyForGroupBy } from 'utils/computedReport/getComputedExplorerReportItems'; +import { getLast60DaysDate } from 'utils/dateRange'; import { isAwsAvailable, isAzureAvailable, isGcpAvailable, isIbmAvailable, isOcpAvailable } from 'utils/userAccess'; import { ExplorerFilter } from './explorerFilter'; @@ -31,16 +32,15 @@ import { getGroupByDefault, getGroupByOptions, getOrgReportPathsType, - getPerspectiveDefault, getRouteForQuery, getTagReportPathsType, - infrastructureAllCloudOptions, infrastructureAwsCloudOptions, infrastructureAwsOptions, infrastructureAzureCloudOptions, infrastructureAzureOptions, infrastructureGcpOptions, infrastructureIbmOptions, + // infrastructureOcpCloudOptions, // Todo: Temp disabled -- see https://issues.redhat.com/browse/COST-1483 infrastructureOcpOptions, ocpOptions, PerspectiveType, @@ -52,6 +52,7 @@ interface ExplorerHeaderOwnProps { onFilterRemoved(filterType: string, filterValue?: string); onGroupByClicked(value: string); onPerspectiveClicked(value: string); + perspective: PerspectiveType; } interface ExplorerHeaderStateProps { @@ -74,7 +75,6 @@ interface ExplorerHeaderStateProps { ocpProviders: Providers; ocpProvidersFetchStatus: FetchStatus; ocpProvidersQueryString: string; - perspective: PerspectiveType; query: Query; queryString: string; userAccess: UserAccess; @@ -100,34 +100,10 @@ class ExplorerHeaderBase extends React.Component { public componentDidMount() { this.setState({ - currentPerspective: this.getDefaultPerspective(), + currentPerspective: this.props.perspective, }); } - private getDefaultPerspective = () => { - const { perspective } = this.props; - - if (perspective) { - return perspective; - } - if (this.isAwsAvailable()) { - return PerspectiveType.aws; - } - if (this.isAzureAvailable()) { - return PerspectiveType.azure; - } - if (this.isGcpAvailable()) { - return PerspectiveType.gcp; - } - if (this.isIbmAvailable()) { - return PerspectiveType.ibm; - } - if (this.isOcpAvailable()) { - return PerspectiveType.ocp; - } - return undefined; - }; - private getPerspective = (isDisabled: boolean) => { const { currentPerspective } = this.state; @@ -145,12 +121,14 @@ class ExplorerHeaderBase extends React.Component { const options = []; if (ocp) { options.push(...ocpOptions); - options.push(...infrastructureAllCloudOptions); + // Todo: Temp disabled -- see https://issues.redhat.com/browse/COST-1483 + // + // options.push(...infrastructureOcpCloudOptions); } if (aws) { options.push(...infrastructureAwsOptions); } - if (ocp && isAwsAvailable) { + if (ocp && aws) { options.push(...infrastructureAwsCloudOptions); } if (gcp) { @@ -186,8 +164,7 @@ class ExplorerHeaderBase extends React.Component { ...JSON.parse(JSON.stringify(query)), filter_by: undefined, group_by: { [getGroupByDefault(value)]: '*' }, - // order_by: { cost: 'desc' }, // Todo: omit default sort - order_by: undefined, // Clear sort because table columns are not a match + order_by: undefined, // Clear sort perspective: value, }; history.replace(getRouteForQuery(history, newQuery, true)); @@ -259,6 +236,9 @@ class ExplorerHeaderBase extends React.Component { const orgReportPathsType = getOrgReportPathsType(perspective); const tagReportPathsType = getTagReportPathsType(perspective); + // Fetch tags with largest date range available + const { start_date, end_date } = getLast60DaysDate(); + return (
@@ -269,6 +249,7 @@ class ExplorerHeaderBase extends React.Component { {this.getPerspective(noProviders)}
{ perspective={perspective} showOrgs={orgReportPathsType} showTags={tagReportPathsType} + startDate={start_date} tagReportPathsType={tagReportPathsType} />
@@ -287,6 +269,7 @@ class ExplorerHeaderBase extends React.Component { isDisabled={noProviders} onFilterAdded={onFilterAdded} onFilterRemoved={onFilterRemoved} + perspective={perspective} query={query} />
@@ -296,118 +279,118 @@ class ExplorerHeaderBase extends React.Component { } // eslint-disable-next-line @typescript-eslint/no-unused-vars -const mapStateToProps = createMapStateToProps((state, props) => { - const userAccessQueryString = getUserAccessQuery(allUserAccessQuery); - const userAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.all, userAccessQueryString); - const userAccessError = userAccessSelectors.selectUserAccessError(state, UserAccessType.all, userAccessQueryString); - const userAccessFetchStatus = userAccessSelectors.selectUserAccessFetchStatus( - state, - UserAccessType.all, - userAccessQueryString - ); - - const queryFromRoute = parseQuery(location.search); - const perspective = getPerspectiveDefault(queryFromRoute, userAccess); - - const query = { - filter: { - ...baseQuery.filter, - ...queryFromRoute.filter, - }, - filter_by: queryFromRoute.filter_by || baseQuery.filter_by, - group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, - // order_by: queryFromRoute.order_by || baseQuery.order_by, // Todo: omit default sort - order_by: queryFromRoute.order_by, - perspective, - }; - const queryString = getQuery({ - ...query, - perspective: undefined, - }); - - const awsProvidersQueryString = getProvidersQuery(awsProvidersQuery); - const awsProviders = providersSelectors.selectProviders(state, ProviderType.aws, awsProvidersQueryString); - const awsProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( - state, - ProviderType.aws, - awsProvidersQueryString - ); - - const azureProvidersQueryString = getProvidersQuery(azureProvidersQuery); - const azureProviders = providersSelectors.selectProviders(state, ProviderType.azure, azureProvidersQueryString); - const azureProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( - state, - ProviderType.azure, - azureProvidersQueryString - ); - - const gcpProvidersQueryString = getProvidersQuery(gcpProvidersQuery); - const gcpProviders = providersSelectors.selectProviders(state, ProviderType.gcp, gcpProvidersQueryString); - const gcpProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( - state, - ProviderType.gcp, - gcpProvidersQueryString - ); - - const ibmProvidersQueryString = getProvidersQuery(ibmProvidersQuery); - const ibmProviders = providersSelectors.selectProviders(state, ProviderType.ibm, ibmProvidersQueryString); - const ibmProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( - state, - ProviderType.ibm, - ibmProvidersQueryString - ); - - const ocpProvidersQueryString = getProvidersQuery(ocpProvidersQuery); - const ocpProviders = providersSelectors.selectProviders(state, ProviderType.ocp, ocpProvidersQueryString); - const ocpProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( - state, - ProviderType.ocp, - ocpProvidersQueryString - ); - - // Todo: temporarily request IBM separately with beta flag. - const ibmUserAccessQueryString = getUserAccessQuery(ibmUserAccessQuery); - const ibmUserAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.ibm, ibmUserAccessQueryString); - const ibmUserAccessError = userAccessSelectors.selectUserAccessError( - state, - UserAccessType.ibm, - ibmUserAccessQueryString - ); - const ibmUserAccessFetchStatus = userAccessSelectors.selectUserAccessFetchStatus( - state, - UserAccessType.ibm, - ibmUserAccessQueryString - ); - - return { - awsProviders, - awsProvidersFetchStatus, - awsProvidersQueryString, - azureProviders, - azureProvidersFetchStatus, - azureProvidersQueryString, - gcpProviders, - gcpProvidersFetchStatus, - gcpProvidersQueryString, - ibmProviders, - ibmProvidersFetchStatus, - ibmProvidersQueryString, - ibmUserAccess, - ibmUserAccessError, - ibmUserAccessFetchStatus, - ibmUserAccessQueryString, - ocpProviders, - ocpProvidersFetchStatus, - ocpProvidersQueryString, - perspective, - query, - queryString, - userAccess, - userAccessError, - userAccessFetchStatus, - userAccessQueryString, - }; -}); +const mapStateToProps = createMapStateToProps( + (state, { perspective }) => { + const userAccessQueryString = getUserAccessQuery(allUserAccessQuery); + const userAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.all, userAccessQueryString); + const userAccessError = userAccessSelectors.selectUserAccessError(state, UserAccessType.all, userAccessQueryString); + const userAccessFetchStatus = userAccessSelectors.selectUserAccessFetchStatus( + state, + UserAccessType.all, + userAccessQueryString + ); + + const queryFromRoute = parseQuery(location.search); + + const query = { + filter: { + ...baseQuery.filter, + ...queryFromRoute.filter, + }, + filter_by: queryFromRoute.filter_by || baseQuery.filter_by, + group_by: queryFromRoute.group_by || { [getGroupByDefault(perspective)]: '*' } || baseQuery.group_by, + order_by: queryFromRoute.order_by, + perspective, + }; + const queryString = getQuery({ + ...query, + perspective: undefined, + }); + + const awsProvidersQueryString = getProvidersQuery(awsProvidersQuery); + const awsProviders = providersSelectors.selectProviders(state, ProviderType.aws, awsProvidersQueryString); + const awsProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( + state, + ProviderType.aws, + awsProvidersQueryString + ); + + const azureProvidersQueryString = getProvidersQuery(azureProvidersQuery); + const azureProviders = providersSelectors.selectProviders(state, ProviderType.azure, azureProvidersQueryString); + const azureProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( + state, + ProviderType.azure, + azureProvidersQueryString + ); + + const gcpProvidersQueryString = getProvidersQuery(gcpProvidersQuery); + const gcpProviders = providersSelectors.selectProviders(state, ProviderType.gcp, gcpProvidersQueryString); + const gcpProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( + state, + ProviderType.gcp, + gcpProvidersQueryString + ); + + const ibmProvidersQueryString = getProvidersQuery(ibmProvidersQuery); + const ibmProviders = providersSelectors.selectProviders(state, ProviderType.ibm, ibmProvidersQueryString); + const ibmProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( + state, + ProviderType.ibm, + ibmProvidersQueryString + ); + + const ocpProvidersQueryString = getProvidersQuery(ocpProvidersQuery); + const ocpProviders = providersSelectors.selectProviders(state, ProviderType.ocp, ocpProvidersQueryString); + const ocpProvidersFetchStatus = providersSelectors.selectProvidersFetchStatus( + state, + ProviderType.ocp, + ocpProvidersQueryString + ); + + // Todo: temporarily request IBM separately with beta flag. + const ibmUserAccessQueryString = getUserAccessQuery(ibmUserAccessQuery); + const ibmUserAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.ibm, ibmUserAccessQueryString); + const ibmUserAccessError = userAccessSelectors.selectUserAccessError( + state, + UserAccessType.ibm, + ibmUserAccessQueryString + ); + const ibmUserAccessFetchStatus = userAccessSelectors.selectUserAccessFetchStatus( + state, + UserAccessType.ibm, + ibmUserAccessQueryString + ); + + return { + awsProviders, + awsProvidersFetchStatus, + awsProvidersQueryString, + azureProviders, + azureProvidersFetchStatus, + azureProvidersQueryString, + gcpProviders, + gcpProvidersFetchStatus, + gcpProvidersQueryString, + ibmProviders, + ibmProvidersFetchStatus, + ibmProvidersQueryString, + ibmUserAccess, + ibmUserAccessError, + ibmUserAccessFetchStatus, + ibmUserAccessQueryString, + ocpProviders, + ocpProvidersFetchStatus, + ocpProvidersQueryString, + perspective, + query, + queryString, + userAccess, + userAccessError, + userAccessFetchStatus, + userAccessQueryString, + }; + } +); const ExplorerHeader = withRouter(withTranslation()(connect(mapStateToProps, {})(ExplorerHeaderBase))); diff --git a/src/pages/views/explorer/explorerTable.tsx b/src/pages/views/explorer/explorerTable.tsx index 1570f47a7..66ee25785 100644 --- a/src/pages/views/explorer/explorerTable.tsx +++ b/src/pages/views/explorer/explorerTable.tsx @@ -5,9 +5,7 @@ import { CalculatorIcon } from '@patternfly/react-icons/dist/js/icons/calculator import { nowrap, sortable, SortByDirection, Table, TableBody, TableHeader } from '@patternfly/react-table'; import { AwsQuery, getQuery } from 'api/queries/awsQuery'; import { parseQuery, Query } from 'api/queries/query'; -import { getUserAccessQuery } from 'api/queries/userAccessQuery'; import { AwsReport } from 'api/reports/awsReports'; -import { UserAccessType } from 'api/userAccess'; import { ComputedReportItemType } from 'components/charts/common/chartDatumUtils'; import { EmptyFilterState } from 'components/state/emptyFilterState/emptyFilterState'; import { format, getDate, getMonth } from 'date-fns'; @@ -16,19 +14,12 @@ import React from 'react'; import { WithTranslation, withTranslation } from 'react-i18next'; import { connect } from 'react-redux'; import { createMapStateToProps } from 'store/common'; -import { allUserAccessQuery, userAccessSelectors } from 'store/userAccess'; import { getIdKeyForGroupBy } from 'utils/computedReport/getComputedExplorerReportItems'; import { ComputedReportItem, getUnsortedComputedReportItems } from 'utils/computedReport/getComputedReportItems'; import { formatCurrency } from 'utils/formatValue'; import { styles } from './explorerTable.styles'; -import { - DateRangeType, - getDateRange, - getDateRangeDefault, - getPerspectiveDefault, - PerspectiveType, -} from './explorerUtils'; +import { DateRangeType, getDateRange, getDateRangeDefault, PerspectiveType } from './explorerUtils'; interface ExplorerTableOwnProps { computedReportItemType?: ComputedReportItemType; @@ -37,6 +28,7 @@ interface ExplorerTableOwnProps { isLoading?: boolean; onSelected(items: ComputedReportItem[], isSelected: boolean); onSort(value: string, isSortAscending: boolean); + perspective: PerspectiveType; query: AwsQuery; report: AwsReport; selectedItems?: ComputedReportItem[]; @@ -45,7 +37,6 @@ interface ExplorerTableOwnProps { interface ExplorerTableStateProps { dateRange: DateRangeType; end_date?: string; - perspective: PerspectiveType; start_date?: string; } @@ -344,22 +335,20 @@ class ExplorerTableBase extends React.Component { } // eslint-disable-next-line @typescript-eslint/no-unused-vars -const mapStateToProps = createMapStateToProps((state, props) => { - const userAccessQueryString = getUserAccessQuery(allUserAccessQuery); - const userAccess = userAccessSelectors.selectUserAccess(state, UserAccessType.all, userAccessQueryString); - - const queryFromRoute = parseQuery(location.search); - const perspective = getPerspectiveDefault(queryFromRoute, userAccess); - const dateRange = getDateRangeDefault(queryFromRoute); - const { end_date, start_date } = getDateRange(queryFromRoute); - - return { - dateRange, - end_date, - perspective, - start_date, - }; -}); +const mapStateToProps = createMapStateToProps( + (state, { perspective }) => { + const queryFromRoute = parseQuery(location.search); + const dateRange = getDateRangeDefault(queryFromRoute); + const { end_date, start_date } = getDateRange(getDateRangeDefault(queryFromRoute)); + + return { + dateRange, + end_date, + perspective, + start_date, + }; + } +); const mapDispatchToProps: ExplorerTableDispatchProps = {}; diff --git a/src/pages/views/explorer/explorerUtils.ts b/src/pages/views/explorer/explorerUtils.ts index 718198dc8..eb9314725 100644 --- a/src/pages/views/explorer/explorerUtils.ts +++ b/src/pages/views/explorer/explorerUtils.ts @@ -1,17 +1,19 @@ import { OrgPathsType } from 'api/orgs/org'; +import { Providers } from 'api/providers'; import { getQueryRoute, Query } from 'api/queries/query'; import { ReportPathsType, ReportType } from 'api/reports/report'; import { TagPathsType } from 'api/tags/tag'; import { UserAccess } from 'api/userAccess'; import { ComputedReportItemType } from 'components/charts/common/chartDatumUtils'; import { format } from 'date-fns'; +import { FetchStatus } from 'store/common'; import { ComputedAwsReportItemsParams } from 'utils/computedReport/getComputedAwsReportItems'; import { ComputedAzureReportItemsParams } from 'utils/computedReport/getComputedAzureReportItems'; import { ComputedGcpReportItemsParams } from 'utils/computedReport/getComputedGcpReportItems'; import { ComputedIbmReportItemsParams } from 'utils/computedReport/getComputedIbmReportItems'; import { ComputedOcpReportItemsParams } from 'utils/computedReport/getComputedOcpReportItems'; -import { getCurrentMonthDate } from 'utils/dateRange'; -import { hasAwsAccess, hasAzureAccess, hasGcpAccess, hasIbmAccess, hasOcpAccess } from 'utils/userAccess'; +import { getCurrentMonthDate, getLast30DaysDate, getLast60DaysDate } from 'utils/dateRange'; +import { isAwsAvailable, isAzureAvailable, isGcpAvailable, isIbmAvailable, isOcpAvailable } from 'utils/userAccess'; // The date range drop down has the options below (if today is Jan 18th…) // eslint-disable-next-line no-shadow @@ -24,7 +26,6 @@ export const enum DateRangeType { // eslint-disable-next-line no-shadow export const enum PerspectiveType { - allCloud = 'all_cloud', // All filtered by Ocp aws = 'aws', awsCloud = 'aws_cloud', // Aws filtered by Ocp azure = 'azure', @@ -32,6 +33,7 @@ export const enum PerspectiveType { gcp = 'gcp', ocp = 'ocp', ibm = 'ibm', + ocpCloud = 'ocp_cloud', // All filtered by Ocp ocpSupplementary = 'ocp_supplementary', ocpUsage = 'ocp_usage', } @@ -107,9 +109,6 @@ export const groupByOcpOptions: { { label: 'project', value: 'project' }, ]; -// Infrastructure all cloud options -export const infrastructureAllCloudOptions = [{ label: 'explorer.perspective.all_cloud', value: 'all_cloud' }]; - // Infrastructure AWS options export const infrastructureAwsOptions = [{ label: 'explorer.perspective.aws', value: 'aws' }]; @@ -131,6 +130,9 @@ export const infrastructureIbmOptions = [{ label: 'explorer.perspective.ibm', va // Infrastructure Ocp options export const infrastructureOcpOptions = [{ label: 'explorer.perspective.ocp_usage', value: 'ocp_usage' }]; +// Infrastructure Ocp cloud options +export const infrastructureOcpCloudOptions = [{ label: 'explorer.perspective.ocp_cloud', value: 'ocp_cloud' }]; + // Ocp options export const ocpOptions = [ { label: 'explorer.perspective.ocp', value: 'ocp' }, @@ -143,15 +145,17 @@ export const getComputedReportItemType = (perspective: string) => { case PerspectiveType.ocpSupplementary: result = ComputedReportItemType.supplementary; break; + case PerspectiveType.ocpUsage: + result = ComputedReportItemType.infrastructure; + break; case PerspectiveType.aws: - case PerspectiveType.allCloud: case PerspectiveType.awsCloud: case PerspectiveType.azure: case PerspectiveType.azureCloud: case PerspectiveType.gcp: case PerspectiveType.ibm: case PerspectiveType.ocp: - case PerspectiveType.ocpUsage: + case PerspectiveType.ocpCloud: default: result = ComputedReportItemType.cost; break; @@ -159,15 +163,15 @@ export const getComputedReportItemType = (perspective: string) => { return result; }; -export const getDateRange = queryFromRoute => { +export const getDateRange = (dateRangeType: DateRangeType) => { const endDate = new Date(); const startDate = new Date(); let dateRange; - switch (getDateRangeDefault(queryFromRoute)) { + switch (dateRangeType) { case DateRangeType.previousMonthToDate: startDate.setDate(1); // Required to obtain correct month - startDate.setMonth(startDate.getMonth() - 1); + startDate.setMonth(startDate.getMonth() - 1); // Note: Must include previous and current month dateRange = { end_date: format(endDate, 'yyyy-MM-dd'), @@ -175,22 +179,10 @@ export const getDateRange = queryFromRoute => { }; break; case DateRangeType.lastSixtyDays: - // 61 days, including today's date. See https://issues.redhat.com/browse/COST-1117 - startDate.setDate(startDate.getDate() - 60); - - dateRange = { - end_date: format(endDate, 'yyyy-MM-dd'), - start_date: format(startDate, 'yyyy-MM-dd'), - }; + dateRange = getLast60DaysDate(); break; case DateRangeType.lastThirtyDays: - // 31 days, including today's date. See https://issues.redhat.com/browse/COST-1117 - startDate.setDate(startDate.getDate() - 30); - - dateRange = { - end_date: format(endDate, 'yyyy-MM-dd'), - start_date: format(startDate, 'yyyy-MM-dd'), - }; + dateRange = getLast30DaysDate(); break; case DateRangeType.currentMonthToDate: default: @@ -204,20 +196,46 @@ export const getDateRangeDefault = (queryFromRoute: Query) => { return queryFromRoute.dateRange || DateRangeType.currentMonthToDate; }; -export const getPerspectiveDefault = (queryFromRoute: Query, userAccess: UserAccess) => { +export const getPerspectiveDefault = ({ + awsProviders, + awsProvidersFetchStatus, + azureProviders, + azureProvidersFetchStatus, + gcpProviders, + gcpProvidersFetchStatus, + ibmProviders, + ibmProvidersFetchStatus, + ocpProviders, + ocpProvidersFetchStatus, + queryFromRoute, + userAccess, +}: { + awsProviders: Providers; + awsProvidersFetchStatus: FetchStatus; + azureProviders: Providers; + azureProvidersFetchStatus: FetchStatus; + gcpProviders: Providers; + gcpProvidersFetchStatus: FetchStatus; + ibmProviders: Providers; + ibmProvidersFetchStatus: FetchStatus; + ocpProviders: Providers; + ocpProvidersFetchStatus: FetchStatus; + queryFromRoute: Query; + userAccess: UserAccess; +}) => { let result = queryFromRoute.perspective; if (!result) { - if (hasOcpAccess(userAccess)) { + if (isOcpAvailable(userAccess, ocpProviders, ocpProvidersFetchStatus)) { result = PerspectiveType.ocp; - } else if (hasAwsAccess(userAccess)) { - result = PerspectiveType.aws; - } else if (hasAzureAccess(userAccess)) { - result = PerspectiveType.aws; - } else if (hasGcpAccess(userAccess)) { - result = PerspectiveType.aws; - } else if (hasIbmAccess(userAccess)) { + } else if (isAwsAvailable(userAccess, awsProviders, awsProvidersFetchStatus)) { result = PerspectiveType.aws; + } else if (isAzureAvailable(userAccess, azureProviders, azureProvidersFetchStatus)) { + result = PerspectiveType.azure; + } else if (isGcpAvailable(userAccess, gcpProviders, gcpProvidersFetchStatus)) { + result = PerspectiveType.gcp; + } else if (isIbmAvailable(userAccess, ibmProviders, ibmProvidersFetchStatus)) { + result = PerspectiveType.ibm; } } return result; @@ -236,8 +254,8 @@ export const getGroupByDefault = (perspective: string) => { case PerspectiveType.azureCloud: result = 'subscription_guid'; break; - case PerspectiveType.allCloud: case PerspectiveType.ocp: + case PerspectiveType.ocpCloud: case PerspectiveType.ocpSupplementary: case PerspectiveType.ocpUsage: result = 'project'; @@ -266,8 +284,8 @@ export const getGroupByOptions = (perspective: string) => { case PerspectiveType.ibm: result = groupByIbmOptions; break; - case PerspectiveType.allCloud: case PerspectiveType.ocp: + case PerspectiveType.ocpCloud: case PerspectiveType.ocpSupplementary: case PerspectiveType.ocpUsage: result = groupByOcpOptions; @@ -285,13 +303,13 @@ export const getOrgReportPathsType = (perspective: string) => { case PerspectiveType.aws: result = OrgPathsType.aws; break; - case PerspectiveType.allCloud: case PerspectiveType.awsCloud: case PerspectiveType.azure: case PerspectiveType.azureCloud: case PerspectiveType.gcp: case PerspectiveType.ibm: case PerspectiveType.ocp: + case PerspectiveType.ocpCloud: case PerspectiveType.ocpSupplementary: case PerspectiveType.ocpUsage: default: @@ -304,7 +322,6 @@ export const getOrgReportPathsType = (perspective: string) => { export const getReportType = (perspective: string) => { let result; switch (perspective) { - case PerspectiveType.allCloud: case PerspectiveType.aws: case PerspectiveType.awsCloud: case PerspectiveType.azure: @@ -312,6 +329,7 @@ export const getReportType = (perspective: string) => { case PerspectiveType.gcp: case PerspectiveType.ibm: case PerspectiveType.ocp: + case PerspectiveType.ocpCloud: case PerspectiveType.ocpSupplementary: case PerspectiveType.ocpUsage: default: @@ -324,9 +342,6 @@ export const getReportType = (perspective: string) => { export const getReportPathsType = (perspective: string) => { let result; switch (perspective) { - case PerspectiveType.allCloud: - result = ReportPathsType.ocpCloud; - break; case PerspectiveType.aws: result = ReportPathsType.aws; break; @@ -348,6 +363,9 @@ export const getReportPathsType = (perspective: string) => { case PerspectiveType.ocp: result = ReportPathsType.ocp; break; + case PerspectiveType.ocpCloud: + result = ReportPathsType.ocpCloud; + break; case PerspectiveType.ocpSupplementary: result = ReportPathsType.ocp; break; @@ -365,25 +383,31 @@ export const getTagReportPathsType = (perspective: string) => { let result; switch (perspective) { case PerspectiveType.aws: - case PerspectiveType.awsCloud: return TagPathsType.aws; break; + case PerspectiveType.awsCloud: + return TagPathsType.awsCloud; + break; case PerspectiveType.azure: - case PerspectiveType.azureCloud: return TagPathsType.azure; break; + case PerspectiveType.azureCloud: + return TagPathsType.azureCloud; + break; case PerspectiveType.gcp: return TagPathsType.gcp; break; case PerspectiveType.ibm: return TagPathsType.ibm; break; - case PerspectiveType.allCloud: case PerspectiveType.ocp: case PerspectiveType.ocpSupplementary: case PerspectiveType.ocpUsage: return TagPathsType.ocp; break; + case PerspectiveType.ocpCloud: + return TagPathsType.ocpCloud; + break; default: result = undefined; break; diff --git a/src/pages/views/overview/overview.tsx b/src/pages/views/overview/overview.tsx index b16beebb4..79fe3b75f 100644 --- a/src/pages/views/overview/overview.tsx +++ b/src/pages/views/overview/overview.tsx @@ -42,13 +42,13 @@ import { styles } from './overview.styles'; // eslint-disable-next-line no-shadow const enum InfrastructurePerspective { - allCloud = 'all_cloud', // All filtered by Ocp aws = 'aws', awsCloud = 'aws_cloud', // Aws filtered by Ocp azure = 'azure', azureCloud = 'azure_cloud', // Azure filtered by Ocp gcp = 'gcp', ibm = 'ibm', + ocpCloud = 'ocp_cloud', // All filtered by Ocp ocpUsage = 'ocp_usage', } @@ -120,9 +120,6 @@ const ocpOptions = [ { label: 'overview.perspective.supplementary', value: 'supplementary' }, ]; -// Infrastructure all cloud options -const infrastructureAllCloudOptions = [{ label: 'overview.perspective.all_cloud', value: 'all_cloud' }]; - // Infrastructure AWS options const infrastructureAwsOptions = [{ label: 'overview.perspective.aws', value: 'aws' }]; @@ -144,6 +141,12 @@ const infrastructureIbmOptions = [{ label: 'overview.perspective.ibm', value: 'i // Infrastructure Ocp options const infrastructureOcpOptions = [{ label: 'overview.perspective.ocp_usage', value: 'ocp_usage' }]; +// Infrastructure Ocp cloud options +// +// Todo: Temp disabled -- see https://issues.redhat.com/browse/COST-1483 +// +// const infrastructureOcpCloudOptions = [{ label: 'overview.perspective.ocp_cloud', value: 'ocp_cloud' }]; + class OverviewBase extends React.Component { protected defaultState: OverviewState = { activeTabKey: 0, @@ -223,9 +226,11 @@ class OverviewBase extends React.Component { }; private getDefaultInfrastructurePerspective = () => { - if (this.isOcpAvailable()) { - return InfrastructurePerspective.allCloud; - } + // Todo: Temp disabled -- see https://issues.redhat.com/browse/COST-1483 + // + // if (this.isOcpAvailable()) { + // return InfrastructurePerspective.ocpCloud; + // } if (this.isAwsAvailable()) { return InfrastructurePerspective.aws; } @@ -266,9 +271,11 @@ class OverviewBase extends React.Component { // Dynamically show options if providers are available const options = []; if (this.getCurrentTab() === OverviewTab.infrastructure) { - if (ocp) { - options.push(...infrastructureAllCloudOptions); - } + // Todo: Temp disabled -- see https://issues.redhat.com/browse/COST-1483 + // + // if (ocp) { + // options.push(...infrastructureOcpCloudOptions); + // } if (aws) { options.push(...infrastructureAwsOptions); } @@ -344,7 +351,7 @@ class OverviewBase extends React.Component { } const currentTab = getIdKeyForTab(tab); if (currentTab === OverviewTab.infrastructure) { - if (currentInfrastructurePerspective === InfrastructurePerspective.allCloud) { + if (currentInfrastructurePerspective === InfrastructurePerspective.ocpCloud) { const hasData = hasCurrentMonthData(ocpProviders) || hasPreviousMonthData(ocpProviders); return hasData ? : noData; } else if (currentInfrastructurePerspective === InfrastructurePerspective.aws) { diff --git a/src/utils/dateRange.ts b/src/utils/dateRange.ts index 0489dc225..5e8a9b8dd 100644 --- a/src/utils/dateRange.ts +++ b/src/utils/dateRange.ts @@ -87,3 +87,26 @@ export function getCurrentMonthDate() { export function getPreviousMonthDate() { return getMonthDate(1); } + +// Returns offset + 1 days, including today's date. See https://issues.redhat.com/browse/COST-1117 +export function getLastDaysDate(offset: number) { + const endDate = new Date(); + const startDate = new Date(); + + startDate.setDate(startDate.getDate() - offset); + + return { + end_date: format(endDate, 'yyyy-MM-dd'), + start_date: format(startDate, 'yyyy-MM-dd'), + }; +} + +// Returns 31 days, including today's date +export function getLast30DaysDate() { + return getLastDaysDate(30); +} + +// Returns 61 days, including today's date +export function getLast60DaysDate() { + return getLastDaysDate(60); +} diff --git a/tsconfig.json b/tsconfig.json index 0d4bf2078..6732bdc09 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "baseUrl": "./src", - "outDir": "./public", + "outDir": "./dist", "allowJs": true, "jsx": "react", "target": "es2017", diff --git a/webpack.config.js b/webpack.config.js index 6acebbeac..e57a6af73 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,13 +4,15 @@ const weblog = require('webpack-log'); const log = weblog({ name: 'wds', }); +const proxy = require('@redhat-cloud-services/frontend-components-config-utilities/proxy'); +const ChunkMapperPlugin = require('@redhat-cloud-services/frontend-components-config-utilities/chunk-mapper'); + const HtmlWebpackPlugin = require('html-webpack-plugin'); const HtmlReplaceWebpackPlugin = require('html-replace-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const GitRevisionPlugin = require('git-revision-webpack-plugin'); -const ChunkMapperPlugin = require('./config/chunk-mapper'); const { dependencies, insights } = require('./package.json'); const singletonDeps = [ 'lodash', @@ -32,7 +34,7 @@ const singletonDeps = [ ]; const fileRegEx = /\.(png|woff|woff2|eot|ttf|svg|gif|jpe?g|png)(\?[a-z0-9=.]+)?$/; const srcDir = path.resolve(__dirname, './src'); -const distDir = path.resolve(__dirname, './public/'); +const distDir = path.resolve(__dirname, './dist/'); const betaEnv = process.env.BETA_ENV; const nodeEnv = process.env.NODE_ENV; @@ -43,6 +45,8 @@ const gitRevisionPlugin = new GitRevisionPlugin({ const betaBranches = ['master', 'qa-beta', 'ci-beta', 'prod-beta']; const moduleName = insights.appname.replace(/-(\w)/g, (_, match) => match.toUpperCase()); +const localhost = process.env.PLATFORM === 'linux' ? 'localhost' : 'host.docker.internal'; + // show what files changed since last compilation class WatchRunPlugin { apply(compiler) { @@ -61,10 +65,13 @@ class WatchRunPlugin { module.exports = (_env, argv) => { const gitBranch = process.env.TRAVIS_BRANCH || process.env.BRANCH || gitRevisionPlugin.branch(); const isProduction = nodeEnv === 'production' || argv.mode === 'production'; - const appDeployment = (isProduction && betaBranches.includes(gitBranch)) || betaEnv === 'true' ? 'beta/apps' : 'apps'; + const isBeta = betaEnv === 'true'; + const useLocalRoutes = process.env.USE_LOCAL_ROUTES === 'true'; + const appDeployment = (isProduction && betaBranches.includes(gitBranch)) || isBeta ? 'beta/apps' : 'apps'; const publicPath = `/${appDeployment}/${insights.appname}/`; // Moved multiple entries to index.tsx in order to help speed up webpack const entry = path.join(srcDir, 'index.tsx'); + const useProxy = process.env.USE_PROXY === 'true'; log.info('~~~Using variables~~~'); log.info(`isProduction: ${isProduction}`); @@ -72,6 +79,7 @@ module.exports = (_env, argv) => { log.info(`Beta branches: ${betaBranches}`); log.info(`Using deployments: ${appDeployment}`); log.info(`Public path: ${publicPath}`); + log.info(`Using Insights proxy: ${!useProxy}`); log.info('~~~~~~~~~~~~~~~~~~~~~'); const stats = { @@ -80,6 +88,23 @@ module.exports = (_env, argv) => { modules: false, }; + const routes = { + // For local API development + // '/api/cost-management/v1/': { host: 'http://localhost:8000' }, + // + // For testing cloud-services-config https://github.com/RedHatInsights/cloud-services-config#testing-your-changes-locally + // '/beta/config': { + // host: `http://${localhost}:8889`, + // }, + }; + if (useLocalRoutes) { + const localKokuPort = process.env.LOCAL_API_PORT ? process.env.LOCAL_API_PORT : '80'; + const localKoku = 'http://' + process.env.LOCAL_API + ':' + localKokuPort; + routes['/api/cost-management/'] = { + host: localKoku, + }; + } + return { stats, mode: isProduction ? 'production' : 'development', @@ -94,7 +119,10 @@ module.exports = (_env, argv) => { rules: [ { test: new RegExp(entry), - loader: path.resolve(__dirname, './config/chrome-render-loader.js'), + loader: path.resolve( + __dirname, + './node_modules/@redhat-cloud-services/frontend-components-config-utilities/chrome-render-loader.js' + ), options: { appName: insights.appname, }, @@ -215,20 +243,50 @@ module.exports = (_env, argv) => { }), ], }, - devServer: { - host: 'localhost', - port: 8002, - historyApiFallback: { - index: `${publicPath}index.html`, - }, - // hot: !isProduction, - hot: false, // default is true, which currently does not work with Insights and federated modules? - firewall: false, - transportMode: 'sockjs', - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization', - }, - }, + devServer: useProxy + ? proxy({ + betaEnv: process.env.CLOUDOT_ENV, + rootFolder: path.resolve(__dirname), + localChrome: false, + customProxy: undefined, + appName: insights.appname, + publicPath, + https: true, + proxyVerbose: true, + // routesPath: path.resolve(__dirname, './config/spandx.config.js'), + appUrl: [`/${isBeta ? 'beta/' : ''}openshift/cost-management`], + disableFallback: false, + routes, + }) + : { + stats, + contentBase: false, + historyApiFallback: { + index: `${publicPath}index.html`, + }, + // hot: !isProduction, + hot: false, // default is true, which currently does not work with Insights and federated modules? + port: 8002, + disableHostCheck: true, + headers: { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization', + }, + // Props for webpack-dev-server v4.0.0-beta.2 + // + // host: 'localhost', + // port: 8002, + // historyApiFallback: { + // index: `${publicPath}index.html`, + // }, + // // hot: !isProduction, + // hot: false, // default is true, which currently does not work with Insights and federated modules? + // firewall: false, + // transportMode: 'sockjs', + // headers: { + // 'Access-Control-Allow-Origin': '*', + // 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization', + // }, + }, }; }; diff --git a/yarn.lock b/yarn.lock index 081a24f0b..afec3588b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -268,7 +268,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.6", "@babel/runtime@^7.4.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== @@ -561,18 +561,18 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" -"@patternfly/patternfly@4.102.1": - version "4.102.1" - resolved "https://registry.yarnpkg.com/@patternfly/patternfly/-/patternfly-4.102.1.tgz#a453c4e866941db1348f0580fdc08f1441b8fdf3" - integrity sha512-YQSJH4EirnFdwJ3eN7BUgGj/Q3bg/Lmc+8vU/bhIDnRuk5KqGZ7xbVCPrWwrV0oYrfIUAWgbrbJjpP03VjrJLw== +"@patternfly/patternfly@4.103.6": + version "4.103.6" + resolved "https://registry.yarnpkg.com/@patternfly/patternfly/-/patternfly-4.103.6.tgz#a01b1dced931eb4971a6c7366901fdde81a52284" + integrity sha512-veWpHv/Dlk0P7tu96QUjLzD2Aq4IysUSGOjGPXlbb/KOUfnIrErLRmQnljY01ykXLJ7kxQSnC3yaJqCU+4fDPQ== -"@patternfly/react-charts@^6.14.16": - version "6.14.16" - resolved "https://registry.yarnpkg.com/@patternfly/react-charts/-/react-charts-6.14.16.tgz#c5c3f7983cf16e2868907d61f61af7b275ca962c" - integrity sha512-7Na5f0bU+hX09+QAw24lVXvAjxLikyJU423fYg+P1U60gA5uiWyN2eB4JDW1gYn3XeoLtEicheL9o7hL4P6WZQ== +"@patternfly/react-charts@6.14.22": + version "6.14.22" + resolved "https://registry.yarnpkg.com/@patternfly/react-charts/-/react-charts-6.14.22.tgz#a78ab36ab094c8ed87855afc3c73593b2ef01256" + integrity sha512-9rkokh8JPRryqAPDjP3sB+Kx85v9i2jlMVA0JfAa2rQkhS0gOKgOUkU/I9KegXaDEHvtTpCpI6S6a9uQ9/ewYQ== dependencies: - "@patternfly/react-styles" "^4.10.1" - "@patternfly/react-tokens" "^4.11.2" + "@patternfly/react-styles" "^4.10.7" + "@patternfly/react-tokens" "^4.11.8" hoist-non-react-statics "^3.3.0" lodash "^4.17.19" tslib "1.13.0" @@ -592,51 +592,56 @@ victory-voronoi-container "^35.4.4" victory-zoom-container "^35.4.4" -"@patternfly/react-core@4.115.1", "@patternfly/react-core@^4.115.1": - version "4.115.1" - resolved "https://registry.yarnpkg.com/@patternfly/react-core/-/react-core-4.115.1.tgz#739f4430fa7f1a563cf28642c3d08db3ebe1bf97" - integrity sha512-CIUd6y0Zt90a1NXam64uxMnXSG6MV8ECsSW8nN2iyveK73w2P9Zuuxf9UkCEtfi/DDmbCaAPUNmrOYZ6Ez+NkA== +"@patternfly/react-core@4.121.0", "@patternfly/react-core@^4.121.0": + version "4.121.0" + resolved "https://registry.yarnpkg.com/@patternfly/react-core/-/react-core-4.121.0.tgz#8f0a18ee2d4f782f0b0f35e1ef848d98598e933c" + integrity sha512-KwDBv24DQywH3GjFlROp2v8bFuAIpYAjqKPASCY3TuLp+Ig97Pdp3fhCYUIDk40MF/uCdRrDEmjdLfd2tp3oKw== dependencies: - "@patternfly/react-icons" "^4.10.1" - "@patternfly/react-styles" "^4.10.1" - "@patternfly/react-tokens" "^4.11.2" + "@patternfly/react-icons" "^4.10.7" + "@patternfly/react-styles" "^4.10.7" + "@patternfly/react-tokens" "^4.11.8" focus-trap "6.2.2" react-dropzone "9.0.0" tippy.js "5.1.2" tslib "1.13.0" -"@patternfly/react-icons@4.10.1", "@patternfly/react-icons@^4.10.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@patternfly/react-icons/-/react-icons-4.10.1.tgz#687a36a22c357e79662d8e20f93267a81a553f9b" - integrity sha512-PDljCqWk+Jld8VJI0zMbigmKh0NhnSl/paXFU8cawZYt4dczbLjvj5kTMqqSOt0/DmvstcMXIvhXxL9SoYAuIA== - -"@patternfly/react-styles@4.10.1", "@patternfly/react-styles@^4.10.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@patternfly/react-styles/-/react-styles-4.10.1.tgz#551353d67c01234f08e5e1e2a2947c8865751a7e" - integrity sha512-nrxKeu4ftZArswT0azcZB2r6eV4d5bs4L9HrwHnElMte+6fsUmXbuaBxCVfHh/aHxZSIIxqDElEHNaOqcs7SWg== - -"@patternfly/react-table@4.26.6": - version "4.26.6" - resolved "https://registry.yarnpkg.com/@patternfly/react-table/-/react-table-4.26.6.tgz#39e7293b7ff424d98ff29beabcc1a31daff1b7e6" - integrity sha512-mpm60Bc/oMfHoz2dEjGmyXADlY3OsuhnLybcB3hoYT99kTPudg+3WXqNACx/CCy9RW3m6I2Gpqy5DxymUXy3DQ== - dependencies: - "@patternfly/react-core" "^4.115.1" - "@patternfly/react-icons" "^4.10.1" - "@patternfly/react-styles" "^4.10.1" - "@patternfly/react-tokens" "^4.11.2" +"@patternfly/react-icons@4.10.7", "@patternfly/react-icons@^4.10.7": + version "4.10.7" + resolved "https://registry.yarnpkg.com/@patternfly/react-icons/-/react-icons-4.10.7.tgz#fe2eabf88512afe7dab0c0e7c71142ec6e594664" + integrity sha512-CiHYDOS8jrxNiy/KIxv9vPqg3cie4SzsbQKh+eW8lj41x68IrgILiw3VvjcJeVXXJDRW36T7u3IPKjMI6zuoyA== + +"@patternfly/react-styles@4.10.7", "@patternfly/react-styles@^4.10.7": + version "4.10.7" + resolved "https://registry.yarnpkg.com/@patternfly/react-styles/-/react-styles-4.10.7.tgz#3b0ce38f3e12a69cdcbaf1ada163a5b114b919bd" + integrity sha512-oA9R1dXAJaKhj0/1z/uf2Z1wzsQ4jGQw2F8alPBagbDLyZD+pvUmElBr7o2Ucz/fm+/pLcphekCkGEVtyV3jOA== + +"@patternfly/react-table@4.27.6": + version "4.27.6" + resolved "https://registry.yarnpkg.com/@patternfly/react-table/-/react-table-4.27.6.tgz#064bd897d120a887095db7262714ff1f23224a5b" + integrity sha512-qlwvTM/6wshilPysdN2TPDNvsi9nE6nXUQWrJzZXOgc6hb/l4evn2UCfkMyJvSna+CMR1YlFjZrMAHOCxZQcvQ== + dependencies: + "@patternfly/react-core" "^4.121.0" + "@patternfly/react-icons" "^4.10.7" + "@patternfly/react-styles" "^4.10.7" + "@patternfly/react-tokens" "^4.11.8" lodash "^4.17.19" tslib "1.13.0" -"@patternfly/react-tokens@4.11.2", "@patternfly/react-tokens@^4.11.2": - version "4.11.2" - resolved "https://registry.yarnpkg.com/@patternfly/react-tokens/-/react-tokens-4.11.2.tgz#9d200883f177d1dfd0aecd832caa877bc337feb6" - integrity sha512-uLEj6mUknX2vE1z79c28cY+/GBVh0SjS3T6s+bG9ZVP7rGopSgtEQDfejSIEBAwD/t0u1gHW/ncWZ1kyIeVMGg== +"@patternfly/react-tokens@4.11.8", "@patternfly/react-tokens@^4.11.8": + version "4.11.8" + resolved "https://registry.yarnpkg.com/@patternfly/react-tokens/-/react-tokens-4.11.8.tgz#ea0c9ca036f6b0506cda43e899c3248971920337" + integrity sha512-k3UwsnWRoHHYbFbiqmUHtkrAPtw6D8BZLB1tPGzdXBlqQXRX1t8xukgDcTSUWo6wOPVdk8WrOgmWMy0u0Tk+sw== "@popperjs/core@^2.5.3": version "2.9.1" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.1.tgz#7f554e7368c9ab679a11f4a042ca17149d70cf12" integrity sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA== +"@redhat-cloud-services/frontend-components-config-utilities@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-1.1.1.tgz#067fed07c260ebd0afc46bab91b2c8cef8216351" + integrity sha512-0nRMr5PD20fDMp6tCN2zYKSEkP/W8iPVqjk77F5i5HyyPDHSm+BJitk1+GVoriDAltqN27Dvj8vp4veUj5EISg== + "@redhat-cloud-services/frontend-components-notifications@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-3.1.0.tgz#d0d7ec32e8d88b75a1aef0b2ebb1e12eecf93632" @@ -644,7 +649,7 @@ dependencies: "@redhat-cloud-services/frontend-components-utilities" "*" -"@redhat-cloud-services/frontend-components-utilities@*", "@redhat-cloud-services/frontend-components-utilities@>=3.0.0", "@redhat-cloud-services/frontend-components-utilities@^3.1.1": +"@redhat-cloud-services/frontend-components-utilities@*", "@redhat-cloud-services/frontend-components-utilities@>=3.0.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-3.1.1.tgz#6e707bdf0cbe9e9065fb8c7d64424d23aced2bc6" integrity sha512-lqcdpvjuFJQZ1f/iNkoecjtLShqM8WPJaeTa4Y1whUu8kEkDDQ9BUa7RlTQ5x1XOt6OgTTFGg8R/RScPUbxa5A== @@ -655,20 +660,31 @@ commander ">=2.20.0" react-content-loader ">=3.4.1" -"@redhat-cloud-services/frontend-components@^3.1.7": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components/-/frontend-components-3.1.7.tgz#751a69b086478e623b63312662d57afd5887e64b" - integrity sha512-nvu3oXpfMQP7npe0NSLIvsyuoHL6V1uxomD+0AaU/KQxzO8z4cmXvqidHcRDP9Q2fBLvwiEipRX6VTYqIw224w== +"@redhat-cloud-services/frontend-components-utilities@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-3.1.2.tgz#965c03508336e6d68dc9cad39b38ae05acd0f4e8" + integrity sha512-CDnhCQTotqCWUzZUgPXEori95FDhrXGBUxodwQpR3wKTb1lBpwDHg4b3TdpzPz+KyryClT6OfNkVabmjQ2S6CA== + dependencies: + "@sentry/browser" "^5.4.0" + awesome-debounce-promise "^2.1.0" + axios "^0.21.1" + commander ">=2.20.0" + react-content-loader ">=3.4.1" + +"@redhat-cloud-services/frontend-components@^3.1.11": + version "3.1.11" + resolved "https://registry.yarnpkg.com/@redhat-cloud-services/frontend-components/-/frontend-components-3.1.11.tgz#ad655dc0a69c6b851087aac1d38beec3e79dfebc" + integrity sha512-6dvjKlb2l7cKn9Ex+z+aJkn4RHn2NzQIs8ylYQgN9fkKtZhm3dTQiINKxcmmlBTsody6pbPcp2I854jhyqfMug== dependencies: "@redhat-cloud-services/frontend-components-utilities" ">=3.0.0" "@scalprum/core" "^0.0.11" "@scalprum/react-core" "^0.0.16" sanitize-html "^2.3.2" -"@redhat-cloud-services/rbac-client@^1.0.96": - version "1.0.96" - resolved "https://registry.yarnpkg.com/@redhat-cloud-services/rbac-client/-/rbac-client-1.0.96.tgz#0e07d68ca0da246f61e9ee337354ffe492f10112" - integrity sha512-Zx/RYy3v0CaFM+NtCzWqLRRjy0HoG7xs3f1F4TDvEOGaTVF+DIcs6MHr9D1HTPb4QM/hXXykNH6WiNpznOQ+Bg== +"@redhat-cloud-services/rbac-client@^1.0.97": + version "1.0.97" + resolved "https://registry.yarnpkg.com/@redhat-cloud-services/rbac-client/-/rbac-client-1.0.97.tgz#a6b75bdd3eab92b39887a7149b9fbf0ac1f887a8" + integrity sha512-m+6EehKY6qlnf7Je9M8mMqqVSXefs5PeXTf3H1xO03xEWAv6u6tgYjWw+f9/DiEYOcn5DUgXSH7T+QEJgVQ+Og== dependencies: axios "^0.21.1" @@ -698,6 +714,11 @@ "@scalprum/core" "^0.0.11" lodash "^4.17.0" +"@schibstedpl/circuit-breaker-js@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@schibstedpl/circuit-breaker-js/-/circuit-breaker-js-0.0.2.tgz#630589cb0ee933c58053aa32d2bdf4104bfae0be" + integrity sha512-82fEbDRVsEAO/XlaFsGb5GKoAMvlfOd/hiNxyPWMvd1ZYJxxHs8hAu4i5Jrlcgpf1sUhhgV53oJSHNwyThsVFQ== + "@sentry/browser@^5.4.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.30.0.tgz#c28f49d551db3172080caef9f18791a7fd39e3b3" @@ -877,11 +898,24 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.46": +"@types/estree@*": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== +"@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -907,13 +941,6 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== -"@types/http-proxy@^1.17.5": - version "1.17.5" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" - integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== - dependencies: - "@types/node" "*" - "@types/i18next-xhr-backend@1.4.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@types/i18next-xhr-backend/-/i18next-xhr-backend-1.4.2.tgz#e3849b77e77daa1504f02269b1c192dc0e86e507" @@ -970,6 +997,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/minimatch@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + "@types/node@*": version "14.14.33" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.33.tgz#9e4f8c64345522e4e8ce77b334a8aaa64e2b6c78" @@ -1060,11 +1092,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@types/scheduler@*": version "0.16.1" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" @@ -1321,22 +1348,22 @@ "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" - integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== +"@webpack-cli/configtest@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" + integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== -"@webpack-cli/info@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" - integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== +"@webpack-cli/info@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" + integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" - integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== +"@webpack-cli/serve@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" + integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== "@wojtekmaj/enzyme-adapter-react-17@^0.4.1": version "0.4.1" @@ -1417,18 +1444,15 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.0.5: +acorn@^8.0.5: version "8.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" +acorn@^8.2.1: + version "8.2.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" + integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== airbnb-prop-types@^2.16.0: version "2.16.0" @@ -1445,12 +1469,27 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv-keywords@^3.5.2: +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^5.1.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1470,6 +1509,11 @@ ajv@^7.0.2: require-from-string "^2.0.2" uri-js "^4.2.2" +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1482,7 +1526,7 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-html@^0.0.7: +ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -1492,12 +1536,17 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1592,11 +1641,23 @@ array-includes@^3.1.1, array-includes@^3.1.2: get-intrinsic "^1.1.1" is-string "^1.0.5" +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1661,6 +1722,16 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1712,7 +1783,7 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.8.0: +aws4@^1.6.0, aws4@^1.8.0: version "1.11.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== @@ -1817,6 +1888,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1847,11 +1923,32 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -1893,7 +1990,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1946,6 +2043,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1956,6 +2058,14 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2022,6 +2132,11 @@ caniuse-lite@^1.0.30001181: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001197.tgz#47ad15b977d2f32b3ec2fe2b087e0c50443771db" integrity sha512-8aE+sqBqtXz4G8g35Eg/XEaFr2N7rd/VQ6eABGBmNtcB8cN6qNJhMi6oSFy4UWWZgqgL3filHT8Nha4meu3tsw== +capitalize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-1.0.0.tgz#dc802c580aee101929020d2ca14b4ca8a0ae44be" + integrity sha1-3IAsWAruEBkpAg0soUtMqKCuRL4= + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2051,6 +2166,14 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2071,6 +2194,11 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + cheerio-select-tmp@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" @@ -2095,7 +2223,7 @@ cheerio@^1.0.0-rc.3: parse5 "^6.0.0" parse5-htmlparser2-tree-adapter "^6.0.0" -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.5.1: +"chokidar@>=2.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -2110,6 +2238,25 @@ cheerio@^1.0.0-rc.3: optionalDependencies: fsevents "~2.3.1" +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -2149,10 +2296,22 @@ clean-css@^4.2.3: dependencies: source-map "~0.6.0" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^3.2.0: version "3.2.0" @@ -2163,6 +2322,15 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -2181,6 +2349,21 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + integrity sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8= + +clone@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs= + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2238,7 +2421,7 @@ colorette@^1.2.1, colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2265,11 +2448,6 @@ comment-parser@1.1.2: resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.2.tgz#e5317d7a2ec22b470dcb54a29b25426c30bf39d8" integrity sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2408,23 +2586,22 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" -css-loader@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.2.tgz#24f758dae349bad0a440c50d7e2067742e0899cb" - integrity sha512-gbkBigdcHbmNvZ1Cg6aV6qh6k9N6XOr8YWzISLQGrwk2mgOH8LLrizhkxbDhQtaLtktyKHD4970S0xwz5btfTA== +css-loader@5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" + integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== dependencies: camelcase "^6.2.0" - cssesc "^3.0.0" icss-utils "^5.1.0" loader-utils "^2.0.0" - postcss "^8.2.4" + postcss "^8.2.10" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" - semver "^7.3.4" + semver "^7.3.5" css-select@^2.0.2: version "2.1.0" @@ -2601,7 +2778,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.1: +debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -2652,12 +2829,20 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== dependencies: - execa "^5.0.0" + execa "^1.0.0" + ip-regex "^2.1.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" define-properties@^1.1.3: version "1.1.3" @@ -2688,19 +2873,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delaunator@^4.0.0: version "4.0.1" @@ -2899,6 +3083,13 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2914,6 +3105,11 @@ emittery@^0.7.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2950,15 +3146,15 @@ enhanced-resolve@^4.0.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" - integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== +enhanced-resolve@^5.8.0: + version "5.8.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" + integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -3253,12 +3449,12 @@ eslint-plugin-jsx-a11y@^6.0.3: jsx-ast-utils "^3.1.0" language-tags "^1.0.5" -eslint-plugin-markdown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-2.0.0.tgz#cd650beda2b599cd9e4535ea369266b5d0e49d23" - integrity sha512-zt10JoexHeJFMTE5egDcetAJ34bn5k/92s0wAuRZfhDAyI0ryEj+O91JL2CbBExajie6BE5L63y47dN1Sbp6mQ== +eslint-plugin-markdown@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-2.1.0.tgz#1fee34a058e299bd51f3393553bf7f92f3fa167c" + integrity sha512-Rqw7tosArdlzXcR/xJGW3Er9gRiF7iE+QEMEm7hZZ/feZjUf8xCaGQJgB1nzs9yVhJnUeiAcj5TXLLfKMbp3DQ== dependencies: - remark-parse "^5.0.0" + remark-parse "^7.0.0" unified "^6.1.2" eslint-plugin-node@^6.0.1: @@ -3489,6 +3685,13 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" @@ -3618,11 +3821,20 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3647,6 +3859,11 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3705,6 +3922,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3719,6 +3943,11 @@ file-selector@^0.1.8: dependencies: tslib "^2.0.1" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3749,15 +3978,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -3773,6 +3993,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -3816,7 +4043,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@~2.3.2: +form-data@~2.3.1, form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== @@ -3842,16 +4069,19 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-monkey@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781" - integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -3952,6 +4182,14 @@ git-revision-webpack-plugin@3.0.6: resolved "https://registry.yarnpkg.com/git-revision-webpack-plugin/-/git-revision-webpack-plugin-3.0.6.tgz#5dd6c6829fae05b405059dea6195b23875d69d4d" integrity sha512-vW/9dBahGbpKPcccy3xKkHgdWoH/cAPPc3lQw+3edl7b4j29JfNGVrja0a1d8ZoRe4nTN8GCPrF9aBErDnzx5Q== +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3964,6 +4202,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@^7.0.3, glob@^7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -4000,7 +4250,29 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +good-guy-http@1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/good-guy-http/-/good-guy-http-1.12.0.tgz#431270540d39214e5de7a861fb15b4e3bf714d53" + integrity sha512-h6EKC9fb+Aaq75KSwToHRG3sTH5dJk0IlzrTFWxr7Bs6FoEKSTTQdB65R1Oxe/9ngUdjJRT6ZR3dzV4RS6Ea1Q== + dependencies: + "@schibstedpl/circuit-breaker-js" "0.0.2" + capitalize "^1.0.0" + clone "2.1.1" + request "2.87.0" + underscore "1.8.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -4020,6 +4292,14 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" @@ -4086,7 +4366,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@^1.2.0: +he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -4147,10 +4427,10 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-escaper@^2.0.0: version "2.0.2" @@ -4178,13 +4458,20 @@ html-minifier-terser@^5.0.1, html-minifier-terser@^5.1.1: relateurl "^0.2.7" terser "^4.6.3" -html-parse-stringify2@2.0.1, html-parse-stringify2@^2.0.1: +html-parse-stringify2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= dependencies: void-elements "^2.0.1" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + html-replace-webpack-plugin@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/html-replace-webpack-plugin/-/html-replace-webpack-plugin-2.6.0.tgz#506d81e06cb5d6519281ce7c7dde7aeee04620e7" @@ -4265,18 +4552,17 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-middleware@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.2.0.tgz#87776ea3d4d8dda3dc2594a076787bbc6fe4d995" - integrity sha512-vNw+AxT0+6VTM1rCJw1bpiIaUQ1Ww/vTyIEOUzdW9kNX4yuhhqV3jLSKDJo/Y/lqEIshaKCDujtvEqWiD9Dn6Q== +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" -http-proxy@^1.18.1: +http-proxy@^1.17.0: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -4344,7 +4630,7 @@ i18next@19.8.8: dependencies: "@babel/runtime" "^7.12.0" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4356,6 +4642,11 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^3.3.6: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -4379,6 +4670,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -4392,11 +4691,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -4410,7 +4704,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4427,15 +4721,33 @@ inline-style-prefixer@^5.1.0: dependencies: css-in-js-utils "^2.0.0" -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== +inquirer@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.0.tgz#68ce5ce5376cf0e89765c993d8b7c1e62e184d69" + integrity sha512-1nKYPoalt1vMBfCMtpomsUc32wmOoWXAoq3kM/5iTfxyQ2f/BxjixQpC+mbZ7BI0JUXHED4/XPXekDVtJNpXYw== dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.3.0" + run-async "^2.4.0" + rxjs "^6.6.6" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" internal-slot@^1.0.3: version "1.0.3" @@ -4463,26 +4775,21 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.0: +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.0.tgz#77ccccc8063ae71ab65c55f21b090698e763fc6e" - integrity sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w== - is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -4532,6 +4839,13 @@ is-bigint@^1.0.1: resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -4629,7 +4943,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.1: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -4641,6 +4955,11 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -4651,6 +4970,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -4663,12 +4989,10 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-negative-zero@^2.0.1: version "2.0.1" @@ -4692,26 +5016,30 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-cwd@^2.2.0: +is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4769,6 +5097,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -4789,7 +5122,12 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -5322,6 +5660,11 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -5354,6 +5697,11 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + json5@2.x, json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -5391,6 +5739,23 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -5518,6 +5883,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -5555,11 +5928,24 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@4.x, lodash@^4.17.0, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@4.x, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + loglevelnext@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04" @@ -5591,7 +5977,7 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -5610,13 +5996,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5639,20 +6018,13 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.0.tgz#445e47827fb757a4e5f35b0a6a62743cbfdc0a0d" - integrity sha512-FIkgXo0kTi3XpvaznV5Muk6Y6w8SkdmRXcY7ZLonQesuYezp59UooLxAVBcGuN6PH2tXN84mR3vyzSc6oSMUfA== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.1.0" - -memfs@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26" - integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A== +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: - fs-monkey "1.0.1" + errno "^0.1.3" + readable-stream "^2.0.1" memory-fs@^0.5.0: version "0.5.0" @@ -5682,7 +6054,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5714,7 +6086,7 @@ mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.29" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== @@ -5726,16 +6098,16 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-fn@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - mini-create-react-context@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" @@ -5783,7 +6155,7 @@ mkdirp@1.x: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.5: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -5828,6 +6200,16 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + nanoid@^2.0.3: version "2.1.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" @@ -5838,6 +6220,11 @@ nanoid@^3.1.20: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -5925,6 +6312,15 @@ node-releases@^1.1.70: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== +nodesi@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/nodesi/-/nodesi-1.15.0.tgz#eb042dec9cb8cbf1578cbae546bf3a74e0ccfb8b" + integrity sha512-R0Cn+YeAH3ooz27AibJYAA3KWqSs9y+4q28nChPTv+eCGOovDBjpBDy+WRMhtyLGJAuhO+OqXJ0hCbbs+XRyZg== + dependencies: + clone "1.0.3" + good-guy-http "1.12.0" + he "1.2.0" + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5993,12 +6389,17 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6115,13 +6516,12 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + is-wsl "^1.1.0" optionator@^0.8.1: version "0.8.3" @@ -6147,6 +6547,28 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" + integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -6154,23 +6576,16 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -6183,7 +6598,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -6204,6 +6619,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -6211,28 +6633,18 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-retry@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.5.0.tgz#6685336b3672f9ee8174d3769a660cb5e488521d" - integrity sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg== +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== dependencies: - "@types/retry" "^0.12.0" retry "^0.12.0" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6329,6 +6741,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -6351,6 +6768,11 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -6414,6 +6836,11 @@ pify@^2.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -6440,7 +6867,14 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -6452,7 +6886,7 @@ popper.js@^1.16.0: resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== -portfinder@^1.0.28: +portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== @@ -6509,7 +6943,7 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^8.0.2, postcss@^8.2.4: +postcss@^8.0.2: version "8.2.7" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.7.tgz#48ed8d88b4de10afa0dfd1c3f840aa57b55c4d47" integrity sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw== @@ -6518,6 +6952,15 @@ postcss@^8.0.2, postcss@^8.2.4: nanoid "^3.1.20" source-map "^0.6.1" +postcss@^8.2.10: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6633,6 +7076,11 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -6648,7 +7096,7 @@ qs@6.9.6: resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== -qs@~6.5.2: +qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -6658,6 +7106,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" @@ -6766,13 +7219,13 @@ react-i18next@*: "@babel/runtime" "^7.13.6" html-parse-stringify2 "^2.0.1" -react-i18next@11.8.7: - version "11.8.7" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.8.7.tgz#845f31e01e2aa92a3954c374ebcc4bd54df1cace" - integrity sha512-IDK/a73cJN4J2C6yTqmDS/r8iikwKaN283hltqps8UiRaFVTvlSxE85HkamEFD6lULG4hFZExecXJ/hA27DW3Q== +react-i18next@11.8.15: + version "11.8.15" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.8.15.tgz#89450d585298f18d4a8eb1628b0868863f3a4767" + integrity sha512-ZbKcbYYKukgDL0MiUWKJTEsEftjSTNVZv67/V+SjPqTRwuF/aL4NbUtuEcb4WjHk0HyZ1M+2wGd07Fp0RUNHKA== dependencies: - "@babel/runtime" "^7.3.1" - html-parse-stringify2 "2.0.1" + "@babel/runtime" "^7.13.6" + html-parse-stringify "^3.0.1" react-is@^16.12.0, react-is@^16.13.1, react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" @@ -6942,7 +7395,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1: +readable-stream@^2.0.1, readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6955,7 +7408,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6964,6 +7417,15 @@ readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -7032,10 +7494,10 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== +remark-parse@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf" + integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA== dependencies: collapse-white-space "^1.0.2" is-alphabetical "^1.0.0" @@ -7100,6 +7562,32 @@ request-promise-native@^1.0.9: stealthy-require "^1.1.1" tough-cookie "^2.3.3" +request@2.87.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -7151,6 +7639,13 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -7158,6 +7653,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -7186,6 +7686,14 @@ resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3 is-core-module "^2.2.0" path-parse "^1.0.6" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -7201,6 +7709,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -7221,6 +7736,11 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7228,12 +7748,19 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^6.6.6: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -7316,6 +7843,15 @@ scheduler@^0.20.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" @@ -7354,6 +7890,13 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -7527,6 +8070,18 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +sockjs-client@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" + integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.5.1" + sockjs@^0.3.21: version "0.3.21" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" @@ -7708,6 +8263,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" @@ -7776,6 +8340,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -7822,6 +8393,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -7929,6 +8507,11 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" @@ -7951,6 +8534,13 @@ tippy.js@5.1.2: dependencies: popper.js "^1.16.0" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -8015,6 +8605,13 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== + dependencies: + punycode "^1.4.1" + tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -8197,6 +8794,11 @@ uncontrollable@^7.0.0: invariant "^2.2.4" react-lifecycles-compat "^3.0.4" +underscore@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -8281,6 +8883,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -8293,6 +8900,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse@^1.4.3, url-parse@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -8321,7 +8936,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -8615,6 +9230,11 @@ victory-zoom-container@^35.4.11, victory-zoom-container@^35.4.4: prop-types "^15.5.8" victory-core "^35.4.11" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= + void-elements@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -8663,6 +9283,13 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -8673,18 +9300,17 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" - integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== +webpack-cli@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" + integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.1" - "@webpack-cli/info" "^1.2.2" - "@webpack-cli/serve" "^1.3.0" + "@webpack-cli/configtest" "^1.0.3" + "@webpack-cli/info" "^1.2.4" + "@webpack-cli/serve" "^1.4.0" colorette "^1.2.1" commander "^7.0.0" - enquirer "^2.3.6" execa "^5.0.0" fastest-levenshtein "^1.0.12" import-local "^3.0.2" @@ -8693,50 +9319,63 @@ webpack-cli@^4.5.0: v8-compile-cache "^2.2.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.1.0.tgz#f0c1f12ff4cd855b3b5eec89ee0f69bcc5336364" - integrity sha512-mpa/FY+DiBu5+r5JUIyTCYWRfkWgyA3/OOE9lwfzV9S70A4vJYLsVRKj5rMFEsezBroy2FmPyQ8oBRVW8QmK1A== +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: - colorette "^1.2.1" - mem "^8.0.0" - memfs "^3.2.0" - mime-types "^2.1.28" + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" range-parser "^1.2.1" - schema-utils "^3.0.0" + webpack-log "^2.0.0" -webpack-dev-server@^4.0.0-beta.2: - version "4.0.0-beta.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.0.0-beta.2.tgz#0364a5756544da9c077da829016817703db4d5ed" - integrity sha512-kbUAjQg1FLtCoIZ0NdcTZWRBVT1EDajBSvGAiAqQPJxBjsr0N3FQ57kJ/4SrIZPyAajn8kcHctwFsTKPwme1tQ== +webpack-dev-server@^3.11.2: + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: - ansi-html "^0.0.7" + ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^3.5.1" + chokidar "^2.1.8" compression "^1.7.4" connect-history-api-fallback "^1.6.0" - del "^6.0.0" + debug "^4.1.1" + del "^4.1.1" express "^4.17.1" - find-cache-dir "^3.3.1" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^1.1.0" - internal-ip "^6.2.0" - ipaddr.js "^2.0.0" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - open "^7.4.2" - p-retry "^4.5.0" - portfinder "^1.0.28" - schema-utils "^3.0.0" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" selfsigned "^1.10.8" + semver "^6.3.0" serve-index "^1.9.1" sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" - strip-ansi "^6.0.0" + strip-ansi "^3.0.1" + supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^4.1.0" - ws "^7.4.4" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" webpack-log@^3.0.1: version "3.0.1" @@ -8771,20 +9410,20 @@ webpack-sources@^2.1.1: source-list-map "^2.0.1" source-map "^0.6.1" -webpack@^5.24.3: - version "5.24.4" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.24.4.tgz#37d8cf95841dd23c809ea02931294b3455d74a59" - integrity sha512-RXOdxF9hFFFhg47BryCgyFrEyyu7Y/75/uiI2DoUiTMqysK+WczVSTppvkR47oZcmI/DPaXCiCiaXBP8QjkNpA== +webpack@^5.37.1: + version "5.37.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.37.1.tgz#2deb5acd350583c1ab9338471f323381b0b0c14b" + integrity sha512-btZjGy/hSjCAAVHw+cKG+L0M+rstlyxbO2C+BOTaQ5/XAnxkDrP5sVbqWhXgo4pL3X2dcOib6rqCP20Zr9PLow== dependencies: "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.46" + "@types/estree" "^0.0.47" "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/wasm-edit" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.0.4" + acorn "^8.2.1" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.7.0" + enhanced-resolve "^5.8.0" es-module-lexer "^0.4.0" eslint-scope "^5.1.1" events "^3.2.0" @@ -8893,6 +9532,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -8917,6 +9565,13 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + ws@^7.4.4: version "7.4.4" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" @@ -8967,6 +9622,14 @@ yargs-parser@20.x: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -8983,6 +9646,22 @@ yargs-parser@^3.2.0: camelcase "^3.0.0" lodash.assign "^4.1.0" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"