diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 427e7a4..0000000 --- a/.babelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "env": { - "test": { - "presets": [ - ["@babel/preset-env", { "targets": { "node": 8 }}] - ] - } - } -} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 343f1b9..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - root: true, - extends: [ - 'plugin:vue-libs/recommended', - 'plugin:jest/recommended' - ], - rules: { - indent: ['error', 2, { MemberExpression: 'off' }] - } -} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 755a421..0000000 --- a/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -node_modules/ -dist/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.idea/ -lib/app/.temp/* \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 1d36b38..0000000 --- a/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -# Basic -*.log -.temp -vuepress -art -docs -.eslintrc.js -yarn.lock -TODOs.md -.github -.idea - -# CI related -scripts - -# Test related -test -.babelrc diff --git a/404.html b/404.html new file mode 100644 index 0000000..d7a13ae --- /dev/null +++ b/404.html @@ -0,0 +1,27 @@ + + + + + + + IGeekFan的文档 + + + + + + + + +

404

How did we get here?
Take me home.
+ + + diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 2f244ac..0000000 --- a/LICENSE +++ /dev/null @@ -1,395 +0,0 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. diff --git a/README.md b/README.md deleted file mode 100644 index 741a13c..0000000 --- a/README.md +++ /dev/null @@ -1,29 +0,0 @@ -## 简介 -本项目专注于文档构建,博客分享。 - -## 文档 -完整文档请点击此链接 -- [https://luoyunchong.github.io/vuepress-docs/](https://luoyunchong.github.io/vuepress-docs) - - -主要分为三部分: -- lin-cms [https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/](https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/) -- dotnetcore-examples [https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/](https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/) -- colorui [https://luoyunchong.github.io/vuepress-docs/colorui/docs/](https://luoyunchong.github.io/vuepress-docs/colorui/docs/) - -前提 -- node.js -- yarn -- vuepress - -## 四个重要命令行 -``` -# 安装依赖包 -yarn install -# 运行 -yarn dev -# 打包 -yarn build -#自动发布 至github pages -.\deploy.ps1 -``` diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..40cb50d --- /dev/null +++ b/about/index.html @@ -0,0 +1,35 @@ + + + + + + + IGeekFan的文档 + + + + + + + + +
+ + + diff --git a/assets/css/2.styles.2c132230.css b/assets/css/2.styles.2c132230.css new file mode 100644 index 0000000..db168b2 --- /dev/null +++ b/assets/css/2.styles.2c132230.css @@ -0,0 +1 @@ +[data-v-97b6395a]::-webkit-scrollbar-track{border-radius:10px;-webkit-box-shadow:inset 0 0 6px transparent}[data-v-97b6395a]::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.05);background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1)}[data-v-97b6395a]::-webkit-scrollbar-thumb,[data-v-97b6395a]::-webkit-scrollbar-track{border-radius:999px;border:5px solid transparent}[data-v-97b6395a]::-webkit-scrollbar-track{box-shadow:inset 1px 1px 5px rgba(0,0,0,.2)}[data-v-97b6395a]::-webkit-scrollbar-thumb{min-height:20px;background-clip:content-box;box-shadow:inset 0 0 0 5px rgba(0,0,0,.2)}[data-v-97b6395a]::-webkit-scrollbar-corner{background:transparent}.badge[data-v-97b6395a]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;margin-right:5px;background-color:#42b983}.badge.middle[data-v-97b6395a]{vertical-align:middle}.badge.top[data-v-97b6395a]{vertical-align:top}.badge.green[data-v-97b6395a],.badge.tip[data-v-97b6395a]{background-color:#42b983}.badge.error[data-v-97b6395a]{background-color:#da5961}.badge.warn[data-v-97b6395a],.badge.warning[data-v-97b6395a],.badge.yellow[data-v-97b6395a]{background-color:#e7c000} \ No newline at end of file diff --git a/assets/css/3.styles.a31eb318.css b/assets/css/3.styles.a31eb318.css new file mode 100644 index 0000000..1f64892 --- /dev/null +++ b/assets/css/3.styles.a31eb318.css @@ -0,0 +1 @@ +[data-v-b47fce12]::-webkit-scrollbar-track{border-radius:10px;-webkit-box-shadow:inset 0 0 6px transparent}[data-v-b47fce12]::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.05);background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1)}[data-v-b47fce12]::-webkit-scrollbar-thumb,[data-v-b47fce12]::-webkit-scrollbar-track{border-radius:999px;border:5px solid transparent}[data-v-b47fce12]::-webkit-scrollbar-track{box-shadow:inset 1px 1px 5px rgba(0,0,0,.2)}[data-v-b47fce12]::-webkit-scrollbar-thumb{min-height:20px;background-clip:content-box;box-shadow:inset 0 0 0 5px rgba(0,0,0,.2)}[data-v-b47fce12]::-webkit-scrollbar-corner{background:transparent}.blue[data-v-b47fce12]{padding:.25rem .5rem;color:#3683d6;font-size:.85em;background:#e4f1ff;border-radius:3px} \ No newline at end of file diff --git a/assets/css/4.styles.06774d68.css b/assets/css/4.styles.06774d68.css new file mode 100644 index 0000000..5e05e8f --- /dev/null +++ b/assets/css/4.styles.06774d68.css @@ -0,0 +1 @@ +.btn[data-v-58baaab4]{height:30px;line-height:30px;background-color:#3683d6;width:70px;border-radius:5px;color:#fff;text-align:center;font-size:14px;display:inline-block;margin:5px}.btn.disabled[data-v-58baaab4]{background-color:#edeef0;color:#c4c9d2}.btn.white[data-v-58baaab4]{background-color:#fff;color:#868f9f;width:68px;border:1px solid #ccc} \ No newline at end of file diff --git a/lib/app/.temp/override.styl b/assets/css/5.styles.82af18d5.css similarity index 100% rename from lib/app/.temp/override.styl rename to assets/css/5.styles.82af18d5.css diff --git a/assets/css/styles.da0724c2.css b/assets/css/styles.da0724c2.css new file mode 100644 index 0000000..3316c08 --- /dev/null +++ b/assets/css/styles.da0724c2.css @@ -0,0 +1 @@ +.home{padding:4rem 2rem 0;max-width:960px;margin:0 auto}.home .hero{text-align:center}.home .hero img{max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3683d6;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #2976c8}.home .hero .action-button:hover{background-color:#4a8fda}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:920px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.sidebar-button{display:none;width:50px;height:50px;position:absolute;padding:.6rem;top:15px;left:20px}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:920px){.sidebar-button{display:block}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input::-ms-input-placeholder{color:#c4c9d2}.search-box input::placeholder{color:#c4c9d2}.search-box input{cursor:text;width:250px;height:36px;color:#4e6e8e;display:inline-block;border:1px solid #d1d7de;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(https://github.com/vuepress-docs/assets/img/search.9e8df4f9.svg) .6rem .6rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3683d6}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:1.5rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3683d6}@media (max-width:1060px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (max-width:1060px) and (min-width:920px){.search-box .suggestions{left:0}}@media (max-width:920px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3683d6}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3683d6;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(1rem - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:920px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:920px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid #ddd;border-bottom-color:#ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:#45526b}.nav-links a.router-link-active,.nav-links a:hover{color:#3683d6}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:920px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:920px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;color:#3683d6}}.navbar{position:relative;height:80px;width:100%;display:flex;align-items:center;box-shadow:0 2px 18px #d4d4d4}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .home-link{line-height:80px;height:80px}.navbar .home-link img{height:24px;min-width:110px;margin-left:3.6vw;margin-top:28px}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative;margin-left:2.6vw;cursor:pointer}.navbar .search{display:inline-block;margin-left:7.03vw}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:1rem;position:absolute;right:$navbar-horizontal-padding;top:$navbar-vertical-padding;display:flex;right:5rem}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}.navbar .links .nav-links{display:flex;justify-content:space-between;font-size:.875rem}@media (max-width:1060px){.navbar{padding-left:4rem}.navbar .can-hide{display:block}.navbar .links{padding-left:0;right:10px}}@media (max-width:920px){.navbar{padding-left:4rem;justify-content:space-around}.navbar .logo{height:32px;width:70px;margin-left:0}.navbar .search{margin-left:40px}.navbar .can-hide{display:none!important}.navbar .links{padding-left:0;right:0}}.page-edit,.page-nav{max-width:900px;margin:0 auto;padding:2rem 4rem}@media (max-width:1060px){.page-edit,.page-nav{padding:2rem}}@media (max-width:419px){.page-edit,.page-nav{padding:1.5rem}}.page{padding-bottom:2rem;margin-right:150px}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}@media (max-width:920px){.page{margin-right:0}.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{display:inline-block;color:#45526b;border-left:.25rem solid transparent;width:100%;margin-bottom:4px;box-sizing:border-box;font-size:13px}a.sidebar-link:hover,a.sidebar-link back{color:#3683d6}a.sidebar-link.active{color:#3683d6;padding-top:3p;padding-bottom:3px}.sidebar-group a.sidebar-link{padding-left:4rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}ul.sidebar-sub-headers{display:none}.sidebar-group-items li{height:20px;line-height:20px;margin:10px 0}ul.sidebar-group-items .sidebar-link{font-size:13px;font-weight:400}ul.sidebar-group-items li{margin-bottom:15px!important}.sidebar-group:not(.first){margin-top:0}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading{cursor:auto;color:inherit}.sidebar-heading{color:#45526b;transition:color .15s ease;cursor:pointer;font-size:14px;padding:0 2.5rem;margin-top:0;margin-bottom:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:40px;line-height:40px;margin-left:5px;position:relative;font-weight:400}.sidebar-heading.open{color:#3683d6;background:#e4f1ff;border-top-left-radius:25px;border-bottom-left-radius:25px}.sidebar-heading:hover{color:#3683d6}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading:.open .arrow{top:-.18em}a.text{color:#314659;display:inline-block;width:100%}a.text:hover{color:#3683d6}a.text.router-link-active{color:#3683d6;font-weight:600;border-left-color:#3683d6}.sidebar-group-items{transition:height .1s ease-out;overflow:hidden}.sidebar{box-shadow:1px 0 18px #d4d4d4}.sidebar ul{padding:0;margin:0;list-style-type:none;font-size:14px;color:#45526b}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem 0}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-links{padding:1.5rem 0}@media (max-width:920px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar .sidebar-links{padding:1rem 0}}.sw-update-popup{position:fixed;right:1em;bottom:1em;padding:1em;border:1px solid #3683d6;border-radius:3px;background:#fff;box-shadow:0 4px 16px rgba(0,0,0,.5);text-align:center}.sw-update-popup button{margin-top:.5em;padding:.25em 2em}.sw-update-popup-enter-active,.sw-update-popup-leave-active{transition:opacity .3s,transform .3s}.sw-update-popup-enter,.sw-update-popup-leave-to{opacity:0;transform:translateY(50%) scale(.5)}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}::-webkit-scrollbar-track{border-radius:10px;-webkit-box-shadow:inset 0 0 6px transparent}::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.05);background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1)}::-webkit-scrollbar-thumb,::-webkit-scrollbar-track{border-radius:999px;border:5px solid transparent}::-webkit-scrollbar-track{box-shadow:inset 1px 1px 5px rgba(0,0,0,.2)}::-webkit-scrollbar-thumb{min-height:20px;background-clip:content-box;box-shadow:inset 0 0 0 5px rgba(0,0,0,.2)}::-webkit-scrollbar-corner{background:transparent}#nprogress{pointer-events:none}#nprogress .bar{background:#3683d6;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3683d6,0 0 5px #3683d6;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#3683d6;border-left-color:#3683d6;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#eff7ff;border-color:#3683d6}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.arrow{display:inline-block;width:6px;height:6px}.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:6px solid #ccc}.arrow.down{border-top:1px solid #3683d6;border-right:1px solid #3683d6;transform:rotate(-45deg);margin-bottom:-2px;top:45%}.arrow.down,.arrow.right{transition:all .3s;margin-left:10px;position:absolute;left:85%}.arrow.right{border-top:1px solid #656565;border-right:1px solid #656565;transform:rotate(135deg);top:35%}.arrow.left{border-top:4px solid transparent;border-bottom:4px solid transparent;border-right:6px solid #ccc}.content:not(.custom){max-width:900px;padding:2rem 4rem}@media (max-width:1060px){.content:not(.custom){padding:2rem}}@media (max-width:419px){.content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0}body{font-family:Avenir,Chinese Quote,PingFang SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;font-weight:Regular;color:#2c3e50}h1{font-size:28px!important}h2{font-size:24px!important}h3{font-size:20px!important}h4{font-size:16px!important}.page{padding-left:250px}.navbar{z-index:20;right:0;height:4rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:15px;background-color:#fff;width:250px;position:fixed;z-index:10;margin:0;top:4rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.content:not(.custom){margin:0 auto;padding:2rem 2.5rem}.content:not(.custom)>:first-child{margin-top:4rem}.content:not(.custom) a:hover{text-decoration:underline}.content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.content:not(.custom) img{max-width:100%}.content.custom{padding:0;margin:0}.content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3683d6}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.25rem solid #dfe2e5;margin-left:0;padding-left:1rem}ol,ul{padding-left:1.2em}ul>li>ul{color:#8c98ae}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.content:not(.custom)>h1,.content:not(.custom)>h2,.content:not(.custom)>h3,.content:not(.custom)>h4,.content:not(.custom)>h5,.content:not(.custom)>h6{margin-top:-3.5rem;padding-top:5rem;margin-bottom:0}.content:not(.custom)>h1:first-child,.content:not(.custom)>h2:first-child,.content:not(.custom)>h3:first-child,.content:not(.custom)>h4:first-child,.content:not(.custom)>h5:first-child,.content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.content:not(.custom)>h1:first-child+.custom-block,.content:not(.custom)>h1:first-child+p,.content:not(.custom)>h1:first-child+pre,.content:not(.custom)>h2:first-child+.custom-block,.content:not(.custom)>h2:first-child+p,.content:not(.custom)>h2:first-child+pre,.content:not(.custom)>h3:first-child+.custom-block,.content:not(.custom)>h3:first-child+p,.content:not(.custom)>h3:first-child+pre,.content:not(.custom)>h4:first-child+.custom-block,.content:not(.custom)>h4:first-child+p,.content:not(.custom)>h4:first-child+pre,.content:not(.custom)>h5:first-child+.custom-block,.content:not(.custom)>h5:first-child+p,.content:not(.custom)>h5:first-child+pre,.content:not(.custom)>h6:first-child+.custom-block,.content:not(.custom)>h6:first-child+p,.content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:2}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:40px 0;display:table;width:100%;max-width:100%;color:#45526b;border:1px solid #dee2e6!important}thead{background:#e8f0f9;text-align:left}thead tr{height:60px}thead tr th{padding-left:.8rem}tr:first-child{border-bottom:1px solid transparent}tr:nth-child(2n){background-color:#f8f9fa}td{padding:.6em 1em;height:30px}td,th:not(:last-child){border:none}td{color:#596c8e}.custom-layout{padding-top:4rem}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}.theme-container.no-navbar .custom-layout{padding-top:0}@media (min-width:921px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:1060px){.sidebar{font-size:15px;width:205px}.page{padding-left:205px}}@media (max-width:920px){.sidebar{top:0;padding-top:4rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.icon.outbound{color:#3683d6;display:inline-block}.rightMenuWrapper[data-v-49481e8d]{position:fixed;padding-left:50px;top:100px;right:-18px;width:200px;font-size:14px;padding-right:30px}.rightMenuWrapper li[data-v-49481e8d]{height:30px;line-height:30px;list-style:none;display:flex;position:relative}.rightMenuWrapper li[data-v-49481e8d]:before{content:"";position:absolute;width:5px;height:5px;background:#c4c9d2;border-radius:50%;top:50%;transform:translateY(-50%);left:-21px}.rightMenuWrapper li a[data-v-49481e8d]{text-decoration:none!important;width:200px;height:30px;line-height:30px;color:#596c8e;margin-bottom:10px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rightMenuWrapper li a[data-v-49481e8d]:hover,.rightMenuWrapper li a a.active[data-v-49481e8d]{color:#3683d6}.rightMenuWrapper li img[data-v-49481e8d]{position:absolute;width:20px;height:20px;top:50%;transform:translateY(-50%);left:-30px}@media (max-width:920px){.rightMenuWrapper[data-v-49481e8d]{display:none}}.border[data-v-6397e998]{border:1px solid #dee2e6;padding:5px}.border-wrapper[data-v-4f311c2c]{border:1px solid #dee2e6;position:relative;padding:10px;background:#f7f8f9}.border-wrapper .border-content[data-v-4f311c2c]{border:979797;box-shadow:2px 2px 30px #c7ccd7;background:#fff}.border-wrapper .border-content .slot-content[data-v-4f311c2c]{display:block;padding:10px}.border-wrapper .border-content .slot-code[data-v-4f311c2c]{display:block;padding-left:10px;padding-right:10px}.border-wrapper .border-content .control[data-v-4f311c2c]{height:20px;width:20px;margin:0 auto;border:1px solid #dee2e6;border-radius:50%;display:flex;justify-content:center;align-items:center}.border-wrapper .border-content .control img[data-v-4f311c2c]{color:#3683d6;font-weight:700}.border-wrapper .border-content .control[data-v-4f311c2c]:hover{border:1px solid #3683d6}.tag[data-v-baa11908]{color:#3683d6;padding:.25rem .5rem;margin-left:.5rem;margin-right:.5rem;font-size:.85em;background-color:#e4f1ff;border-radius:.1875rem;display:inline-block}.border-bottom[data-v-174674c0]{display:flex;align-items:center;margin:5px}.border-bottom .text[data-v-174674c0]{font-weight:600;font-size:16px;display:inline-block;white-space:nowrap;padding-right:5px}.border-bottom .border[data-v-174674c0]{width:100%;height:1px;padding-left:5px;padding-right:5px;background:#e2ecf2;display:inline-block}.tip[data-v-4a9392f7]{background:#eff7ff;position:relative;padding-top:15px;padding-left:10px;padding-right:5px;padding-bottom:5px}.tip img[data-v-4a9392f7]{position:absolute;top:-10px;left:40px}.imgWrapper[data-v-d81fa802]{padding:1rem;margin:40px 0;background-color:#fff;border-radius:.1875rem;display:flex;justify-content:center;align-items:center;box-shadow:2px 2px 30px #c7ccd7} \ No newline at end of file diff --git a/lib/app/icons/2.png b/assets/img/2.8c3cb683.png similarity index 100% rename from lib/app/icons/2.png rename to assets/img/2.8c3cb683.png diff --git a/lib/app/icons/bottom-logo.png b/assets/img/bottom-logo.385a53c5.png similarity index 100% rename from lib/app/icons/bottom-logo.png rename to assets/img/bottom-logo.385a53c5.png diff --git a/lib/default-theme/search.svg b/assets/img/search.9e8df4f9.svg similarity index 100% rename from lib/default-theme/search.svg rename to assets/img/search.9e8df4f9.svg diff --git a/assets/js/1.e59787bb.js b/assets/js/1.e59787bb.js new file mode 100644 index 0000000..bb2dac9 --- /dev/null +++ b/assets/js/1.e59787bb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{158:function(A,n){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg=="},159:function(A,n){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC"},160:function(A,n){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg=="},161:function(A,n){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGZJREFUSA3tVGtsVFUQnnP2brst7G6ry9aCpTZNKrG7aVJrUVvBQkAKNaFajPIDjDE0USo0aqKJmproD2MihjYkNibaGAkIJAZFK62URwoSUx9gDQGhAj5oTd3KdkuXdu/xm7u99G5Z9pH4w0RPcu7Mndc3M2fOIfp//Rs7EOrsfvnKF4eK/oncZDpBFInFupj8aqzzy8p0/OLZpgVMkry6Iq+S4mCou2d1vICpytIDFtJLQhIqz1K62DPa1bM5VaCZdikDK6WAKDxTwGCFVCS3BLsObjV0MyMn+RdJ9NfUwcOH56iwGiJiF4UddRUgStFep9e9VpSVha45JGFSB+7p9amIftKEZMrLTEMKAZEahuQS6CDoIASgalBKcQlHc9G5tOpA1ItIM5mkVMdQ4Xy5PLTZoOxj8jqxUHjw8WAGfJwQL05Q142/JwzB1CelM25padH6/xjyD49dISMGY0i48uaaTQoeCRgypgaPZHVhe9O1tOo9K7CRilVg5Vc0ND2kK9WIGmuQup11mk1S6bw8WlZaQguLC1CnQBNQIycTb+H8XTUL66HXreq41g8+9qwnHA7vBOASOPTWV/hcC/K9fnb8PXCZjp09T6d+GyL/rfnUXLuInI5Ma0wr/72bZleLmtJRq5D564BXrX0hdyIcPAZVPnbzrk3r3Lqu3hJTpmZ1B/rPUMeRrylnloNeX7OKZjkyYmIj8GCmJiuzqisuxCimfmwzhUUlZTvQuPIMTavcuWl9UOm0HX2ctjPOk6goz0N3FRfS3r4f6OLwCFXdXow8AYeNLo0LTdbOrq7onxnf/J8OCMkDDU33oaI3cDWe39HceFTXJ7uVEjfx+SEZM6jBs8yV7SCHptFn3/1IvoK55HE5EYWbKF/NWXTndhMkHo2ZaoCuR7pnOne3btUjEx14mebzdeFrFKXRBAweAJxMbbmfbsl10aFTZ4GJcGxvEwPxwKyy2Hus6H406pNA74nncP/qjOyNauECyovvJS+TsrT8tkLqO3c+CopkNJJ/GkYJPjHAStBc1PaztNmPIO+72W8Cm+8RU14mL1RkJenqFU5gjttJgdBY9DEBMNls6QEDbBx+jpx77vjGQEn8OR7oPfkT2v7uhB7JsGsYFz4S3Gl0JylwzBkj5QEMky8x3rQ2t8r/QURqKwaGhq/muV3RlwpTj8FLDxhN2oeE6+rXPX3zdPjE3IZtrSeOnz43XlpYMBIdLqmclQsCib0w91YDmSXa0erM0Khos8oT8WyLZ9WOHi9BqX0A/wsVxzyP8fxjgD//sPUXjGsLnspHlzdsbIrnYJWxDduyzzMvPvmtJzt3MfQdVpsb8eju9Wv5wxvfwZBswJTsy7TZGz/dteVXq1XdmuZ5Yf1qOwBXorr2/XvaGq36VPi4wOyIap5C+14D60ICR0FPsxyrBLf4XtDLaO1L+3e3bTOkaX5uCMxxVj++OWcsOPkIElgG8PnR2OoCALuyndpHH7//9kiaeP9h878Bmp511/eTzMgAAAAASUVORK5CYII="},164:function(A,n,a){"use strict";a.r(n);var t=a(158),s=a.n(t),r=a(159),e=a.n(r),i=a(160),u=a.n(i),m=a(161),U=a.n(m),c={data:function(){return{src:""}},mounted:function(){switch(this.randomNum(1,4)){case 1:this.src=s.a;break;case 2:this.src=e.a;break;case 3:this.src=u.a;break;case 4:this.src=U.a}},methods:{randomNum:function(A,n){switch(arguments.length){case 1:return parseInt(Math.random()*A+1,10);case 2:return parseInt(Math.random()*(n-A+1)+A,10);default:return 0}}}},o=a(0),d=Object(o.a)(c,function(){var A=this.$createElement,n=this._self._c||A;return n("div",{staticStyle:{display:"inline-block"}},[n("img",{attrs:{src:this.src,alt:""}})])},[],!1,null,"217ea7d4",null);n.default=d.exports}}]); \ No newline at end of file diff --git a/assets/js/10.5fb2e152.js b/assets/js/10.5fb2e152.js new file mode 100644 index 0000000..7b14779 --- /dev/null +++ b/assets/js/10.5fb2e152.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{171:function(t,s,e){"use strict";e.r(s);var a=e(0),n=Object(a.a)({},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),e("p",[t._v("代码托管在GitHub上 "),e("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-hello-world",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-hello-world"),e("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/with-visual-studio-code",target:"_blank",rel:"noopener noreferrer"}},[t._v("C# 和 Visual Studio Code 入门教程"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://blog.csdn.net/qq_40346899/article/details/80955788",target:"_blank",rel:"noopener noreferrer"}},[t._v("vscode调试运行c#详细操作过程"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("strong",[e("a",{attrs:{href:"https://blog.csdn.net/qin_yu_2010/article/details/83978244",target:"_blank",rel:"noopener noreferrer"}},[t._v("使用Visual Studio Code开发.NET Core看这篇就够了"),e("OutboundLink")],1)]),t._v(" 强烈推荐。")])]),t._v(" "),t._m(3),t._v(" "),e("p",[t._v("创建一个hello-word的console,会输出Hello World!")]),t._v(" "),t._m(4),e("p",[t._v("console-hello-world.csproj")]),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),e("p",[t._v("在 console-hello-world/bin/Debug/netcoreapp3.0中生成了console-hello-world.dll")]),t._v(" "),t._m(8),e("p",[t._v("修改main函数")]),t._v(" "),t._m(9),t._m(10),e("RightMenu")],1)},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"创建简单hello-world"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建简单hello-world","aria-hidden":"true"}},[this._v("#")]),this._v(" 创建简单Hello World")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"源码"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 源码")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"相关阅读"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#相关阅读","aria-hidden":"true"}},[this._v("#")]),this._v(" 相关阅读")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"开始"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开始","aria-hidden":"true"}},[this._v("#")]),this._v(" 开始")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[this._v("mkdir")]),this._v(" console-hello-world\n"),s("span",{pre:!0,attrs:{class:"token function"}},[this._v("cd")]),this._v(" console-hello-world\ndotnet new console\ndotnet run\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("OutputType")]),this._v(" 标记指定我们要生成的可执行文件,即控制台应用程序。")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("TargetFramework")]),this._v(" 标记指定要定位的 .NET 实现代码。 在高级方案中,可以指定多个目标框架,并在单个操作中生成所有目标框架。")])},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"language-xml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-xml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("Project")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token attr-name"}},[t._v("Sdk")]),e("span",{pre:!0,attrs:{class:"token attr-value"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')]),t._v("Microsoft.NET.Sdk"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')])]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n\n "),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("PropertyGroup")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("OutputType")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("Exe"),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("TargetFramework")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("netcoreapp3.0"),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("RootNamespace")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("console_hello_world"),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token tag"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n\n")])])])},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"language-PowerShell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-powershell"}},[e("code",[t._v("cd console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("hello"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("world "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#要先在console-hello-world目录中")]),t._v("\ndotnet bin"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("Debug"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("netcoreapp3"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("hello"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("world"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("dll\nHello World\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-c# extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v('using System;\n\nnamespace console_hello_world\n{\n class Program\n {\n static void Main(string[] args)\n {\n if (args.Length > 0)\n {\n Console.WriteLine($"Hello {args[0]}!");\n }\n else\n {\n Console.WriteLine("Hello!");\n }\n }\n }\n}\n')])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-PowerShell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[this._v("$ dotnet run "),s("span",{pre:!0,attrs:{class:"token operator"}},[this._v("--")]),this._v(" John\nHello John"),s("span",{pre:!0,attrs:{class:"token operator"}},[this._v("!")]),this._v("\n")])])])}],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/11.531568d2.js b/assets/js/11.531568d2.js new file mode 100644 index 0000000..8af3952 --- /dev/null +++ b/assets/js/11.531568d2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{170:function(t,s,e){"use strict";e.r(s);var a=e(0),r=Object(a.a)({},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),e("p",[t._v("使用PowerShell的dotnet cli命令行创建控制台项目,测试项目,测试项目引用控制台项目。")]),t._v(" "),t._m(1),t._v(" "),e("p",[t._v("代码托管在GitHub上 "),e("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-news-types",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-news-types"),e("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),e("p",[t._v("code :"),e("a",{attrs:{href:"https://github.com/dotnet/samples/blob/master/core/console-apps/NewTypesMsBuild/README.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/dotnet/samples/blob/master/core/console-apps/NewTypesMsBuild/README.md"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("docs: "),e("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/testing-with-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/testing-with-cli"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("dotnet-add-reference 使用文档 "),e("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-reference",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-reference"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("总结如下命令行")]),t._v(" "),t._m(3),e("p",[t._v("其他的代码就看上面的二个链接,把代码复制进去,代码很简单,一个接口,二个实现,main函数调用,测试项目引用控制台项目,")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._m(6),t._v(" "),t._m(7),e("RightMenu")],1)},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"net-core-简单测试项目"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#net-core-简单测试项目","aria-hidden":"true"}},[this._v("#")]),this._v(" .NET Core 简单测试项目")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"源码"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 源码")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"相关参考"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#相关参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 相关参考")])},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"language-PowerShell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-powershell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples> mkdir console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples> cd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\ \n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types> mkdir src\n\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types> mkdir test\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types> "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v("\nMode LastWriteTime Length Name\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("\nd-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" 2019"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("6"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("27 20:51 src\nd-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" 2019"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("6"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("27 20:51 test\n\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types> cd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\\src\\\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\src> dotnet new console "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("n NewTypes\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\src> cd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\\test\\ \n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\test> dotnet new xunit "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("n NewTypesTests \n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\test> cd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\\NewTypesTests\\\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\test\\NewTypesTests> dotnet add reference "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("src"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("NewTypes"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("NewTypes"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("csproj\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#Reference `..\\..\\src\\NewTypes\\NewTypes.csproj` added to the project.")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("先cd 到src\\NewTypes目录中,执行 "),s("strong",[this._v("dotnet run")])])},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"language-PowerShell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-powershell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\src\\NewTypes> dotnet run\nWoof"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nMeow"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("先cd 到test\\NewTypesTests目录中,执行 "),s("strong",[this._v("dotnet test")]),this._v(",看好代码,测试类 Assert.Equal() 是成功的,如果是Assert.NotEqual() 则Failure")])},function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"language-PowerShell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-powershell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\test\\NewTypesTests> dotnet test\ndotnetcore"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("news"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("types\\test\\NewTypesTests\\bin\\Debug\\netcoreapp3"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0\\NewTypesTests"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("dll 的测试运行"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("NETCoreApp"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("Version=v3"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nMicrosoft "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("R"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" 测试执行命令行工具版本 16"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("1\n版权所有 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("C"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" Microsoft Corporation。保留所有权利。\n\n正在启动测试执行,请稍候"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n\n总测试: 2。已通过: 2。失败: 0。已跳过: 0。\n测试运行成功。\n测试执行时间: 1"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("5134 秒\n")])])])}],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/12.a64efe17.js b/assets/js/12.a64efe17.js new file mode 100644 index 0000000..ab878e0 --- /dev/null +++ b/assets/js/12.a64efe17.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{169:function(t,e,s){"use strict";s.r(e);var r=s(0),a=Object(r.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),s("p",[t._v("主要在介绍FreeSql在ASP.NTE Core WebApi中如何使用的过程,完成一个最简单的博客系统的后端接口。")]),t._v(" "),t._m(2),t._v(" "),s("p",[t._v("国人写的一个功能强大的ORM,FreeSql 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,特点:轻量级、可扩展、基于 .NET Standard 跨平台。")]),t._v(" "),t._m(3),t._v(" "),s("p",[t._v("代码托管在GitHub上 "),s("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql"),s("OutboundLink")],1)]),t._v(" "),t._m(4),t._v(" "),s("ul",[s("li",[t._v("FreeSql github "),s("a",{attrs:{href:"https://github.com/2881099/FreeSql",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/2881099/FreeSql"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22",target:"_blank",rel:"noopener noreferrer"}},[t._v("关于.net core cli中如何使用dotnet new"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2",target:"_blank",rel:"noopener noreferrer"}},[t._v("使用 ASP.NET Core 创建 Web API"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-2.2",target:"_blank",rel:"noopener noreferrer"}},[t._v("Swagger/OpenAPI 生成接口文档"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/domaindrivendev/Swashbuckle.AspNetCore",target:"_blank",rel:"noopener noreferrer"}},[t._v("Swagger GitHub (Swashbuckle.AspNetCore)"),s("OutboundLink")],1)])]),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),s("p",[t._v("使用dotnet 命令行创建一个webapi项目,起名为RESTful.FreeSql")]),t._v(" "),t._m(8),s("p",[t._v("然后cd 到RESTful.FreeSql目录,通过dotnet run 命令运行项目")]),t._v(" "),t._m(9),s("p",[t._v("打开浏览器 https://localhost:5001 会出现404")]),t._v(" "),s("p",[t._v("请打开这个地址 https://localhost:5001/api/values ,可看到如下内容。")]),t._v(" "),t._m(10),s("p",[t._v("接下来我们来集成FreeSql,我们以最简单的命令和说明,详细内容去官网看具体内容")]),t._v(" "),s("ul",[s("li",[t._v("官网文档 "),s("a",{attrs:{href:"http://freesql.net/doc",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://freesql.net/doc"),s("OutboundLink")],1)])]),t._v(" "),t._m(11),t._v(" "),s("p",[t._v("要先cd到RESTful.FreeSql目录中。")]),t._v(" "),t._m(12),t._m(13),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/2881099/FreeSql/blob/master/Docs/codefirst.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("关于CodeFirst,官方文档的介绍"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("代码优先,使用过EntityFramework的应该很清楚这一概念,我的理解就是:在分析数据库表关系时,不通过在数据库中设计表,而是直接在代码中声明对应的类,使用导航属性代替外键关联,通过数据表字段与C#中的类库对应,从而自动生成数据表。")]),t._v(" "),t._m(14),t._v(" "),s("p",[t._v("数据库优先:需求分析后,直接设计数据库,通过数据库中的表,直接生成代码,类。")]),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),s("p",[t._v("我们以code first 为示例,学习如何使用freesql,实现一个简单的博客。将表内容分为博客表(Blog)和评论表(Post)")]),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),t._m(19),t._v(" "),t._m(20),t._v(" "),s("p",[t._v("建一个Domain文件夹,用于存放数据库表中对应的实体类。")]),t._v(" "),t._m(21),t._v(" "),s("h4",{attrs:{id:"_1-column属性介绍,大家可以看源码,解析"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-column属性介绍,大家可以看源码,解析","aria-hidden":"true"}},[t._v("#")]),t._v(" 1. Column属性介绍,大家可以看"),s("a",{attrs:{href:"https://github.com/2881099/FreeSql/blob/f8c3608fdac2933b528605cc46b21b71c79eaacb/FreeSql/DataAnnotations/ColumnAttribute.cs",target:"_blank",rel:"noopener noreferrer"}},[t._v("源码,解析"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("1). 比如:Blog表中指定了Title为varchar(50),我们如何通过代码指定了主键,唯一值,字形。")]),t._v(" "),t._m(22),s("p",[t._v("2). Column的命名空间在")]),t._v(" "),t._m(23),s("p",[t._v("更多属性介绍")]),t._v(" "),t._m(24),t._v(" "),t._m(25),t._v(" "),t._m(26),s("p",[t._v("更多属性介绍")]),t._v(" "),t._m(27),t._v(" "),t._m(28),t._v(" "),t._m(29),t._v(" "),t._m(30),t._m(31),t._v(" "),t._m(32),t._m(33),t._v(" "),t._m(34),t._v(" "),s("p",[t._v("这里初始化FreeSql,并使用单例模式,注入到默认的依赖中,这样在Controller中即可直接注入。")]),t._v(" "),t._m(35),t._m(36),t._v(" "),s("p",[t._v("在controllers文件夹新建一个控制器BlogController")]),t._v(" "),t._m(37),s("p",[t._v("重新运行,打开地址 http://localhost:5001/api/blog 会发现数据库中生成了表blog,这时候表post并没有生成。所以我们判断,只有在访问到实体类才检查是否存在表结构,然后执行相应的处理。")]),t._v(" "),s("p",[t._v("手动向blog表中加一些数据,然后再次请求")]),t._v(" "),t._m(38),t._v(" "),t._m(39),t._v(" "),s("p",[t._v("此功能默认为开启状态,发布正式环境后,请修改此设置")]),t._v(" "),t._m(40),s("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"freesql-asp-net-core"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freesql-asp-net-core","aria-hidden":"true"}},[this._v("#")]),this._v(" FreeSql+ASP.NET Core")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"文章概述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#文章概述","aria-hidden":"true"}},[this._v("#")]),this._v(" 文章概述")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"freesql-简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freesql-简介","aria-hidden":"true"}},[this._v("#")]),this._v(" FreeSql 简介")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"源码"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 源码")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"项目准备"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#项目准备","aria-hidden":"true"}},[this._v("#")]),this._v(" 项目准备")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",[s("li",[t._v("Mysql 5.6")]),t._v(" "),s("li",[t._v("Visual Studio 2019或2017、Visual Studio code")]),t._v(" "),s("li",[t._v(".NET Core 2.2+")]),t._v(" "),s("li",[t._v("PowerShell")]),t._v(" "),s("li",[t._v("懂点mvc,该教程不会教你如何使用 ASP .NET Core MVC、RESTful")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"创建项目"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建项目","aria-hidden":"true"}},[this._v("#")]),this._v(" 创建项目")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('PS dotnetcore-examples\\asp.net-core-freesql> dotnet new webapi -n RESTful.FreeSql\nThe template "ASP.NET Core Web API" was created successfully.\n')])])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"language-PowerShell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\asp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("net"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("core"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("freesql> cd "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\\RESTful"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("FreeSql\\\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" dotnetcore"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\asp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("net"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("core"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("freesql\\RESTful"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("FreeSql> dotnet run\n\ninfo: Microsoft"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Hosting"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Lifetime"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Now listening on: https:"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("localhost:5001\ninfo: Microsoft"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Hosting"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Lifetime"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Now listening on: http:"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v("localhost:5000\ninfo: Microsoft"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Hosting"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Lifetime"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Application started"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" Press Ctrl"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("C to shut down"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\ninfo: Microsoft"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Hosting"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Lifetime"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Hosting environment: Development\ninfo: Microsoft"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Hosting"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Lifetime"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Content root path: D:\\code\\github\\dotnetcore"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("examples\\asp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("net"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("core"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("freesql\\RESTful"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("FreeSql\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('["value1","value2"]\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"install"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install","aria-hidden":"true"}},[this._v("#")]),this._v(" Install")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"language-PowerShell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" \\asp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("net"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("core"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("freesql\\RESTful"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("FreeSql> dotnet add package FreeSql\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" \\asp"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("net"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("core"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("freesql\\RESTful"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("FreeSql> dotnet add package FreeSql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Provider"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MySql\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"code-first"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code-first","aria-hidden":"true"}},[this._v("#")]),this._v(" code first")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"db-first"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#db-first","aria-hidden":"true"}},[this._v("#")]),this._v(" db first")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开始"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开始","aria-hidden":"true"}},[this._v("#")]),this._v(" 开始")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"分析需求"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#分析需求","aria-hidden":"true"}},[this._v("#")]),this._v(" 分析需求")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"blog-表"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blog-表","aria-hidden":"true"}},[this._v("#")]),this._v(" Blog 表")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",[s("thead",[s("tr",[s("th",[t._v("字段名")]),t._v(" "),s("th",[t._v("字段类型")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("BlogId")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("博客id")])]),t._v(" "),s("tr",[s("td",[t._v("Title")]),t._v(" "),s("td",[t._v("varchar(50)")]),t._v(" "),s("td",[t._v("博客标题")])]),t._v(" "),s("tr",[s("td",[t._v("Content")]),t._v(" "),s("td",[t._v("varchar(500)")]),t._v(" "),s("td",[t._v("博客内容")])]),t._v(" "),s("tr",[s("td",[t._v("CreateTime")]),t._v(" "),s("td",[t._v("DateTime")]),t._v(" "),s("td",[t._v("发布时间")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"post-表"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#post-表","aria-hidden":"true"}},[this._v("#")]),this._v(" Post 表")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",[s("thead",[s("tr",[s("th",[t._v("字段名")]),t._v(" "),s("th",[t._v("字段类型")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("PostId")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("评论id")])]),t._v(" "),s("tr",[s("td",[t._v("ReplyContent")]),t._v(" "),s("td",[t._v("varchar(50)")]),t._v(" "),s("td",[t._v("标题")])]),t._v(" "),s("tr",[s("td",[t._v("BlogId")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("博客id")])]),t._v(" "),s("tr",[s("td",[t._v("ReplyTime")]),t._v(" "),s("td",[t._v("DateTime")]),t._v(" "),s("td",[t._v("回复时间")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"基础介绍"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#基础介绍","aria-hidden":"true"}},[this._v("#")]),this._v(" 基础介绍")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' public class Blog\n {\n [Column(IsIdentity = true, IsPrimary = true)]\n public int BlogId { get; set; }\n [Column(DbType = "varchar(50)")]\n public string Title { get; set; }\n }\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("using FreeSql.DataAnnotations;\n")])])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",[s("thead",[s("tr",[s("th",[t._v("字段")]),t._v(" "),s("th",[t._v("备注")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("Name")]),t._v(" "),s("td",[t._v("数据库列名")])]),t._v(" "),s("tr",[s("td",[t._v("OldName")]),t._v(" "),s("td",[t._v("指定数据库旧的列名,修改实体属性命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库字段;否则将视为【新增字段】")])]),t._v(" "),s("tr",[s("td",[t._v("DbType")]),t._v(" "),s("td",[t._v("数据库类型,如: varchar(255)")])]),t._v(" "),s("tr",[s("td",[t._v("IsPrimary")]),t._v(" "),s("td",[t._v("主键")])]),t._v(" "),s("tr",[s("td",[t._v("IsIdentity")]),t._v(" "),s("td",[t._v("自增标识")])]),t._v(" "),s("tr",[s("td",[t._v("IsNullable")]),t._v(" "),s("td",[t._v("是否可DBNull")])]),t._v(" "),s("tr",[s("td",[t._v("IsIgnore")]),t._v(" "),s("td",[t._v("忽略此列,不迁移、不插入")])]),t._v(" "),s("tr",[s("td",[t._v("IsVersion")]),t._v(" "),s("td",[t._v("设置行锁(乐观锁)版本号,每次更新累加版本号,若更新整个实体时会附带当前的版本号判断(修改失败时抛出异常)")])]),t._v(" "),s("tr",[s("td",[t._v("DbDefautValue")]),t._v(" "),s("td",[t._v("数据库默认值")])]),t._v(" "),s("tr",[s("td",[t._v("MapType")]),t._v(" "),s("td",[t._v("类型映射,比如:可将 enum 属性映射成 typeof(string)")])]),t._v(" "),s("tr",[s("td",[t._v("Uniques")]),t._v(" "),s("td",[t._v("唯一键,在多个属性指定相同的标识,代表联合键;可使用逗号分割多个 UniqueKey 名。")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"_2-table-的使用:用于在类的上面指定这个表的属性"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2-table-的使用:用于在类的上面指定这个表的属性","aria-hidden":"true"}},[this._v("#")]),this._v(" 2. Table 的使用:用于在类的上面指定这个表的属性")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Table")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"t_blog"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Blog")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",[s("thead",[s("tr",[s("th",[t._v("字段")]),t._v(" "),s("th",[t._v("备注")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("Name")]),t._v(" "),s("td",[t._v("数据库表名")])]),t._v(" "),s("tr",[s("td",[t._v("OldName")]),t._v(" "),s("td",[t._v("指定数据库旧的表名,修改实体命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库表;否则将视为【创建新表】")])]),t._v(" "),s("tr",[s("td",[t._v("SelectFilter")]),t._v(" "),s("td",[t._v("查询过滤SQL,实现类似 a.IsDeleted = 1 功能")])]),t._v(" "),s("tr",[s("td",[t._v("DisableSyncStructure")]),t._v(" "),s("td",[t._v("禁用 CodeFirst 同步结构迁移")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"_3-其他的还是看-https-github-com-2881099-freesql-blob-master-docs-codefirst-md"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_3-其他的还是看-https-github-com-2881099-freesql-blob-master-docs-codefirst-md","aria-hidden":"true"}},[this._v("#")]),this._v(" 3. 其他的还是看 https://github.com/2881099/FreeSql/blob/master/Docs/codefirst.md")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"blog-cs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blog-cs","aria-hidden":"true"}},[this._v("#")]),this._v(" Blog.cs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('using FreeSql.DataAnnotations;\nusing System;\n\nnamespace RESTful.FreeSql.Domain\n{\n public class Blog\n {\n [Column(IsIdentity = true, IsPrimary = true)]\n public int BlogId { get; set; }\n [Column(DbType = "varchar(50)")]\n public string Title { get; set; }\n [Column(DbType = "varchar(500)")]\n public string Content { get; set; }\n public DateTime CreateTime { get; set; }\n\n\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"post-cs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#post-cs","aria-hidden":"true"}},[this._v("#")]),this._v(" Post.cs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-C# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('\nusing FreeSql.DataAnnotations;\nusing System;\n\nnamespace RESTful.FreeSql.Domain\n{\n public class Post\n {\n [Column(IsIdentity = true, IsPrimary = true)]\n public int PostId { get; set; }\n [Column(DbType = "varchar(50)")]\n public string ReplyContent { get; set; }\n public int BlogId { get; set; }\n public DateTime ReplyTime { get; set; }\n public Blog Blog { get; set; }\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"startup-cs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#startup-cs","aria-hidden":"true"}},[this._v("#")]),this._v(" Startup.cs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("非全部代码,这里注意点:要先在mysql中创建数据库"),e("strong",[this._v("FreeSql_Blog")]),this._v(",否则一直提示"),e("strong",[this._v("主库xxxxx")]),this._v(",官网未找到相关描述。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('namespace RESTful.FreeSql\n{\n public class Startup\n {\n public Startup(IConfiguration configuration)\n {\n Fsql = new FreeSqlBuilder()\n .UseConnectionString(DataType.MySql, @"Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=FreeSql_Blog;Charset=utf8;SslMode=none;Max pool size=10")\n .UseAutoSyncStructure(true)\n .Build();\n }\n\n public IFreeSql Fsql { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddSingleton(Fsql);\n\n }\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"blogcontroller"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blogcontroller","aria-hidden":"true"}},[this._v("#")]),this._v(" BlogController")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing FreeSql;\nusing Microsoft.AspNetCore.Mvc;\nusing RESTful.FreeSql.Domain;\n\nnamespace RESTful.FreeSql.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class BlogController : ControllerBase\n {\n // GET api/Blog\n\n IFreeSql _fsql;\n public BlogController(IFreeSql fsql)\n {\n _fsql = fsql;\n }\n\n [HttpGet]\n public ActionResult> Get()\n {\n List blogs = _fsql.Select().OrderByDescending(r => r.CreateTime).ToList();\n\n return blogs;\n }\n\n // GET api/blog/5\n [HttpGet("{id}")]\n public ActionResult Get(int id)\n {\n return _fsql.Select(id).ToOne();\n }\n\n\n // DELETE api/blog/5\n [HttpDelete("{id}")]\n public void Delete(int id)\n {\n _fsql.Delete(new { BlogId = id }).ExecuteAffrows();\n }\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("http://localhost:5001/api/blog%EF%BC%8C%20%E5%8F%AF%E7%9C%8B%E5%88%B0%E7%9B%B8%E5%BA%94%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82")]),this._v(" "),e("li",[this._v("http://localhost:5001/api/blog/1%20%20%E5%8F%AF%E5%BE%97%E5%88%B0%E5%8D%95%E4%B8%AA%E6%95%B0%E6%8D%AE%E3%80%82")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"自动同步实体结构【开发环境必备】"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#自动同步实体结构【开发环境必备】","aria-hidden":"true"}},[this._v("#")]),this._v(" 自动同步实体结构【开发环境必备】")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('Fsql = new FreeSqlBuilder()\n .UseConnectionString(DataType.MySql, @"连接字符串")\n .UseAutoSyncStructure(true)\n .Build();\n \n//UseAutoSyncStructure(true/false)【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改\n\n// 也可使用此方法指定是否自动同步结构。 \nFsql.CodeFirst.IsAutoSyncStructure = true;\n')])])])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/13.0374a48d.js b/assets/js/13.0374a48d.js new file mode 100644 index 0000000..0120122 --- /dev/null +++ b/assets/js/13.0374a48d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{187:function(t,e,n){"use strict";n.r(e);var s=n(0),a=Object(s.a)({},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),n("p",[t._v("本文使用ASP .NET Core的WEB API,构建一个RESTful风格的接口,使用Freesql访问MySQL数据库,实现二个表的简单博客,并集成AutoMapper。")]),t._v(" "),n("p",[t._v("接上一篇")]),t._v(" "),n("ul",[n("li",[n("p",[n("a",{attrs:{href:"http://blog.igeekfan.cn/2019/06/30/re-start/FreeSql-asp.net-core-how-to-use/",target:"_blank",rel:"noopener noreferrer"}},[t._v("FreeSql在ASP.NTE Core WebApi中如何使用的教程"),n("OutboundLink")],1)])]),t._v(" "),n("li",[n("p",[t._v("项目源码 "),n("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql"),n("OutboundLink")],1)])])]),t._v(" "),t._m(2),t._v(" "),n("p",[t._v("当我们使用RESTful提供接口时,比如创建一个博客,修改一下博客内容时,他们的参数是有区别的。良好的设计应该是")]),t._v(" "),n("p",[t._v("创建一个博客")]),t._v(" "),t._m(3),n("p",[t._v("修改一个博客内容")]),t._v(" "),t._m(4),n("p",[t._v("但一个blog 实体如下")]),t._v(" "),t._m(5),n("p",[t._v("如果我们以Blog作为controllers中的参数时")]),t._v(" "),t._m(6),n("p",[t._v("这时修改swagger显示的默认参数是")]),t._v(" "),t._m(7),n("p",[t._v("如果我们不传递createTime,会出现异常,应该createTime是DateTime,不能为null,只有DateTime?才能为null,有?为可空类型。")]),t._v(" "),n("p",[t._v("所以我们应该为POST方式传递过来时,新建一个实体类,我们称之为DTO(Data Transfer Object),即数据传输对象,因为createTime即使传递,后端为他赋了值,前台传了也无效。有了DTO,这样可让前端清楚他们应该传递的参数,而不会出现没有作用的参数。")]),t._v(" "),n("p",[t._v("在根目录创建Models/Blogs文件夹,在Blogs文件夹中创建")]),t._v(" "),t._m(8),t._v(" "),t._m(9),t._m(10),t._v(" "),t._m(11),n("p",[t._v("有了Dto后,我们会发现了新的问题,往数据库插入时,往往使用了一些ORM,他们只支持原本的实体类,如Blog,Post。但不支持CreateBlogDto、UpdateBlogDto,我们可以手动,将一个类的值,赋值给另一个类。\n如")]),t._v(" "),t._m(12),n("p",[t._v("现在只是非常简单的二个属性,我们还能忍受,但如果是十个属性、而且有着大量的类与类之间的转换呢。这时修改AutoMapper就闪亮登场了。")]),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),n("p",[t._v("我们是在ASP .NET Core下使用AutoMapper "),n("a",{attrs:{href:"https://automapper.readthedocs.io/en/latest/Dependency-injection.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("官网介绍,如何依赖注入中使用"),n("OutboundLink")],1)]),t._v(" "),t._m(15),t._v(" "),n("p",[t._v("先cd到dotnetcore-examples\\asp.net-core-freesql\\RESTful.FreeSql目录")]),t._v(" "),t._m(16),n("p",[t._v("在StartUp.cs中的ConfigureServices配置如下")]),t._v(" "),t._m(17),t._m(18),t._v(" "),n("p",[t._v("AutoMapper/BlogProfile.cs")]),t._v(" "),t._m(19),n("p",[t._v("AutoMapper/BlogProfile.cs")]),t._v(" "),t._m(20),n("p",[t._v("Models/Posts/SearchPostDto.cs根据博客id,得到分页的评论时,集成分页类")]),t._v(" "),t._m(21),n("p",[t._v("Controlers/BlogController.cs文件中,注入IMapper,")]),t._v(" "),t._m(22),n("p",[t._v("Controlers/BlogController.cs文件中,注入IMapper,")]),t._v(" "),t._m(23),t._m(24),t._v(" "),n("ul",[n("li",[t._v("建议大家先看官网 "),n("a",{attrs:{href:"http://automapper.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://automapper.org/"),n("OutboundLink")],1)]),t._v(" "),n("li",[t._v("开源地址 "),n("a",{attrs:{href:"https://github.com/AutoMapper/AutoMapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/AutoMapper/AutoMapper"),n("OutboundLink")],1)]),t._v(" "),n("li",[t._v("Getting-started 文档 "),n("a",{attrs:{href:"https://automapper.readthedocs.io/en/latest/Getting-started.html#what-is-automapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://automapper.readthedocs.io/en/latest/Getting-started.html#what-is-automapper"),n("OutboundLink")],1)])]),t._v(" "),n("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"restful-freesql-automapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#restful-freesql-automapper","aria-hidden":"true"}},[this._v("#")]),this._v(" RESTful+FreeSql+AutoMapper")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"文章概述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#文章概述","aria-hidden":"true"}},[this._v("#")]),this._v(" 文章概述")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"dto作用"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dto作用","aria-hidden":"true"}},[this._v("#")]),this._v(" Dto作用")])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[t._v("POST /api/blog\ndata"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"title"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"content"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[t._v("PUT /api/blog\ndata"),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blogId"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"int"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"title"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"content"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(" public class Blog\n {\n [Column(IsIdentity = true, IsPrimary = true)]\n public int BlogId { get; set; }\n public string Title { get; set; }\n public string Content { get; set; }\n public DateTime CreateTime { get; set; }\n public virtual List Posts { get; set; }\n }\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(" // POST api/blog\n [HttpPost]\n public void Post([FromBody] Blog blog)\n {\n blog.CreateTime=DateTime.Now;\n _fsql.Insert(blog).ExecuteAffrows();\n }\n")])])])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blogId"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"title"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"content"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"createTime"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-06-30T07:33:05.524Z"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"posts"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"postId"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"replyContent"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blogId"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[t._v('"replyTime"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-06-30T07:33:05.524Z"')]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"createblogdto-cs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#createblogdto-cs","aria-hidden":"true"}},[this._v("#")]),this._v(" CreateBlogDto.cs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("namespace RESTful.FreeSql.Models.Blogs\n{\n public class CreateBlogDto\n {\n public string Title { get; set; }\n public string Content { get; set; }\n\n }\n}\n\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"updateblogdto-cs"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#updateblogdto-cs","aria-hidden":"true"}},[this._v("#")]),this._v(" UpdateBlogDto.cs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("namespace RESTful.FreeSql.Models.Blogs\n{\n public class UpdateBlogDto\n {\n public int BlogId { get; set; }\n public string Title { get; set; }\n public string Content { get; set; }\n }\n}\n\n\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' CreateBlogDto createBlogDto = new CreateBlogDto()\n {\n Title = "我是title",\n Content = "我是content"\n };\n\n Blog newBlog=new Blog()\n {\n Title = createBlogDto.Title,\n Content = createBlogDto.Content\n };\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"automapper"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#automapper","aria-hidden":"true"}},[this._v("#")]),this._v(" AutoMapper")])},function(){var t=this.$createElement,e=this._self._c||t;return e("blockquote",[e("p",[this._v("作用:A convention-based object-object mapper.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setup","aria-hidden":"true"}},[this._v("#")]),this._v(" Setup")])},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"language-PowerShell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-powershell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" > dotnet add package AutoMapper\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" > dotnet add package AutoMapper"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Extensions"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Microsoft"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("DependencyInjection "),n("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("version 6"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("1"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("1\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(" public void ConfigureServices(IServiceCollection services)\n {\n // .... Ignore code before this\n \n //AddAutoMapper会去找继承Profile的类,\n services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());\n\n // .... Ignore code after this\n }\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"adding-profiles"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-profiles","aria-hidden":"true"}},[this._v("#")]),this._v(" Adding Profiles")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("using AutoMapper;\nusing RESTful.FreeSql.Domain;\nusing RESTful.FreeSql.Models.Blogs;\n\nnamespace RESTful.FreeSql.AutoMapper\n{\n public class BlogProfile : Profile\n {\n public BlogProfile() \n {\n CreateMap();\n CreateMap();\n }\n }\n}\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("using AutoMapper;\nusing RESTful.FreeSql.Domain;\nusing RESTful.FreeSql.Models.Blogs;\n\nnamespace RESTful.FreeSql.AutoMapper\n{\n public class PostProfile : Profile\n {\n public PostProfile()\n {\n CreateMap();\n }\n }\n}\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("using RESTful.FreeSql.Web;\n\nnamespace RESTful.FreeSql.Models.Posts\n{\n public class SearchPostDto:PageDto\n {\n public int BlogId { get; set; }\n }\n}\n\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('using AutoMapper;\nusing Microsoft.AspNetCore.Mvc;\nusing System;\nusing System.Collections.Generic;\nusing RESTful.FreeSql.Domain;\nusing RESTful.FreeSql.Models.Blogs;\nusing RESTful.FreeSql.Web;\n\nnamespace RESTful.FreeSql.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class BlogController : ControllerBase\n {\n // GET api/Blog\n\n private readonly IFreeSql _fsql;\n private readonly IMapper _mapper;\n public BlogController(IFreeSql fsql, IMapper mapper)\n {\n _fsql = fsql;\n _mapper = mapper;\n }\n\n /// \n /// 博客列表页 \n /// \n /// 分页参数\n /// \n [HttpGet]\n public ActionResult> Get([FromQuery]PageDto pageDto)\n {\n List blogs = _fsql.Select().OrderByDescending(r => r.CreateTime).Page(pageDto.PageNumber, pageDto.PageSize).ToList();\n long count = _fsql.Select().Count();\n return new PagedResultDto(count, blogs);\n }\n\n // GET api/blog/5\n [HttpGet("{id}")]\n public ActionResult Get(int id)\n {\n // eg.1 return _fsql.Select().Where(a => a.Id == id).ToOne();\n // eg.2\n return _fsql.Select(id).ToOne();\n }\n\n // POST api/blog\n [HttpPost]\n public void Post([FromBody] CreateBlogDto createBlogDto)\n {\n Blog blog = _mapper.Map(createBlogDto);\n blog.CreateTime = DateTime.Now;\n _fsql.Insert(blog).ExecuteAffrows();\n }\n\n // PUT api/blog\n [HttpPut]\n public void Put([FromBody] UpdateBlogDto updateBlogDto)\n {\n\n //eg.1 更新指定列\n //_fsql.Update(updateBlogDto.BlogId).Set(a => new Blog()\n //{\n // Title = updateBlogDto.Title,\n // Content = updateBlogDto.Content\n //}).ExecuteAffrows();\n\n //eg.2将这个实体更新到数据库中。当更新时,会把其他列的值,如CreateTime也更新掉。\n //使用IgnoreColumns可忽略某一些列。\n\n Blog blog = _mapper.Map(updateBlogDto);\n _fsql.Update().SetSource(blog).IgnoreColumns(r => r.CreateTime).ExecuteAffrows();\n }\n\n // DELETE api/blog/5\n [HttpDelete("{id}")]\n public void Delete(int id)\n {\n _fsql.Delete(new { BlogId = id }).ExecuteAffrows();\n }\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-c# extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('using FreeSql;\nusing Microsoft.AspNetCore.Mvc;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing AutoMapper;\nusing RESTful.FreeSql.Domain;\nusing RESTful.FreeSql.Models.Posts;\nusing RESTful.FreeSql.Web;\n\nnamespace RESTful.FreeSql.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class PostController : ControllerBase\n {\n // GET: api/Post\n private readonly IFreeSql _fsql;\n private readonly IMapper _mapper;\n public PostController(IFreeSql fsql, IMapper mapper)\n {\n _fsql = fsql;\n _mapper = mapper;\n }\n\n /// \n /// 根据博客id、分页条件查询评论信息\n /// \n /// \n /// \n [HttpGet]\n public PagedResultDto Get(SearchPostDto searchPostDto)\n {\n ISelect selectPost = _fsql\n .Select()\n .Where(r => r.BlogId == searchPostDto.BlogId);\n\n List posts = selectPost.OrderByDescending(r => r.ReplyTime)\n .Page(searchPostDto.PageNumber, searchPostDto.PageSize)\n .ToList();\n\n long total = selectPost.Count();\n\n return new PagedResultDto(total, posts);\n }\n\n // GET: api/Post/5\n [HttpGet("{id}", Name = "Get")]\n public Post Get(int id)\n {\n return _fsql.Select().Where(a => a.PostId == id).ToOne();\n }\n\n // POST: api/Post\n [HttpPost]\n public void Post([FromBody] CreatePostDto createPostDto)\n {\n Post post = _mapper.Map(createPostDto);\n post.ReplyTime = DateTime.Now;\n _fsql.Insert(post).ExecuteAffrows();\n }\n\n\n // DELETE: api/Post/\n [HttpDelete("{id}")]\n public async Task DeleteAsync(int id)\n {\n await _fsql.Delete(new Post { PostId = id }).ExecuteAffrowsAsync();\n }\n }\n}\n\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/14.679b369a.js b/assets/js/14.679b369a.js new file mode 100644 index 0000000..615e2d2 --- /dev/null +++ b/assets/js/14.679b369a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{168:function(t,e,r){"use strict";r.r(e);var n=r(0),i=Object(n.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("p",[t._v("IdentityServer4 实现单点登录授权token验证")]),t._v(" "),t._m(2),t._v(" "),r("p",[t._v("代码托管在GitHub上 "),r("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-identityserver4",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-identityserver4"),r("OutboundLink")],1)]),t._v(" "),t._m(3),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01.html",target:"_blank",rel:"noopener noreferrer"}},[t._v(".NET Core微服务之基于IdentityServer建立授权与验证服务"),r("OutboundLink")],1),t._v(" "),r("RightMenu")],1)])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"identityserver4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#identityserver4","aria-hidden":"true"}},[this._v("#")]),this._v(" IdentityServer4")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"写的一些identityserver4的示例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#写的一些identityserver4的示例","aria-hidden":"true"}},[this._v("#")]),this._v(" 写的一些IdentityServer4的示例")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"源码"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 源码")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])}],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/15.4e2834ee.js b/assets/js/15.4e2834ee.js new file mode 100644 index 0000000..7961448 --- /dev/null +++ b/assets/js/15.4e2834ee.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{176:function(t,e,r){"use strict";r.r(e);var a=r(0),s=Object(a.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("p",[t._v("利用 webSocket 协议实现简易、高性能、集群即时通讯组件,支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能。")]),t._v(" "),t._m(2),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/2881099/im",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/2881099/im"),r("OutboundLink")],1)]),t._v(" "),t._m(3),t._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-im",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-im"),r("OutboundLink")],1)]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),r("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"imcore-即时通讯"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#imcore-即时通讯","aria-hidden":"true"}},[this._v("#")]),this._v(" ImCore 即时通讯")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#简介","aria-hidden":"true"}},[this._v("#")]),this._v(" 简介")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"示例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#示例","aria-hidden":"true"}},[this._v("#")]),this._v(" 示例")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"演示效果"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#演示效果","aria-hidden":"true"}},[this._v("#")]),this._v(" 演示效果")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://ae01.alicdn.com/kf/Hf8b31f05dbb94f8da565fce29f78aa78Y.png",alt:""}})])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/16.b94c35d3.js b/assets/js/16.b94c35d3.js new file mode 100644 index 0000000..d8577a4 --- /dev/null +++ b/assets/js/16.b94c35d3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{177:function(t,e,n){"use strict";n.r(e);var r=n(0),a=Object(r.a)({},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),n("p",[t._v(".NET Core下集成 七牛云下的对象存储")]),t._v(" "),t._m(1),t._v(" "),n("p",[n("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-qiniu",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-qiniu"),n("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),n("table",[t._m(3),t._v(" "),n("tbody",[n("tr",[n("td",[n("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-efcore",target:"_blank",rel:"noopener noreferrer"}},[t._v("Qiniu云对象存储"),n("OutboundLink")],1)]),t._v(" "),n("td",[n("a",{attrs:{href:"https://github.com/qiniu/csharp-sdk",target:"_blank",rel:"noopener noreferrer"}},[t._v(".net"),n("OutboundLink")],1),t._v("/"),n("a",{attrs:{href:"https://github.com/Hello-Mango/MQiniu.Core",target:"_blank",rel:"noopener noreferrer"}},[t._v(".net core"),n("OutboundLink")],1)]),t._v(" "),n("td",[n("a",{attrs:{href:"https://developer.qiniu.com/kodo/sdk/1237/csharp",target:"_blank",rel:"noopener noreferrer"}},[t._v("c# sdk"),n("OutboundLink")],1)]),t._v(" "),n("td",[t._v("由于官网未支持. net core,所以 大家看"),n("a",{attrs:{href:"https://github.com/Hello-Mango/MQiniu.Core",target:"_blank",rel:"noopener noreferrer"}},[t._v("社区版解决方案"),n("OutboundLink")],1)])])])]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),n("p",[t._v("在七牛云中自行注册后,在个人中心,密钥管理,生成自己的密钥(https://portal.qiniu.com/user/key)\nv* AK,SK分别代表:AccessKey/SecretKey")]),t._v(" "),t._m(7),t._v(" "),t._m(8),t._v(" "),t._m(9),t._m(10),t._v(" "),t._m(11),t._m(12),t._v(" "),n("p",[t._v("配置swagger的过程就不说了,创建QiniuController")]),t._v(" "),t._m(13),n("p",[t._v("Upload方法中,Zone.ZONE_CN_South,代表华南,所以创建对象存储时要注意,请选择与此相同的位置(华南),或根据实际情况修改Zone所在地区的枚举值即可。")]),t._v(" "),t._m(14),t._m(15),t._v(" "),n("p",[t._v("双击 publish.bat,生成的文件夹为如下:")]),t._v(" "),t._m(16),t._v(" "),t._m(17),t._v(" "),n("p",[t._v("使用xshell远程登录后,进入root权限。")]),t._v(" "),t._m(18),n("p",[t._v("前置条件,在ubuntu上安装好了docker。并且正常运行。")]),t._v(" "),n("p",[t._v("-d 代表后台运行,此时将对外显露5000端口运行,5000是运行后,docker对外的端口,80是这个服务对外的端口,其中Dockerfile 存在语句EXPOSE 80")]),t._v(" "),t._m(19),n("p",[t._v("此时打开 浏览器, ip+端口5000即可访问服务,请加/swagger。")]),t._v(" "),n("p",[t._v("本项目已部署至服务器 "),n("a",{attrs:{href:"http://122.152.192.161:5000/swagger/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://122.152.192.161:5000/swagger/index.html"),n("OutboundLink")],1)]),t._v(" "),t._m(20),t._v(" "),t._m(21),t._v(" "),t._m(22),t._v(" "),n("ul",[n("li",[t._v(".NET Core版本七牛云SDK使用"),n("a",{attrs:{href:"https://www.cnblogs.com/OMango/p/8447480.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.cnblogs.com/OMango/p/8447480.html"),n("OutboundLink")],1)]),t._v(" "),n("li",[t._v(".NET Core部署至Linux 下的Docker "),n("a",{attrs:{href:"http://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/"),n("OutboundLink")],1)])]),t._v(" "),n("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"七牛云对象存储"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#七牛云对象存储","aria-hidden":"true"}},[this._v("#")]),this._v(" 七牛云对象存储")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"集成类库"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#集成类库","aria-hidden":"true"}},[this._v("#")]),this._v(" 集成类库")])},function(){var t=this.$createElement,e=this._self._c||t;return e("thead",[e("tr",[e("th",[this._v("基础类库集成方案")]),this._v(" "),e("th",[this._v("开源地址")]),this._v(" "),e("th",[this._v("文档")]),this._v(" "),e("th",[this._v("说明")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[this._v("#")]),this._v(" 前提")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("本地windows 10,安装 .net core 2.2+")]),this._v(" "),e("li",[this._v("Linux 服务器 Ubuntu Server 16+")]),this._v(" "),e("li",[this._v("服务器安装了Docker")]),this._v(" "),e("li",[this._v("本地xftp、xshell(这二个分别是windows传文件至linux,执行命令行。)")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"准备"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#准备","aria-hidden":"true"}},[this._v("#")]),this._v(" 准备")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("Bucket中的vant-ui,是创建对象存储时起的名字")]),this._v(" "),e("li",[this._v("PrefixPath中的值,随意字符串,前缀地址。")]),this._v(" "),e("li",[this._v("Host为:融合 CDN 测试域名,可自行绑定自己的域名,否则只有三十天免费使用时长。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"appsettings-json配置项"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#appsettings-json配置项","aria-hidden":"true"}},[this._v("#")]),this._v(" appsettings.json配置项")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' "Qiniu": {\n "AK": "eUH1O-ft66S4XM2GIK7FGmj7czuYkcAyNGDAc-wq",\n "SK": "4dOi1daSr2-YgofhAfWb8JaLrbgozCmgD6AUmmM9",\n "Bucket": "vant-ui",\n "PrefixPath": "ui",\n "Host": "http://pu5vnz60k.bkt.clouddn.com/"\n }\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"安装包"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#安装包","aria-hidden":"true"}},[this._v("#")]),this._v(" 安装包")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("Install-Package MQiniu.Core \n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"代码解读"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#代码解读","aria-hidden":"true"}},[this._v("#")]),this._v(" 代码解读")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' /// \n /// 七牛云上传服务\n /// \n [Route("api/[controller]")]\n [ApiController]\n public class QiniuController : ControllerBase\n {\n private readonly IConfiguration _configuration;\n\n public QiniuController(IConfiguration configuration)\n {\n _configuration = configuration;\n }\n\n /// \n /// 根据后台配置项,得到请求七牛云的token值,前台也可根据此token值上传至七牛云服务\n /// \n /// \n [HttpGet("access_token")]\n public string GetAccessToken()\n {\n Mac mac = new Mac(_configuration["Qiniu:AK"], _configuration["Qiniu:SK"]);\n PutPolicy putPolicy = new PutPolicy { Scope = _configuration["Qiniu:Bucket"] };\n return Auth.CreateUploadToken(mac, putPolicy.ToJsonString());\n }\n\n /// \n /// 上传文件至七牛云,code为200,代表上传成功,其他代表不成功\n /// \n /// 单个文件\n /// new { code = 200, data ="七牛云文件地址,包括http://....mm.png", msg = "上传成功" };\n [HttpPost("upload")]\n public dynamic Upload(IFormFile file)\n {\n if (file.Length == 0)\n {\n return new { code = 1, msg = "文件为空" };\n }\n\n FormUploader upload = new FormUploader(new Config()\n {\n Zone = Zone.ZONE_CN_South,//华南 \n UseHttps = true\n });\n\n var fileName = ContentDispositionHeaderValue\n .Parse(file.ContentDisposition)\n .FileName.Trim();\n\n string qiniuName = _configuration["Qiniu:PrefixPath"] + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + fileName;\n Stream stream = file.OpenReadStream();\n HttpResult result = upload.UploadStream(stream, qiniuName, GetAccessToken(), null);\n\n if (result.Code == 200)\n {\n return new { code = 200, data = _configuration["Qiniu:Host"] + qiniuName, msg = "上传成功" };\n }\n\n return new { code = 1, msg = "上传失败" };\n }\n }\n\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("FormUploader upload = new FormUploader(new Config()\n{\n Zone = Zone.ZONE_CN_South,//华南 \n UseHttps = true\n});\n\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"发布至linux下的docker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#发布至linux下的docker","aria-hidden":"true"}},[this._v("#")]),this._v(" 发布至Linux下的Docker")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://upload-images.jianshu.io/upload_images/2001974-bcd72707e4fcc7f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240",alt:"image"}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("修改项目名为qiniu-web,复制 至linux服务器中,(xftp工具)\n"),e("img",{attrs:{src:"https://upload-images.jianshu.io/upload_images/2001974-48771e9fce281262.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240",alt:"image"}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("root@VM-37-104-ubuntu:/home/ubuntu/"),e("span",{pre:!0,attrs:{class:"token comment"}},[this._v("# sudo su")]),this._v("\nroot@VM-37-104-ubuntu:/home/ubuntu/"),e("span",{pre:!0,attrs:{class:"token comment"}},[this._v("# cd qiniu-web")]),this._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("docker build -t igeekfan/qiniu "),e("span",{pre:!0,attrs:{class:"token keyword"}},[this._v(".")]),this._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[this._v("#生成images")]),this._v("\ndocker run -d -p 5000:80 igeekfan/qiniu "),e("span",{pre:!0,attrs:{class:"token comment"}},[this._v("# 生成 container 并运行在5000端口")]),this._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"运行结果"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行结果","aria-hidden":"true"}},[this._v("#")]),this._v(" 运行结果")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://upload-images.jianshu.io/upload_images/2001974-2b72cc6338db1434.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240",alt:"image.png"}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/17.82fc466d.js b/assets/js/17.82fc466d.js new file mode 100644 index 0000000..236c9c5 --- /dev/null +++ b/assets/js/17.82fc466d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{178:function(t,e,s){"use strict";s.r(e);var r=s(0),n=Object(r.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),s("p",[t._v("浏览左侧导航菜单以深入了解文档.")]),t._v(" "),s("p",[t._v(".NET Core 学习示例文档主要是结合 ASP .NET Core,集成第三方类库的示例,运用基础组件,写好Demo。")]),t._v(" "),t._m(1),t._v(" "),s("p",[t._v("代码托管在GitHub上 "),s("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples"),s("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),s("ul",[s("li",[s("p",[t._v("Microsoft Docs "),s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://docs.microsoft.com/zh-cn"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("其中包含如下")]),t._v(" "),t._m(3)])]),t._v(" "),t._m(4),t._v(" "),s("ul",[s("li",[t._v("Windows 10 (18922.rs_prerelease.190614-1427)")]),t._v(" "),s("li",[t._v(".NET Core 3.0.100-preview6-012264")]),t._v(" "),s("li",[t._v("Visual Studio Code 1.35.1、Microsoft Visual Studio 2019 16.1.3")]),t._v(" "),s("li",[t._v("PowerSheel")]),t._v(" "),s("li",[t._v("MySQL 5.7.25")]),t._v(" "),s("li",[t._v("Navicat Premium 12 "),s("a",{attrs:{href:"http://blog.igeekfan.cn/2018/06/02/%E5%A4%A7%E5%90%8E%E7%AB%AF/Navicat%20Premium%2012%20%20%E7%A0%B4%E8%A7%A3%E7%89%88%E5%85%8D%E8%B4%B9%E4%B8%8B%E8%BD%BD/",target:"_blank",rel:"noopener noreferrer"}},[t._v("欢迎下载"),s("OutboundLink")],1)])]),t._v(" "),t._m(5),t._v(" "),s("p",[t._v("本地开发选择SDK安装即可,还是安装 2.2的吧,3.0(19.6.29)目前还没有发布稳定版本。")]),t._v(" "),t._m(6),t._v(" "),s("p",[t._v("安装后,在 PowerShell 中任一目录查看安装后的版本")]),t._v(" "),t._m(7),t._m(8),t._v(" "),s("p",[t._v("全称:command-line interface,命令行界面,主要是cmd、bash(sh等等)、powershell等。")]),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),s("p",[t._v(".NET Core 项目默认使用最新版本的 .NET Core,在根目录使用PowerShell中执行如下命令,")]),t._v(" "),s("p",[t._v("语法 :dotnet new global.json --sdk-version ")]),t._v(" "),t._m(11),s("p",[t._v("参考")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22",target:"_blank",rel:"noopener noreferrer"}},[t._v("dotnet new 命令行"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/versions/selection?view=dotnet-plat-ext-2.1",target:"_blank",rel:"noopener noreferrer"}},[t._v("选择要使用的 .NET Core 版本"),s("OutboundLink")],1)])]),t._v(" "),t._m(12),t._v(" "),s("p",[t._v(".NET Core是什么? 官网说的太高大上了 https://docs.microsoft.com/zh-cn/dotnet/core/about")]),t._v(" "),s("p",[t._v("总结,.NET Core包含如下")]),t._v(" "),t._m(13),t._v(" "),s("p",[t._v("三个发布包:")]),t._v(" "),t._m(14),t._v(" "),s("p",[t._v("所以本地调试时,可直接安装最全的SDK即可。")]),t._v(" "),t._m(15),t._v(" "),s("p",[t._v("目前 关于此项目的文档放到docs文件夹中,zh-Hans为中文,这样可支持多语言,欢迎翻译PR,之后会发布至")]),t._v(" "),s("ul",[s("li",[t._v("文档官网 "),s("a",{attrs:{href:"https://luoyunchong.github.io/vuepress-docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://luoyunchong.github.io/vuepress-docs/"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("将使用abp vnext 下的modules的"),s("a",{attrs:{href:"https://github.com/abpframework/abp/blob/dev/modules/docs/README.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("docs模块"),s("OutboundLink")],1),t._v("。不过abp vnext 现在也不稳定,0.18.1,还是有各种问题,我还是写基础模块的使用文档吧,后期完善后,发布文档网站。")]),t._v(" "),t._m(16),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),s("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"net-core-学习示例文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-core-学习示例文档","aria-hidden":"true"}},[this._v("#")]),this._v(" .NET Core 学习示例文档")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"源码"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 源码")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"推荐阅读"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#推荐阅读","aria-hidden":"true"}},[this._v("#")]),this._v(" 推荐阅读")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v(".NET Core 指南 https://docs.microsoft.com/zh-cn/dotnet/core/")]),this._v(" "),e("li",[this._v("ASP .NET 文档 https://docs.microsoft.com/zh-cn/aspnet/")]),this._v(" "),e("li",[this._v(".NET Core CLI 文档 https://docs.microsoft.com/zh-cn/dotnet/core/tools/?tabs=netcore2x")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"本地环境说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#本地环境说明","aria-hidden":"true"}},[this._v("#")]),this._v(" 本地环境说明")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"install"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install","aria-hidden":"true"}},[this._v("#")]),this._v(" Install")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("安装这个 "),e("strong",[this._v("https://dotnet.microsoft.com/download/dotnet-core/2.2")])]),this._v(" "),e("li",[this._v("https://dotnet.microsoft.com/download/dotnet-core/3.0")])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"language-PowerShell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" C:\\WINDOWS\\system32> dotnet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("version\n3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("100"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("preview6"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("012264\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 本地安装了好几个.net core sdk版本")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("PS")]),t._v(" C:\\WINDOWS\\system32> dotnet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("--")]),t._v("list"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("sdks\n2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("700 "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("[C:\\Program Files\\dotnet\\sdk]")]),t._v("\n2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("300 "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("[C:\\Program Files\\dotnet\\sdk]")]),t._v("\n3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("100"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("preview6"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("012264 "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("[C:\\Program Files\\dotnet\\sdk]")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"cli"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cli","aria-hidden":"true"}},[this._v("#")]),this._v(" CLI")])},function(){var t=this.$createElement,e=this._self._c||t;return e("blockquote",[e("p",[this._v("说明 "),e("strong",[this._v("所有命令行都在windows10自带的powershell中执行。")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"指定sdk版本"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#指定sdk版本","aria-hidden":"true"}},[this._v("#")]),this._v(" 指定SDK版本")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("dotnet new globaljson --sdk-version 2.2.300\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"net-core"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-core","aria-hidden":"true"}},[this._v("#")]),this._v(" .NET Core")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",[s("li",[t._v("二个RunTime\n"),s("ul",[s("li",[t._v(".NET Core RunTime:基础类型系统 、垃圾回收、基元类型等,")]),t._v(" "),s("li",[t._v("ASP .NET RunTime :提供WEB、LOT等应用程序的框架支持。")])])]),t._v(" "),s("li",[t._v(".NET Core CLI工具:各种命令行工具,创建项目、编译项目,发布项目等;")]),t._v(" "),s("li",[t._v("语言编译器:(支持C#、F#、VB等语言)")]),t._v(" "),s("li",[t._v("dotnet 工具:.NET Core运行时和库的安装程序包")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v(".NET Core 运行时")]),this._v(" "),e("li",[this._v("ASP .NET Core 运行时")]),this._v(" "),e("li",[this._v(".NET Core SDK:包括上面二个内容,再加上 .NET CLI工具等")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"项目文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#项目文档","aria-hidden":"true"}},[this._v("#")]),this._v(" 项目文档")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#说明","aria-hidden":"true"}},[this._v("#")]),this._v(" 说明")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("本项目也是我的学习记录,,用于测试不同类库集成的解决方案,所以用最基础的方案,"),e("strong",[this._v("命令行")]),this._v("来创建项目,引用包,运行,测试等。让自己对 .net core 的原理结构了解地更加深入一些。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("采用的都是 Visual Studio Code/VS2019 +PowerShell运行,关于如何采用Visual Studio 2019创建项目,引用包是非常简单的,不再说明。")])])}],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/18.daa8bb13.js b/assets/js/18.daa8bb13.js new file mode 100644 index 0000000..7dd1fa1 --- /dev/null +++ b/assets/js/18.daa8bb13.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{195:function(t,e,s){"use strict";s.r(e);var n=s(0),a=Object(n.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),s("p",[t._v("认证分为以下情况:当前角色为管理员,该分组配置了权限,该分组未分配某一方法的权限.")]),t._v(" "),s("p",[t._v("状态码(StatusCode):401 UnAuthorized")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),s("p",[t._v("返回结果应为:状态码:401 UNAUTHORIZED")]),t._v(" "),t._m(3),t._m(4),t._v(" "),t._m(5),s("p",[t._v("返回结果应为::状态码:401 UNAUTHORIZED")]),t._v(" "),t._m(6),t._m(7),t._v(" "),t._m(8),t._v(" "),s("p",[t._v("返回结果应为:状态码:200")]),t._v(" "),t._m(9),t._m(10),t._v(" "),s("p",[t._v("返回结果应为:状态码:401 UNAUTHORIZED")]),t._v(" "),t._m(11),t._m(12),t._v(" "),t._m(13),t._m(14),t._v(" "),t._m(15),s("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"认证鉴权状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#认证鉴权状态","aria-hidden":"true"}},[this._v("#")]),this._v(" 认证鉴权状态")])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",[s("thead",[s("tr",[s("th",[t._v("StatusCode")]),t._v(" "),s("th",[t._v("含义")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("401 UnAuthorized")]),t._v(" "),s("td",[t._v("未授权、无权限、未登录")])]),t._v(" "),s("tr",[s("td",[t._v("422 UNPROCESSABLE ENTITY")]),t._v(" "),s("td",[t._v("令牌失效")])]),t._v(" "),s("tr",[s("td",[t._v("200")]),t._v(" "),s("td",[t._v("访问正常")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",[e("li",[this._v("未登录,不带access_token,直接请求需要登录的接口、管理员接口结果一样。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "error_code": 10000,\n "msg": "认证失败,请检查请求头或者重新登陆",\n "request": "GET /cms/admin/authority"\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",{attrs:{start:"2"}},[e("li",[this._v("携带access_token,但非超级管理员(admin字段为2),访问的方法为角色为超管才有权限的方法。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("[LinCmsAuthorize(Roles = LinGroup.Administrator)]\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "error_code": 10000,\n "msg": "只有超级管理员可操作",\n "request": "GET /cms/admin/authority"\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",{attrs:{start:"3"}},[e("li",[this._v("携带access_token ,访问只需要登录的接口(/cms/user/auths)")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("控制器或方法上指定 "),e("strong",[this._v("[Authorize]")]),this._v(" 或 "),e("strong",[this._v("[LinCmsAuthorize]")]),this._v(" 特性标签时,必须登录才能访问,否则返回第一种结果。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "active": 1,\n "admin": 1,\n "auths": [\n {\n "信息": [\n {\n "auth": "查看lin的信息",\n "module": "信息"\n }\n ]\n }\n ],\n "avatar": null,\n "create_time": 1564372600000,\n "email": "acs@acs.com",\n "group_id": 54,\n "id": 112,\n "nickname": "alan",\n "update_time": 1564487059000\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",{attrs:{start:"4"}},[e("li",[this._v("携带access_token,但此用户无访问此方法的权限(即该用户的组别未配置此权限)。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "error_code": 10000,\n "msg": "权限不够,请联系超级管理员获得权限",\n "request": "GET /cms/log/search"\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",{attrs:{start:"5"}},[e("li",[this._v("携带过期的access_token值\n返回结果应为:状态码:401 UNAUTHORIZED")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "error_code": 10050,\n "msg": "令牌过期",\n "request": "GET /cms/admin/users"\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",{attrs:{start:"6"}},[e("li",[this._v("携带不正常的access_token值,后台无法下正常解析出用户信息\n返回结果应为:状态码:422 UNPROCESSABLE ENTITY")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "error_code": 10040,\n "msg": "令牌失效",\n "request": "GET /cms/admin/users"\n}\n')])])])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/19.e7d91a01.js b/assets/js/19.e7d91a01.js new file mode 100644 index 0000000..c756597 --- /dev/null +++ b/assets/js/19.e7d91a01.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{180:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("它是.NET下的一个序列化、反序化的基础类库,更基础的用法还是看别人的吧,这里只说一些遇到的问题。")]),t._v(" "),t._m(1),t._v(" "),a("p",[t._v("ContractResolver 默认是小驼峰,我想改成下划线方式,遇到了一些问题,dictionary的键未格式化")]),t._v(" "),a("p",[t._v("in controller 创建一个控制器")]),t._v(" "),t._m(2),a("p",[t._v("In Startup.cs")]),t._v(" "),t._m(3),a("p",[t._v("此时运行后,得到的是Key,而不是key,我想他的键都变成下划线方式的小写")]),t._v(" "),t._m(4),a("p",[t._v("其他测试,增加多级,测试正常")]),t._v(" "),t._m(5),a("p",[t._v("此时运行后,满足要求,多层结构也不会影响")]),t._v(" "),t._m(6),a("p",[t._v("看了Newtonsoft.Json的github,并在in this repository 搜索Dictionary,看issues中的配置项如下即可满足dictionary的键也转小写,\nProcessDictionaryKeys 功能:A flag indicating whether dictionary keys should be processed. Defaults to false.")]),t._v(" "),t._m(7),t._m(8),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),a("p",[t._v("这里的时间戳是毫秒级别")]),t._v(" "),t._m(12),t._m(13),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/JamesNK/Newtonsoft.Json/issues/2088",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/JamesNK/Newtonsoft.Json/issues/2088"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_Serialization_NamingStrategy_ProcessDictionaryKeys.htm",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_Serialization_NamingStrategy_ProcessDictionaryKeys.htm"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://blog.csdn.net/yw1688/article/details/38492583",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.csdn.net/yw1688/article/details/38492583"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://www.jianshu.com/p/c53b1a2a121d",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.jianshu.com/p/c53b1a2a121d"),a("OutboundLink")],1)])]),t._v(" "),a("RightMenu")],1)},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"newtonsoft-json基础问题"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#newtonsoft-json基础问题","aria-hidden":"true"}},[this._v("#")]),this._v(" Newtonsoft.Json基础问题")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"设置下划线"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#设置下划线","aria-hidden":"true"}},[this._v("#")]),this._v(" 设置下划线")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpGet")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"getDictionary"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" IDictionary"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetDictionary")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n IDictionary"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" dics "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generic-method"}},[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Dictionary")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n dics"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Key"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n dics"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Add")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"KeyTest"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value_Test"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" dics"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[t._v("services\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddMvc")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetCompatibilityVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CompatibilityVersion"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Version_2_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddJsonOptions")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("opt "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 设置下划线方式,首字母是小写")]),t._v("\n opt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("SerializerSettings"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ContractResolver "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultContractResolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n NamingStrategy "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SnakeCaseNamingStrategy")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Key"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"KeyTest"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value_Test"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("HttpGet")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"get"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("dynamic")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Content "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Url"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("Request"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Path"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n NewUrlTest"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test in new url test"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"content"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/test/get"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"new_url_test"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test in new url test"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[t._v("services\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddMvc")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetCompatibilityVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CompatibilityVersion"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Version_2_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddJsonOptions")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("opt "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 设置下划线方式,首字母是小写")]),t._v("\n opt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("SerializerSettings"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ContractResolver "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DefaultContractResolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n NamingStrategy "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SnakeCaseNamingStrategy")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n ProcessDictionaryKeys "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_test"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value_Test"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"实现时间戳"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#实现时间戳","aria-hidden":"true"}},[this._v("#")]),this._v(" 实现时间戳")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("前台要的格式为 "),s("strong",[this._v("1562904163734")]),this._v(",只有一个数字,我搜索了一下,也没找到相关的文档,本身这个类库有一些时间戳,不过他们都包含特殊字符,如/Date(1562904163734)/,好像类似这样,他好像在逗我,为啥他要加Date,怕是有毒吧。看到\n他有Converters属性可配置,即配置自己的序列化返回格式。")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[t._v("services"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddMvc")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetCompatibilityVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("CompatibilityVersion"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Version_2_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddJsonOptions")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("opt "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:MM:ss";')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//设置时间戳格式")]),t._v("\n opt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("SerializerSettings"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Converters "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generic-method"}},[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("List")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonConverter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("LinCmsTimeConverter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// ")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// 配合LinCMS中的时间戳 后台只返回 1562904163734")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// ")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("LinCmsTimeConverter")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTimeConverterBase")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("override")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteJson")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonWriter")]),t._v(" writer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("object")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("value")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonSerializer")]),t._v(" serializer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" javaScriptTicks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("value")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("is")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTime")]),t._v(" dateTime"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n javaScriptTicks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConvertDateTimeInt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dateTime"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("value")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("is")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTimeOffset")]),t._v(" dateTimeOffset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("throw")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonSerializationException")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Expected date object value."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n javaScriptTicks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConvertDateTimeInt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("dateTimeOffset"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ToUniversalTime")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UtcDateTime"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n writer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteValue")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("javaScriptTicks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("override")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("object")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ReadJson")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonReader")]),t._v(" reader"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" objectType"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("object")]),t._v(" existingValue"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonSerializer")]),t._v(" serializer"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConvertIntDateTime")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("Parse")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("reader"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ToString")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// ")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// 日期转换为时间戳(时间戳单位毫秒)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// ")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/// ')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/// ")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTime")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConvertIntDateTime")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" milliseconds"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTime")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1970")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("AddMilliseconds")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("milliseconds"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("ConvertDateTimeInt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTime")]),t._v(" aDt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("aDt "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("DateTime")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1970")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("TotalMilliseconds"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"参考"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])}],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/2.2c132230.js b/assets/js/2.2c132230.js new file mode 100644 index 0000000..f2ca191 --- /dev/null +++ b/assets/js/2.2c132230.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{153:function(t,n,e){},156:function(t,n,e){"use strict";var a=e(153);e.n(a).a},179:function(t,n,e){"use strict";e.r(n);var a={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,n){var e=n.props,a=n.slots;return t("span",{class:["badge",e.type,e.vertical]},e.text||a().default)}},r=(e(156),e(0)),i=Object(r.a)(a,void 0,void 0,!1,null,"97b6395a",null);n.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/20.497d6fd1.js b/assets/js/20.497d6fd1.js new file mode 100644 index 0000000..e9d8d62 --- /dev/null +++ b/assets/js/20.497d6fd1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{181:function(t,e,_){"use strict";_.r(e);var r=_(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,_=t._self._c||e;return _("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),_("p",[t._v("1.什么是cms?")]),t._v(" "),_("p",[t._v("Content Management System,内容管理系统。")]),t._v(" "),_("p",[t._v("2.dotnetcore是什么")]),t._v(" "),_("p",[t._v(".NET Core,是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理,采用宽松的MIT协议,可构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序")]),t._v(" "),_("p",[t._v("3.lin-cms 是什么")]),t._v(" "),_("p",[t._v("Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问前端仓库。官方团队产品了解请访问TaleLin")]),t._v(" "),_("p",[t._v("4.lin-cms-dotnetcore有哪些特点?")]),t._v(" "),_("p",[t._v("前后端分离,提供后端接口,更少的依赖,后续将实现模块化安装与卸载。")]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),_("p",[t._v("BaseType 1 对BaseItem多。")]),t._v(" "),_("p",[t._v("如:标签管理,一个文章下可以设置多个标签,原本需要设计表Tag,字段也大抵为Id,Name,Sort及关联表。\n我们使用BaseType、BaseItem实现。\nBaseType中TypeCode为tag,FullName为标签,id为1时。\nBaseItem中BaseTypeId为1,ItemCode为编码,ItemName为标签。ItemCode为不重复的字符串即可。")]),t._v(" "),_("p",[t._v("另Tag与Article的关联表,需要另设计一个表。")]),t._v(" "),_("p",[t._v("当我们要实现文章类别的下拉,原本需要设计一个表ArticleType,有字段,id,name,sort等。\n我们可以通过BaseType、BaseItem来实现,从而简化这些基础数据。\nBaseType有一条数据,TypeCode为 字符串category、FullName文章类别,BaseItem存多个文章类别(Java、大数据、Python、C#等),编码不同即可。")]),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),t._m(8),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),_("p",[t._v("使用FreeSql实现时,如果二个表之间没有导航属性,是更复杂的。")]),t._v(" "),t._m(15),t._v(" "),_("p",[t._v("扩展实现一个博客,项目地址:"),_("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vue"),_("OutboundLink")],1)]),t._v(" "),_("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源lin-cms-dotnetcore"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源lin-cms-dotnetcore","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源lin-cms-dotnetcore")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("地址:https://github.com/luoyunchong/lin-cms-dotnetcore")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("用户管理、分组管理、分组权限管理、日志系统、文件上传等")]),this._v(" "),e("li",[this._v("更多功能(自定义扩展-模块系统)")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"设计如下"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设计如下","aria-hidden":"true"}},[this._v("#")]),this._v(" 设计如下")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"字典管理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#字典管理","aria-hidden":"true"}},[this._v("#")]),this._v(" 字典管理")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"我原本想实现这样的功能:"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#我原本想实现这样的功能:","aria-hidden":"true"}},[this._v("#")]),this._v(" 我原本想实现这样的功能:")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",[e("li",[this._v("表结构")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"base-type-(字典类别管理)"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#base-type-(字典类别管理)","aria-hidden":"true"}},[this._v("#")]),this._v(" base_type (字典类别管理)")])},function(){var t=this,e=t.$createElement,_=t._self._c||e;return _("table",[_("thead",[_("tr",[_("th",[t._v("字段")]),t._v(" "),_("th",[t._v("类型")]),t._v(" "),_("th",[t._v("备注")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("id")]),t._v(" "),_("td",[t._v("int")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("type_code")]),t._v(" "),_("td",[t._v("varchar(50)")]),t._v(" "),_("td",[t._v("类别编码")])]),t._v(" "),_("tr",[_("td",[t._v("full_name")]),t._v(" "),_("td",[t._v("varchar(50)")]),t._v(" "),_("td",[t._v("全称")])]),t._v(" "),_("tr",[_("td",[t._v("sort_code")]),t._v(" "),_("td",[t._v("int")]),t._v(" "),_("td",[t._v("排序码")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"base-type-(字典管理)"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#base-type-(字典管理)","aria-hidden":"true"}},[this._v("#")]),this._v(" base_type (字典管理)")])},function(){var t=this,e=t.$createElement,_=t._self._c||e;return _("table",[_("thead",[_("tr",[_("th",[t._v("字段")]),t._v(" "),_("th",[t._v("类型")]),t._v(" "),_("th",[t._v("备注")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("id")]),t._v(" "),_("td",[t._v("int")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("base_type_id")]),t._v(" "),_("td",[t._v("int")]),t._v(" "),_("td",[t._v("类别id(关联base_type的id)")])]),t._v(" "),_("tr",[_("td",[t._v("item_code")]),t._v(" "),_("td",[t._v("varchar(50)")]),t._v(" "),_("td",[t._v("字典编码")])]),t._v(" "),_("tr",[_("td",[t._v("item_name")]),t._v(" "),_("td",[t._v("varchar(50)")]),t._v(" "),_("td",[t._v("字典全称")])]),t._v(" "),_("tr",[_("td",[t._v("sort_code")]),t._v(" "),_("td",[t._v("int")]),t._v(" "),_("td",[t._v("排序码")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"但现实总是事与愿违"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#但现实总是事与愿违","aria-hidden":"true"}},[this._v("#")]),this._v(" 但现实总是事与愿违")])},function(){var t=this.$createElement,e=this._self._c||t;return e("blockquote",[e("p",[this._v("后台取文章列表时,想要取出文章对应的分类,手动join时,总觉得join的表会有些奇怪。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("当然还有其他原因,"),e("strong",[this._v("局限性")]),this._v(":")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",[e("li",[this._v("比如使用了这个字典,分类需要增加一个图片字段,就不能满足要求,那怎么办呢,做不了。")]),this._v(" "),e("li",[this._v("比如标签需要实现这个标签下有多少个文章,通过统计也能实现,")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"前端cms"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前端cms","aria-hidden":"true"}},[this._v("#")]),this._v(" 前端cms")])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/21.741dcaf7.js b/assets/js/21.741dcaf7.js new file mode 100644 index 0000000..265a7c0 --- /dev/null +++ b/assets/js/21.741dcaf7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{182:function(t,e,r){"use strict";r.r(e);var i=r(0),s=Object(i.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v("\n😃 A simple and practical CMS implememted by .NET Core 2.2\n"),t._m(1),t._v(" "),t._m(2),t._v(" "),r("p",[t._v("本项目是完全出于个人喜爱,看到Lin-cms有了python,node.js,社区也有人出了"),r("a",{attrs:{href:"https://github.com/ChenJinchuang/lin-cms-tp5",target:"_blank",rel:"noopener noreferrer"}},[t._v("lin-cms-tp5"),r("OutboundLink")],1),t._v("的版本")]),t._v(" "),r("p",[t._v("本项目是 Lin CMS 后端的 "),r("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/",target:"_blank",rel:"noopener noreferrer"}},[t._v(".NET Core 2.2"),r("OutboundLink")],1),t._v("的 实现,")]),t._v(" "),t._m(3),t._v(" "),r("p",[t._v("Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套"),r("strong",[t._v("内容管理系统框架")]),t._v("。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问"),r("a",{attrs:{href:"https://github.com/TaleLin/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[t._v("前端仓库")]),r("OutboundLink")],1),t._v("。官方团队产品了解请访问"),r("a",{attrs:{href:"https://github.com/TaleLin",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[t._v("TaleLin")]),r("OutboundLink")],1)]),t._v(" "),t._m(4),t._v(" "),r("p",[r("a",{attrs:{href:"https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/"),r("OutboundLink")],1)]),t._v(" "),t._m(5),t._v(" "),r("ul",[r("li",[t._v("官方地址 "),r("a",{attrs:{href:"http://face.cms.7yue.pro/#/login",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://face.cms.7yue.pro/#/login"),r("OutboundLink")],1),t._v(" "),t._m(6)]),t._v(" "),r("li",[t._v("本项目swagger地址 "),r("a",{attrs:{href:"http://47.106.80.39:5001/swagger/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://47.106.80.39:5001/swagger/index.html"),r("OutboundLink")],1)])]),t._v(" "),t._m(7),t._v(" "),r("ul",[r("li",[t._v("在原"),r("a",{attrs:{href:"https://github.com/TaleLin/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("开源项目"),r("OutboundLink")],1),t._v("中增加了博客文章、回复、留言板、标签、文章分组管理、插件式功能(还没有)")]),t._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vue"),r("OutboundLink")],1)])]),t._v(" "),t._m(8),t._v(" "),r("p",[t._v("Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。")]),t._v(" "),t._m(9),t._v(" "),r("p",[t._v("这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,")]),t._v(" "),r("p",[t._v("首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 Razor等模板技术。")]),t._v(" "),r("p",[t._v("服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。")]),t._v(" "),r("p",[t._v("但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。")]),t._v(" "),r("p",[t._v("其次,单页面应用程序的体验本身就要好于传统网站。")]),t._v(" "),t._m(10),t._v(" "),r("p",[t._v("Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可")]),t._v(" "),r("p",[t._v("更多关于Lin CMS的介绍请访问"),r("a",{attrs:{href:"http://doc.cms.7yue.pro/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lin CMS线上文档"),r("OutboundLink")],1)]),t._v(" "),t._m(11),t._v(" "),r("p",[t._v("由于 Lin 采用的是前后端分离的架构,所以你至少需要熟悉 C# 和 Vue。")]),t._v(" "),t._m(12),t._v(" "),r("p",[t._v("该项目的Lin 的服务端框架是基于"),r("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/dotnet/core/",target:"_blank",rel:"noopener noreferrer"}},[t._v(".NET Core 2.2"),r("OutboundLink")],1),t._v("构建的,所以如果你比较熟悉Mvc、WebAPI、过滤器等概念,或者是 有.NET Framework中Mvc开发经验,相信你一定很容易写出代码。")]),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),r("p",[t._v("前端需要开发者比较熟悉 Vue 的,另外需要了解 ES6,axios,ElementUi、webpack、Vuex、Vue-Router等等等")]),t._v(" "),t._m(16),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),r("img",{staticClass:"QR-img",attrs:{width:"258",height:"300",src:"https://ae01.alicdn.com/kf/Hed659970c86c4004b42480fe7d7f97acW.jpg"}}),t._v(" "),r("img",{staticClass:"QR-img",staticStyle:{"margin-left":"10px"},attrs:{width:"258",height:"300",src:"https://ae01.alicdn.com/kf/H6c1668c7987a436caae6b19ee6b86af5J.jpg"}}),t._v(" "),t._m(19),t._v(" "),r("p",[t._v("微信搜索:林间有风")]),t._v(" "),r("img",{staticClass:"QR-img",attrs:{src:"https://ae01.alicdn.com/kf/H4e69faac4a834b8a82f54ea05d2dd53av.jpg"}}),t._v(" "),t._m(20),t._v(" "),r("ol",[r("li",[t._v("迁移Mock.Luo项目至lin-cms-dotnetcore,")]),t._v(" "),r("li",[t._v("实现模块化开发,支持基础组件安装与卸载。")]),t._v(" "),r("li",[t._v("实现abp vnext的文档的功能 "),r("a",{attrs:{href:"https://docs.abp.io/en/abp/latest",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://docs.abp.io/en/abp/latest"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("写文档。")])]),t._v(" "),t._m(21),t._v(" "),t._m(22),t._v(" "),r("ul",[r("li",[t._v("GitHub 链接后端接口 "),r("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-dotnetcore",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-dotnetcore"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("管理后台UI "),r("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vue"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("前端UI"),r("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vvlog",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vvlog"),r("OutboundLink")],1)])])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{align:"center"}},[e("a",{attrs:{href:"http://doc.cms.7yue.pro/"}},[e("img",{attrs:{width:"200",src:"https://consumerminiaclprd01.blob.core.chinacloudapi.cn/miniappbackground/sfgmember/lin/left-logo.png"}})]),this._v(" "),e("h1",[this._v("\n Lin CMS .NET Core\n ")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"项目简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#项目简介","aria-hidden":"true"}},[this._v("#")]),this._v(" 项目简介")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://travis-ci.org/luoyunchong/lin-cms-dotnetcore.svg?branch=master",alt:"Build Status"}}),this._v(" "),e("img",{attrs:{src:"https://img.shields.io/badge/.NETCore-2.2.0-3963bc.svg",alt:""}}),this._v(" "),e("img",{attrs:{src:"https://img.shields.io/badge/license-MIT-3963bc.svg",alt:""}}),this._v(" "),e("img",{attrs:{src:"https://img.shields.io/badge/developer-IGeekFan-3963bc.svg",alt:""}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"什么是-lin-cms?"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#什么是-lin-cms?","aria-hidden":"true"}},[this._v("#")]),this._v(" 什么是 Lin CMS?")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"线上文档地址-完善中"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#线上文档地址-完善中","aria-hidden":"true"}},[this._v("#")]),this._v(" 线上文档地址(完善中)")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"线上-demo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#线上-demo","aria-hidden":"true"}},[this._v("#")]),this._v(" 线上 Demo")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("用户名: super")]),this._v(" "),e("li",[this._v("密码: 123456")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"前端"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前端","aria-hidden":"true"}},[this._v("#")]),this._v(" 前端")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"lin-cms-的特点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lin-cms-的特点","aria-hidden":"true"}},[this._v("#")]),this._v(" Lin CMS 的特点")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"lin-cms-是一个前后端分离的-cms-解决方案"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lin-cms-是一个前后端分离的-cms-解决方案","aria-hidden":"true"}},[this._v("#")]),this._v(" Lin CMS 是一个前后端分离的 CMS 解决方案")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"框架本身已内置了-cms-常用的功能"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#框架本身已内置了-cms-常用的功能","aria-hidden":"true"}},[this._v("#")]),this._v(" 框架本身已内置了 CMS 常用的功能")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"所需基础"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#所需基础","aria-hidden":"true"}},[this._v("#")]),this._v(" 所需基础")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"后端-c"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#后端-c","aria-hidden":"true"}},[this._v("#")]),this._v(" 后端 C#")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"后端主要技术"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#后端主要技术","aria-hidden":"true"}},[this._v("#")]),this._v(" 后端主要技术")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[t._v("数据库:FreeSql+MySQL5.6")]),t._v(" "),r("li",[t._v("ASP.NET Core2.2+MVC")]),t._v(" "),r("li",[t._v("简化对象映射:AutoMapper")]),t._v(" "),r("li",[t._v("身份认证框架:IdentityServer4")]),t._v(" "),r("li",[t._v("Json Web令牌:JWT")]),t._v(" "),r("li",[t._v("文档:Swagger")]),t._v(" "),r("li",[t._v("序列化:Newtonsoft.Json")]),t._v(" "),r("li",[t._v("测试框架:Xunit")]),t._v(" "),r("li",[t._v("日志 NLog")]),t._v(" "),r("li",[t._v("简化注入服务:Scrutor")]),t._v(" "),r("li",[t._v("通用扩展方法 Z.ExtensionMethods")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"前端-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前端-2","aria-hidden":"true"}},[this._v("#")]),this._v(" 前端")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"讨论交流"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#讨论交流","aria-hidden":"true"}},[this._v("#")]),this._v(" 讨论交流")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"qq-交流群"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#qq-交流群","aria-hidden":"true"}},[this._v("#")]),this._v(" QQ 交流群")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("林间有风(lin-cms-vue) QQ 群号:643205479")]),this._v(" "),e("li",[this._v(".NET Core搬砖队(lin-cms-dotnetcore) QQ群号:762828442")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"微信公众号"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#微信公众号","aria-hidden":"true"}},[this._v("#")]),this._v(" 微信公众号")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"下个版本开发计划"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#下个版本开发计划","aria-hidden":"true"}},[this._v("#")]),this._v(" 下个版本开发计划")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[t._v("[x] 创建时间、创建人、修改时间、修改人、删除人、删除时间、是否删除(软删除)")]),t._v(" "),r("li",[t._v("[x] 部署")]),t._v(" "),r("li",[t._v("[ ] 系统访问日志、错误日志可视化")]),t._v(" "),r("li",[t._v("[ ] 完善文档")]),t._v(" "),r("li",[t._v("[ ] 重构核心库结构")]),t._v(" "),r("li",[t._v("[ ] 基于lin-cms-vue的基础,将之前Mock.luo项目中的博客迁移过来\n"),r("ul",[r("li",[t._v("[x] 博客随笔发布/编辑/删除")]),t._v(" "),r("li",[t._v("[ ] 留言板")]),t._v(" "),r("li",[t._v("[x] 评论回复、审核、点赞等")]),t._v(" "),r("li",[t._v("[x] 前端展示博客效果")]),t._v(" "),r("li",[t._v("[x] 基础资料 BaseItem")]),t._v(" "),r("li",[t._v("[x] 类别管理 BaseType")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源地址")])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/22.fd0df8ae.js b/assets/js/22.fd0df8ae.js new file mode 100644 index 0000000..0680a63 --- /dev/null +++ b/assets/js/22.fd0df8ae.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{183:function(t,e,r){"use strict";r.r(e);var i=r(0),n=Object(i.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("p",[t._v("有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把他的参数,放入一个集合并缓存起来,以便后面使用此数据用于权限验证。")]),t._v(" "),r("p",[t._v("我们通过反射获取所有控制器下及方法的Attribute。")]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html"),r("OutboundLink")],1)])]),t._v(" "),r("p",[t._v("当然,这个只是部分代码,完整代码请查看最下方开源地址,其中LinCmsAuthorizeAttribute继承AuthorizeAttribute,拥有指定角色权限控制,当Permission未指定时,当过滤器与Authorize功能相同。Module是指模块,即多个权限,属于同一个模块,方便前台展示为树型结构。Permission属性的值不可重复。")]),t._v(" "),t._m(4),t._m(5),t._v(" "),r("p",[t._v("在 LinCms.Web中的Controller,至于为什么Permission为中文,目前的主要原因,此项目用于适配 "),r("a",{attrs:{href:"https://github.com/TaleLin/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lin-CMS-VUE"),r("OutboundLink")],1),t._v("项目,所以于平常我们以某个字符串作为权限名不同,但不须大惊小怪,道理相同。")]),t._v(" "),t._m(6),t._m(7),t._v(" "),r("p",[t._v("in xunit test 项目工程中,开始我们的测试")]),t._v(" "),t._m(8),t._m(9),t._v(" "),r("p",[t._v("可在输出文本中查看,正是我们想要的东西,最后一行,是其他Controller中的内容,而且我们重写了ToString(),所以我们能看到其属性。")]),t._v(" "),t._m(10),t._m(11),t._v(" "),t._m(12),t._m(13),t._v(" "),r("p",[t._v("只有AdminController加了此标签,所以只有一行。")]),t._v(" "),t._m(14),r("p",[t._v('此时Roles为Administrator,Permission及Module都是null,\n这是因为只有AdminController中加了LinGroup.Administrator="Administrator"字符串,在登录过程中,已经给当前登录用户设置了 new Claim(ClaimTypes.Role,user.IsAdmin()?LinGroup.Administrator:user.GroupId.ToString()),即"Administrator,当用户访问AdminController中的方法时,LinCmsAuthorize并没有做相关验证,都是AuthorizeAttribute,实现了固定角色权限的判断及登录的判断。LinCmsAuthorize完成了固定权限设置为不同的动态角色后,判断用户是否拥有此权限。')]),t._v(" "),t._m(15),t._m(16),t._v(" "),r("ul",[r("li",[t._v("c# – 如何在asp. net core rc2中获取控制器的自定义属性 "),r("a",{attrs:{href:"https://codeday.me/bug/20181207/453278.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://codeday.me/bug/20181207/453278.html"),r("OutboundLink")],1)]),t._v(" "),r("li")]),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),r("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"获取控制器及方法特性标签"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#获取控制器及方法特性标签","aria-hidden":"true"}},[this._v("#")]),this._v(" 获取控制器及方法特性标签")])},function(){var t=this.$createElement,e=this._self._c||t;return e("blockquote",[e("p",[this._v(".NET Core 反射获取所有控制器及方法上特定标签.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"lincmsauthorizeattribute是什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lincmsauthorizeattribute是什么","aria-hidden":"true"}},[this._v("#")]),this._v(" LinCmsAuthorizeAttribute是什么")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("其代码非常简单,用于自定义权限验证,通过重写OnAuthorizationAsync方法,实现固定权限可分配给动态角色(也能分配给动态用户)。主要就"),e("strong",[this._v("基于权限的授权")]),this._v("的实现进行研究,实现方法级别的权限验证。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]\npublic class LinCmsAuthorizeAttribute : AuthorizeAttribute, IAsyncAuthorizationFilter\n{\n public string Permission { get; set; }\n public string Module { get; set; }\n\n public LinCmsAuthorizeAttribute()\n {\n\n }\n\n public LinCmsAuthorizeAttribute(string permission,string module)\n {\n Permission = permission;\n Module = module;\n }\n\n public LinCmsAuthorizeAttribute(string permission,string module, string policy) : base(policy)\n {\n Permission = permission;\n Module = module;\n }\n\n public async Task OnAuthorizationAsync(AuthorizationFilterContext context)\n {\n if (Permission == null) return;\n var authorizationService = (IAuthorizationService)context.HttpContext.RequestServices.GetService(typeof(IAuthorizationService));\n var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, null, new OperationAuthorizationRequirement() { Name = Permission });\n if (!authorizationResult.Succeeded)\n {\n context.Result = new ForbidResult();\n }\n }\n\n public override string ToString()\n {\n return $"\\"{base.ToString()}\\",\\"Permission:{Permission}\\",\\"Module:{Module}\\",\\"Roles:{Roles}\\",\\"Policy:{Policy}\\",\\"AuthenticationSchemes:{AuthenticationSchemes}\\"";\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"controller"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controller","aria-hidden":"true"}},[this._v("#")]),this._v(" Controller")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[Route("cms/log")]\n[ApiController]\npublic class LogController : ControllerBase\n{\n private readonly ILogService _logService;\n\n public LogController(ILogService logService)\n {\n _logService = logService;\n }\n\n [HttpGet("users")]\n [LinCmsAuthorize("查询日志记录的用户", "日志")]\n public List GetLoggedUsers([FromQuery]PageDto pageDto)\n {\n return _logService.GetLoggedUsers(pageDto);\n }\n\n \n [HttpGet]\n [LinCmsAuthorize("查询所有日志", "日志")]\n public PagedResultDto GetLogs([FromQuery]LogSearchDto searchDto)\n {\n return _logService.GetLogUsers(searchDto);\n }\n\n [HttpGet("search")]\n [LinCmsAuthorize("搜索日志", "日志")]\n public PagedResultDto SearchLogs([FromQuery]LogSearchDto searchDto)\n {\n return _logService.GetLogUsers(searchDto);\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"测试类获取方法上的特定标签"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#测试类获取方法上的特定标签","aria-hidden":"true"}},[this._v("#")]),this._v(" 测试类获取方法上的特定标签")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("[Fact]\npublic void GetAssemblyMethodsAttributes()\n{\n var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable()\n .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList();\n\n assembly.ForEach(r =>\n {\n foreach (var methodInfo in r.GetMethods())\n {\n foreach (Attribute attribute in methodInfo.GetCustomAttributes())\n {\n if (attribute is LinCmsAuthorizeAttribute linCmsAuthorize)\n {\n _testOutputHelper.WriteLine(linCmsAuthorize.ToString());\n }\n }\n }\n });\n} \n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"方法结果"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#方法结果","aria-hidden":"true"}},[this._v("#")]),this._v(" 方法结果")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询日志记录的用户","Module:日志","Roles:","Policy:","AuthenticationSchemes:"\n"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询所有日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:"\n"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:搜索日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:"\n"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查看lin的信息","Module:信息","Roles:","Policy:","AuthenticationSchemes:"\n\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"获取控制器上特性标签"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#获取控制器上特性标签","aria-hidden":"true"}},[this._v("#")]),this._v(" 获取控制器上特性标签")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('/// \n/// 获取控制器上的LinCmsAuthorizeAttribute\n/// \n/// "LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:"\n[Fact]\npublic void GetControllerAttributes()\n{\n var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable()\n .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList();\n\n assembly.ForEach(d =>\n {\n var linCmsAuthorize = d.GetCustomAttribute();\n if (linCmsAuthorize != null)\n {\n _testOutputHelper.WriteLine(linCmsAuthorize.ToString());\n }\n });\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"controller结果"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controller结果","aria-hidden":"true"}},[this._v("#")]),this._v(" Controller结果")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:"\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("[LinCmsAuthorize(Roles = LinGroup.Administrator)]\npublic class AdminController : ControllerBase\n{\n ...\n}\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[e("a",{attrs:{href:"github.com/luoyunchong/lin-cms-dotnetcore"}},[this._v("github.com/luoyunchong/lin-cms-dotnetcore")])])])}],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/23.bb985633.js b/assets/js/23.bb985633.js new file mode 100644 index 0000000..2928e6b --- /dev/null +++ b/assets/js/23.bb985633.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{184:function(t,e,a){"use strict";a.r(e);var n=a(0),r=Object(n.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("基于ToolGood.Words类库,配合敏感字的文本文件,写的API接口。")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("一共二种方式")]),t._v(" "),t._m(1),t._v(" "),a("p",[t._v("类库配合敏感库")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/toolgood/ToolGood.Words",target:"_blank",rel:"noopener noreferrer"}},[t._v("ToolGood.Words"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("简单用法")]),t._v(" "),t._m(2),a("p",[t._v("配合敏感库文本文件,写的工具类")]),t._v(" "),a("p",[t._v("二个文件放到wwwroot/_Illegal目录下,通过ReplaceStopWords方法调用即可对")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt"),a("OutboundLink")],1)])]),t._v(" "),t._m(3),t._m(4),t._v(" "),a("p",[t._v("方案:通过维护敏感库,循环replace\n大佬分享给我的,稍微改成了从文件中获取敏感字。")]),t._v(" "),t._m(5),t._m(6),t._v(" "),a("p",[t._v("使用FreeSql这个ORM时,全局处理string类型的值,进行敏感词处理。代码在StartUp.cs的构造函数中。")]),t._v(" "),t._m(7),a("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"全局敏感词处理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#全局敏感词处理","aria-hidden":"true"}},[this._v("#")]),this._v(" 全局敏感词处理")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"_1-toolgood-words"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_1-toolgood-words","aria-hidden":"true"}},[this._v("#")]),this._v(" 1.ToolGood.Words")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[Fact]\npublic void IssuesTest_17()\n{\n var illegalWordsSearch = new IllegalWordsSearch();\n string s = "中国|zg人|abc";\n illegalWordsSearch.SetKeywords(s.Split(\'|\'));\n var str = illegalWordsSearch.Replace("我是中美国人厉害中国完美abcddb好的", \'*\');\n\n Assert.Equal("我是中美国人厉害**完美***ddb好的", str);\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('public class ToolGoodUtils\n{\n //敏感库只要这二个文件存在即可\n //本地敏感库缓存-https://github.com/toolgood/ToolGood.Words/tree/master/csharp/ToolGood.Words.Test/_Illegal\n //因为需要上传至github并同步gitee,安全起见,所以未上传至git,需要自行下载并复制\n private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt";\n private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt";\n\n private const string InfoPath = "wwwroot/_Illegal/IllegalInfo.txt";\n private const string BitPath = "wwwroot/_Illegal/IllegalBit.iws";\n\n private static IllegalWordsSearch _search;\n /// \n /// 本地敏感库,文件修改后,重新创建缓存Bit\n /// \n /// \n public static IllegalWordsSearch GetIllegalWordsSearch()\n {\n if (_search == null)\n {\n string ipath = Path.GetFullPath(InfoPath);\n if (File.Exists(ipath) == false)\n {\n _search = CreateIllegalWordsSearch();\n }\n else\n {\n var texts = File.ReadAllText(ipath).Split(\'|\');\n if (new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") !=\n texts[0] ||\n new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") !=\n texts[1]\n )\n {\n _search = CreateIllegalWordsSearch();\n }\n else\n {\n var s = new IllegalWordsSearch();\n s.Load(Path.GetFullPath(BitPath));\n _search = s;\n }\n }\n }\n return _search;\n }\n\n private static IllegalWordsSearch CreateIllegalWordsSearch()\n {\n string[] words1 = File.ReadAllLines(Path.GetFullPath(KeywordsPath), Encoding.UTF8);\n string[] words2 = File.ReadAllLines(Path.GetFullPath(UrlsPath), Encoding.UTF8);\n var words = new List();\n foreach (var item in words1)\n {\n words.Add(item.Trim());\n }\n foreach (var item in words2)\n {\n words.Add(item.Trim());\n }\n\n var search = new IllegalWordsSearch();\n search.SetKeywords(words);\n\n search.Save(Path.GetFullPath(BitPath));\n\n var text = new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") + "|"+ new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");\n File.WriteAllText(Path.GetFullPath(InfoPath), text);\n\n return search;\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"_2-循环使用replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2-循环使用replace","aria-hidden":"true"}},[this._v("#")]),this._v(" 2. 循环使用Replace")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('public static class StopWords\n{\n\n static readonly ConcurrentDictionary FunNlpDataSensitive = new ConcurrentDictionary();\n static readonly ConcurrentDictionary ReplaceNewValue = new ConcurrentDictionary();\n\n private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt";\n private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt";\n\n\n static StopWords()\n {\n LoadDataFromFile();\n }\n\n public static void LoadDataFromFile()\n {\n string words1 = File.ReadAllText(Path.GetFullPath(KeywordsPath), Encoding.UTF8);\n string words2 = File.ReadAllText(Path.GetFullPath(UrlsPath), Encoding.UTF8);\n LoadDataFromText(words1);\n LoadDataFromText(words2);\n }\n\n\n public static void LoadDataFromText(string text)\n {\n int oldcount = FunNlpDataSensitive.Count;\n foreach (string wd in text.Split(\'\\n\'))\n {\n string keykey = wd.Trim().Trim(\'\\r\', \'\\n\').Trim();\n if (string.IsNullOrEmpty(keykey)) continue;\n FunNlpDataSensitive.TryAdd(keykey, true);\n if (ReplaceNewValue.ContainsKey(keykey.Length) == false)\n ReplaceNewValue.TryAdd(keykey.Length, "".PadRight(keykey.Length, \'*\'));\n }\n Console.WriteLine($"敏感词加载完毕,增加数量:{FunNlpDataSensitive.Count - oldcount}");\n }\n\n\n /// \n /// 替换所有敏感词为 *\n /// \n /// \n /// \n public static string ReplaceStopWords(this string that)\n {\n foreach (var wd in FunNlpDataSensitive.Keys)\n that = that.Replace(wd, ReplaceNewValue.TryGetValue(wd.Length, out var tryval) ? tryval : "".PadRight(wd.Length, \'*\'));\n return that;\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"freesql全局处理敏感词"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freesql全局处理敏感词","aria-hidden":"true"}},[this._v("#")]),this._v(" FreeSql全局处理敏感词")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("//敏感词处理\nIllegalWordsSearch illegalWords = ToolGoodUtils.GetIllegalWordsSearch();\n\nFsql.Aop.AuditValue += (s, e) =>\n{\n if (e.Column.CsType == typeof(string) && e.Value != null)\n {\n string oldVal = (string)e.Value;\n string newVal = illegalWords.Replace(oldVal);\n //第二种处理敏感词的方式\n //string newVal = oldVal.ReplaceStopWords();\n if (newVal != oldVal)\n {\n e.Value = newVal;\n }\n }\n};\n")])])])}],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/24.70f91dc9.js b/assets/js/24.70f91dc9.js new file mode 100644 index 0000000..5b9df97 --- /dev/null +++ b/assets/js/24.70f91dc9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{185:function(e,t,s){"use strict";s.r(t);var n=s(0),r=Object(n.a)({},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[e._m(0),e._v(" "),s("p",[e._v("官网介绍")]),e._v(" "),s("p",[s("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2"),s("OutboundLink")],1)]),e._v(" "),e._m(1),e._v(" "),s("ul",[s("li",[e._v("开源地址"),s("a",{attrs:{href:"https://github.com/khellang/Scrutor",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/khellang/Scrutor"),s("OutboundLink")],1)]),e._v(" "),s("li",[e._v("参考文档 "),s("a",{attrs:{href:"https://www.cnblogs.com/catcher1994/p/10316928.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.cnblogs.com/catcher1994/p/10316928.html"),s("OutboundLink")],1),e._v("\n手动管理依赖注入过于麻烦,当有多个仓储,服务,无法统一注入,Scrutor能帮助我们简化ASP.NET Core的DI注册。")])]),e._v(" "),s("p",[e._v("在ConfigServices中,我们原本需要这样子依次注入仓储,服务和其他接口及实现,当有多个仓储时,这样就过于繁琐。")]),e._v(" "),e._m(2),e._m(3),e._v(" "),s("p",[e._v("当我们有多个Service后缀的服务时,使用以下方法,可将服务扫描只留下以Serivce结尾的类,将其类型注册为提供所有公共接口生成服务,其生命周期为Transient,")]),e._v(" "),e._m(4),e._m(5),e._v(" "),s("p",[e._v("新建一个空接口,当其他类继承此接口后,统一注入到DI中,以Transient的生命周期。")]),e._v(" "),e._m(6),e._m(7),e._v(" "),e._m(8),e._m(9),e._v(" "),e._m(10),s("p",[e._v("扫描所有继承ITransientDependency的实现。")]),e._v(" "),e._m(11),e._m(12),e._v(" "),s("p",[e._v("在其他类中使用此接口")]),e._v(" "),e._m(13),e._m(14),e._v(" "),s("p",[e._v("当然,我们可以统一注入,而非写二次servics.Scan")]),e._v(" "),e._m(15),s("RightMenu")],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",{attrs:{id:"依赖注入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#依赖注入","aria-hidden":"true"}},[this._v("#")]),this._v(" 依赖注入")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"scrutor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#scrutor","aria-hidden":"true"}},[this._v("#")]),this._v(" Scrutor")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v("services.AddTransient();\nservices.AddTransient();\nservices.AddTransient();\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"serivce后缀服务注入di"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serivce后缀服务注入di","aria-hidden":"true"}},[this._v("#")]),this._v(" Serivce后缀服务注入DI")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v('services.Scan(scan => scan\n //加载Startup这个类所在的程序集\n .FromAssemblyOf()\n // 表示要注册那些类,上面的代码还做了过滤,只留下了以 Service 结尾的类\n .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service", StringComparison.OrdinalIgnoreCase)))\n //表示将类型注册为提供其所有公共接口作为服务\n .AsImplementedInterfaces()\n //表示注册的生命周期为 Transient\n .WithTransientLifetime()\n );\n\n')])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"itransientdependency"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#itransientdependency","aria-hidden":"true"}},[this._v("#")]),this._v(" ITransientDependency")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v("namespace LinCms.Zero.Dependency\n{\n public interface ITransientDependency\n {\n }\n}\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"接口"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#接口","aria-hidden":"true"}},[this._v("#")]),this._v(" 接口")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v("public interface ICurrentUser\n{\n int? Id { get; }\n\n int? GroupId { get; }\n\n bool? IsAdmin { get; }\n}\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"模拟实现"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#模拟实现","aria-hidden":"true"}},[this._v("#")]),this._v(" 模拟实现")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v(" public class CurrentUser : ICurrentUser, ITransientDependency\n {\n \n public int? Id => 1;\n public int? GroupId => 2;\n public bool? IsAdmin => true;\n }\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v(" services.Scan(scan => scan\n // We start out with all types in the assembly of ITransientService\n .FromAssemblyOf()\n // AddClasses starts out with all public, non-abstract types in this assembly.\n // These types are then filtered by the delegate passed to the method.\n // In this case, we filter out only the classes that are assignable to ITransientService.\n .AddClasses(classes => classes.AssignableTo())\n // We then specify what type we want to register these classes as.\n // In this case, we want to register the types as all of its implemented interfaces.\n // So if a type implements 3 interfaces; A, B, C, we'd end up with three separate registrations.\n .AsImplementedInterfaces()\n // And lastly, we specify the lifetime of these registrations.\n .WithTransientLifetime()\n );\n\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"如何使用"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何使用","aria-hidden":"true"}},[this._v("#")]),this._v(" 如何使用")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v('[ApiController]\n[Route("cms/user")]\npublic class UserController : ControllerBase\n{\n private readonly ICurrentUser _currentUser;\n\n public UserController(ICurrentUser currentUser)\n {\n _currentUser = currentUser;\n }\n\n [HttpGet]\n public int GetUser()\n {\n return _currentUser.Id;\n }\n}\n')])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"统一注入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#统一注入","aria-hidden":"true"}},[this._v("#")]),this._v(" 统一注入")])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v('services.Scan(scan => scan\n .FromAssemblyOf()\n .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service",StringComparison.OrdinalIgnoreCase)))\n .AsImplementedInterfaces()\n .WithTransientLifetime()\n .FromAssemblyOf()\n .AddClasses(classes => classes.AssignableTo())\n .AsImplementedInterfaces()\n .WithTransientLifetime()\n );\n')])])])}],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/25.68611935.js b/assets/js/25.68611935.js new file mode 100644 index 0000000..2da3806 --- /dev/null +++ b/assets/js/25.68611935.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{186:function(e,t,r){"use strict";r.r(t);var s=r(0),a=Object(s.a)({},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"content"},[e._m(0),e._v(" "),e._m(1),e._v(" "),r("p",[e._v("无")]),e._v(" "),e._m(2),e._v(" "),e._m(3),e._v(" "),r("ul",[r("li",[r("p",[r("a",{attrs:{href:"https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("主要在介绍FreeSql在ASP.NTE Core WebApi中如何使用的过程,完成一个最简单的博客系统的后端接口"),r("OutboundLink")],1)])]),e._v(" "),r("li",[r("p",[r("a",{attrs:{href:"https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("本文使用ASP .NET Core的WEB API,构建一个RESTful风格的接口,使用Freesql访问MySQL数据库,实现二个表的简单博客,并集成AutoMapper。"),r("OutboundLink")],1)])])]),e._v(" "),e._m(4),e._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"/dotnetcore/examples/IdentityServer4.html"}},[e._v("IdentityServer4 在本项目中的应用")])],1)]),e._v(" "),r("RightMenu")],1)},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",{attrs:{id:"开发起步"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#开发起步","aria-hidden":"true"}},[this._v("#")]),this._v(" 开发起步")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"项目结构"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#项目结构","aria-hidden":"true"}},[this._v("#")]),this._v(" 项目结构")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"类库使用介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#类库使用介绍","aria-hidden":"true"}},[this._v("#")]),this._v(" 类库使用介绍")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h3",{attrs:{id:"freesql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#freesql","aria-hidden":"true"}},[this._v("#")]),this._v(" FreeSql")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h3",{attrs:{id:"identityserver4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#identityserver4","aria-hidden":"true"}},[this._v("#")]),this._v(" IdentityServer4")])}],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/26.c4af03ef.js b/assets/js/26.c4af03ef.js new file mode 100644 index 0000000..c8e1499 --- /dev/null +++ b/assets/js/26.c4af03ef.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{188:function(t,e,s){"use strict";s.r(e);var r=s(0),a=Object(r.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),s("ul",[s("li",[t._v("安装软件开发包 "),s("a",{attrs:{href:"https://dotnet.microsoft.com/download/dotnet-core/2.2",target:"_blank",rel:"noopener noreferrer"}},[t._v(".NET Core SDK 2.2"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("安装开发工具 "),s("a",{attrs:{href:"https://visualstudio.microsoft.com/zh-hans/vs/?rr=https%3A%2F%2Fcn.bing.com%2F",target:"_blank",rel:"noopener noreferrer"}},[t._v("Visual Studio 2019"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("安装MySQL(version: 5.6+,别装8.0+,未测试)")])]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._m(4),t._v(" "),s("p",[t._v("文件位置src/LinCms.Web/appsettings.json,当数据库中存储表情包是,Charset为utf8mb4")]),t._v(" "),t._m(5),t._v(" "),t._m(6),t._m(7),t._v(" "),s("p",[t._v("该项目使用"),s("a",{attrs:{href:"https://github.com/2881099/FreeSql",target:"_blank",rel:"noopener noreferrer"}},[t._v("FreeSql"),s("OutboundLink")],1),t._v(",默认自动迁移数据表结构,"),s("strong",[t._v("需要自己创建数据库,名字为LinCms")]),t._v(",无须用户操作,但无数据,而且只有访问到表时才会创建某个表,所以用户可将"),s("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-dotnetcore/blob/master/docs/sql/lincms.sql",target:"_blank",rel:"noopener noreferrer"}},[t._v("备份SQL"),s("OutboundLink")],1),t._v("放到Mysql中生成,还原表结构及数据。")]),t._v(" "),t._m(8),t._v(" "),s("p",[t._v("使用vscode打开项目,")]),t._v(" "),t._m(9),t._v(" "),t._m(10),t._m(11),t._v(" "),t._m(12),t._m(13),t._v(" "),t._m(14),s("p",[t._v("这时候打开 https://localhost:5001/swagger/index.html,即可看到swagger页面。")]),t._v(" "),t._m(15),t._v(" "),s("p",[t._v("双击lin-cms-dotnetcore.sln即可使用vs2019打开项目。右键解决方案,点击生成解决方案,然后,再单击LinCms .Web,即可自动启动后台服务。")]),t._v(" "),t._m(16),t._v(" "),s("p",[t._v("会打开浏览器,访问"),s("a",{attrs:{href:"https://localhosst:5001/swagger/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://localhosst:5001/swagger/index.html"),s("OutboundLink")],1),t._v(",会看到swagger的文档。")]),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Ubuntu/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Ubuntu/"),s("OutboundLink")],1)])]),t._v(" "),t._m(19),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/"),s("OutboundLink")],1)])]),t._v(" "),s("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"后端准备"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#后端准备","aria-hidden":"true"}},[this._v("#")]),this._v(" 后端准备")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"server-端必备环境"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-端必备环境","aria-hidden":"true"}},[this._v("#")]),this._v(" Server 端必备环境")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"获取工程项目"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#获取工程项目","aria-hidden":"true"}},[this._v("#")]),this._v(" 获取工程项目")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[this._v("git")]),this._v(" clone https://github.com/luoyunchong/lin-cms-dotnetcore.git\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"数据库配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#数据库配置","aria-hidden":"true"}},[this._v("#")]),this._v(" 数据库配置")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("strong",[this._v("请务必根据自己的实际情况修改此配置项")])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ConnectionStrings"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Default"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=LinCms;Charset=utf8;SslMode=none;Max pool size=10"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"数据迁移"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#数据迁移","aria-hidden":"true"}},[this._v("#")]),this._v(" 数据迁移")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"_1-vscode命令行运行"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_1-vscode命令行运行","aria-hidden":"true"}},[this._v("#")]),this._v(" 1.vscode命令行运行")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"切换到lincms-web目录"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#切换到lincms-web目录","aria-hidden":"true"}},[this._v("#")]),this._v(" 切换到LinCms.Web目录")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(" D:\\code\\github\\lin-cms-dotnetcore> cd src\\LinCms.Web\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"编译、安装依赖包"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#编译、安装依赖包","aria-hidden":"true"}},[this._v("#")]),this._v(" 编译、安装依赖包")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("D:\\code\\github\\lin-cms-dotnetcore\\src\\LinCms.Web> dotnet build\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"运行"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行","aria-hidden":"true"}},[this._v("#")]),this._v(" 运行")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("D:\\code\\github\\lin-cms-dotnetcore\\src\\LinCms.Web> dotnet run watch\nNow listening on: https://localhost:5001\nNow listening on: http://localhost:5000\nApplication started. Press Ctrl+C to shut down.\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"_2-visual-studio-2019运行"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2-visual-studio-2019运行","aria-hidden":"true"}},[this._v("#")]),this._v(" 2.visual studio 2019运行")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://ae01.alicdn.com/kf/H70086026eaca4dc8ab4806ee1d07443bP.jpg",alt:""}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://ae01.alicdn.com/kf/He52bc4d3708242d2995419bb584e1f53Q.jpg",alt:""}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"部署至linux-ubuntu16-06"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署至linux-ubuntu16-06","aria-hidden":"true"}},[this._v("#")]),this._v(" 部署至linux(Ubuntu16.06)")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"部署至docker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署至docker","aria-hidden":"true"}},[this._v("#")]),this._v(" 部署至Docker")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/27.a3860a2a.js b/assets/js/27.a3860a2a.js new file mode 100644 index 0000000..1209b06 --- /dev/null +++ b/assets/js/27.a3860a2a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{189:function(t,e,r){"use strict";r.r(e);var n=r(0),a=Object(n.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html"),r("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),r("p",[t._v("IdentityServer4")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/jasonsong2008/article/details/89226705",target:"_blank",rel:"noopener noreferrer"}},[t._v("ASP.NET Core WebAPI JWT Bearer 认证失败返回自定义数据 Json"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://www.cnblogs.com/stulzq/p/8119928.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("IdentityServer4 中文文档与实战"),r("OutboundLink")],1)])]),t._v(" "),t._m(3),t._v(" "),r("p",[t._v("json web token")]),t._v(" "),r("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"认证与授权"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#认证与授权","aria-hidden":"true"}},[this._v("#")]),this._v(" 认证与授权")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("主要就"),e("strong",[this._v("基于权限的授权")]),this._v("的实现进行研究,实现方法级别的权限验证。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"认证鉴权相关"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#认证鉴权相关","aria-hidden":"true"}},[this._v("#")]),this._v(" 认证鉴权相关")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"jwt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#jwt","aria-hidden":"true"}},[this._v("#")]),this._v(" JWT")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/28.72cdef32.js b/assets/js/28.72cdef32.js new file mode 100644 index 0000000..008aed1 --- /dev/null +++ b/assets/js/28.72cdef32.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{190:function(t,_,v){"use strict";v.r(_);var e=v(0),r=Object(e.a)({},function(){var t=this,_=t.$createElement,v=t._self._c||_;return v("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),v("p",[t._v("0 成功")]),t._v(" "),v("p",[t._v("999 服务器未知错误")]),t._v(" "),v("p",[t._v("9999 失败")]),t._v(" "),v("p",[t._v("10000 认证失败")]),t._v(" "),v("p",[t._v("10020 资源不存在")]),t._v(" "),v("p",[t._v("10030 参数错误")]),t._v(" "),v("p",[t._v("10040 令牌失效")]),t._v(" "),v("p",[t._v("10050 令牌过期")]),t._v(" "),v("p",[t._v("10060 字段重复")]),t._v(" "),v("p",[t._v("10070 禁止操作")]),t._v(" "),v("p",[t._v("10080 请求方法不允许")]),t._v(" "),v("p",[t._v("10100 refresh token 获取失败")]),t._v(" "),v("p",[t._v("10110 文件体积过大")]),t._v(" "),v("p",[t._v("10120 文件数量过多")]),t._v(" "),v("p",[t._v("10130 文件扩展名不符合规范")]),t._v(" "),v("p",[t._v("10140 请求过于频繁,请稍后重试")]),t._v(" "),v("RightMenu")],1)},[function(){var t=this.$createElement,_=this._self._c||t;return _("h1",{attrs:{id:"code"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#code","aria-hidden":"true"}},[this._v("#")]),this._v(" code")])},function(){var t=this.$createElement,_=this._self._c||t;return _("h2",{attrs:{id:"核心库内置已使用状态码"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#核心库内置已使用状态码","aria-hidden":"true"}},[this._v("#")]),this._v(" 核心库内置已使用状态码")])}],!1,null,null,null);_.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/29.ddaee10b.js b/assets/js/29.ddaee10b.js new file mode 100644 index 0000000..ebaa547 --- /dev/null +++ b/assets/js/29.ddaee10b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{191:function(t,e,i){"use strict";i.r(e);var _=i(0),s=Object(_.a)({},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),i("p",[t._v("将评论分为二级,第一级采用时间倒序,二级按照时间正序,有助于理解上下文关系。")]),t._v(" "),i("p",[t._v("用户操作:")]),t._v(" "),t._m(2),t._v(" "),i("p",[t._v("运营操作:")]),t._v(" "),t._m(3),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),i("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"产品设计-评论模块的设计"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#产品设计-评论模块的设计","aria-hidden":"true"}},[this._v("#")]),this._v(" 产品设计-评论模块的设计")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"主题式"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#主题式","aria-hidden":"true"}},[this._v("#")]),this._v(" 主题式")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("评论随笔(内容支持超链接、emoji)")]),this._v(" "),e("li",[this._v("点赞评论/取消点赞")]),this._v(" "),e("li",[this._v("回复评论")]),this._v(" "),e("li",[this._v("删除自己的评论")])])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",[i("li",[t._v("审核通过/拉黑评论")]),t._v(" "),i("li",[t._v("删除任何评论")]),t._v(" "),i("li",[t._v("拉黑后的显示逻辑。(保留当前区块、显示内容为:该评论因违规被拉黑)")]),t._v(" "),i("li",[t._v("删除:(如果是二级评论,直接软删除,如果是一级评论,软删除子评论和当前评论-需要提前提醒用户)\n交互设计")]),t._v(" "),i("li",[t._v("评论的字数长度(500)、emoji。")]),t._v(" "),i("li",[t._v("点赞交互-动画、消息通知/推送")]),t._v(" "),i("li",[t._v("评论区域元素,需要有明确可点击的区域,会跳转到哪个地方。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"优化"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#优化","aria-hidden":"true"}},[this._v("#")]),this._v(" 优化")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("精选评论")])])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/3.a31eb318.js b/assets/js/3.a31eb318.js new file mode 100644 index 0000000..f381e8a --- /dev/null +++ b/assets/js/3.a31eb318.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{155:function(n,t,e){},162:function(n,t,e){"use strict";var o=e(155);e.n(o).a},167:function(n,t,e){"use strict";e.r(t);var o={functional:!0,props:{text:String},render:function(n,t){var e=t.props,o=t.slots;return n("span",{class:["blue"]},e.text||o().default)}},s=(e(162),e(0)),r=Object(s.a)(o,void 0,void 0,!1,null,"b47fce12",null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/30.f53cb48a.js b/assets/js/30.f53cb48a.js new file mode 100644 index 0000000..934d12c --- /dev/null +++ b/assets/js/30.f53cb48a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{192:function(t,e,i){"use strict";i.r(e);var _=i(0),r=Object(_.a)({},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),t._m(8),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),i("p",[t._v("分为三种")]),t._v(" "),t._m(14),t._m(15),t._v(" "),t._m(16),t._v(" "),t._m(17),t._m(18),t._v(" "),i("ul",[i("li",[t._v("后端接口 "),i("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-dotnetcore",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-dotnetcore"),i("OutboundLink")],1)]),t._v(" "),i("li",[t._v("管理后台UI "),i("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vue"),i("OutboundLink")],1)]),t._v(" "),i("li",[t._v("前端UI"),i("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vvlog",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vvlog"),i("OutboundLink")],1)])]),t._v(" "),i("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"功能模块的设计"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#功能模块的设计","aria-hidden":"true"}},[this._v("#")]),this._v(" 功能模块的设计")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"基础权限模块"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#基础权限模块","aria-hidden":"true"}},[this._v("#")]),this._v(" 基础权限模块")])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",[i("li",[t._v("用户信息:邮件、用户名(唯一)、昵称、头像、分组、是否激活、手机号、是否是Admin、个性签名\n"),i("ul",[i("li",[t._v("[x] 注册/登录")]),t._v(" "),i("li",[t._v("[x] 上传头像")]),t._v(" "),i("li",[t._v("[x] 修改密码")]),t._v(" "),i("li",[t._v("用户基本信息修改")]),t._v(" "),i("li",[t._v("[x] 配置分组")]),t._v(" "),i("li",[t._v("第三方账号绑定/登录")])])]),t._v(" "),i("li",[t._v("绑定信息:功能(QQ快速登录,GitHub快速登录)。")]),t._v(" "),i("li",[t._v("分组信息:是否静态分组(无法删除,无法修改分组编码)、名称可以修改\n"),i("ul",[i("li",[t._v("[x] 分组增删改")]),t._v(" "),i("li",[t._v("[x] 组别配置权限")])])]),t._v(" "),i("li",[t._v("文件管理\n"),i("ul",[i("li",[t._v("[x] 本地文件上传")]),t._v(" "),i("li",[t._v("七牛云存储")]),t._v(" "),i("li",[t._v("文件去重,秒传")])])]),t._v(" "),i("li",[t._v("[x] 系统日志:请求方法、路径、http返回码、时间、用户昵称、用户id、访问哪个权限、 日志信息\n"),i("ul",[i("li",[t._v("记录系统请求的日志")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"cms-管理员维护模块"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cms-管理员维护模块","aria-hidden":"true"}},[this._v("#")]),this._v(" cms 管理员维护模块")])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",[i("li",[t._v("[x] 标签管理:名称、图片,是否启用/禁用,排序、文章数量、用户关注数量。\n"),i("ul",[i("li",[t._v("[x] 标签增删改")]),t._v(" "),i("li",[t._v("[x] 标签列表,禁用")])])]),t._v(" "),i("li",[t._v("随笔管理:\n"),i("ul",[i("li",[t._v("审核随笔/拉黑")])])]),t._v(" "),i("li",[t._v("评论管理\n"),i("ul",[i("li",[t._v("后台审核通过/拉黑")]),t._v(" "),i("li",[t._v("管理员删除评论")])])]),t._v(" "),i("li",[t._v("字典管理\n"),i("ul",[i("li",[t._v("[x] 字典类别管理")]),t._v(" "),i("li",[t._v("[x] 字典管理:如随笔类型(原创、转载、翻译)")])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"cms-用户端模块"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cms-用户端模块","aria-hidden":"true"}},[this._v("#")]),this._v(" cms 用户端模块")])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",[i("li",[t._v("分类专栏管理:发布随笔时可选择单个分类。\n"),i("ul",[i("li",[t._v("[x] 分类增删改(随笔数量、图片、名称、排序)")]),t._v(" "),i("li",[t._v("[x] 分类列表,仅查看、编辑自己创建的分类专栏")])])]),t._v(" "),i("li",[t._v("标签:统计每个标签下多少个文章、多少人关注\n"),i("ul",[i("li",[t._v("[x] 标签列表")]),t._v(" "),i("li",[t._v("[x] 无限加载")]),t._v(" "),i("li",[t._v("[x] 最新/最热 根据名称模糊查询")]),t._v(" "),i("li",[t._v("我关注的标签")])])]),t._v(" "),i("li",[t._v("随笔\n"),i("ul",[i("li",[t._v("[x] 支持markdown,增删改(仅自己的随笔),修正分类专栏中的随笔数量")]),t._v(" "),i("li",[t._v("[x] 列表无限加载,按标签查询随笔")]),t._v(" "),i("li",[t._v("[x] 点赞随笔")]),t._v(" "),i("li",[t._v("随笔详情页\n"),i("ul",[i("li",[t._v("[x] 支持目录导航(滚动时,固定至顶部位置),展示字数统计、预计阅读时长;")]),t._v(" "),i("li",[t._v("[x] 作者介绍:头像,昵称,签名,随笔数;")]),t._v(" "),i("li",[t._v("[x] 展示文章类型:原创、转载、翻译")]),t._v(" "),i("li",[t._v("相关文章")]),t._v(" "),i("li",[t._v("推荐文章")])])])])]),t._v(" "),i("li",[t._v("评论\n"),i("ul",[i("li",[t._v("评论随笔(内容支持超链接、emoji)")]),t._v(" "),i("li",[t._v("[x] 删除自己的评论")]),t._v(" "),i("li",[t._v("[x] 点赞评论")]),t._v(" "),i("li",[t._v("[x] 回复评论")])])]),t._v(" "),i("li",[t._v("关注\n"),i("ul",[i("li",[t._v("关注/取消关注用户")]),t._v(" "),i("li",[t._v("关注/取消关注标签")]),t._v(" "),i("li")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"个人主页"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#个人主页","aria-hidden":"true"}},[this._v("#")]),this._v(" 个人主页")])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",[i("li",[t._v("用户专栏分类展示")]),t._v(" "),i("li",[t._v("最新发布、最热的随笔")]),t._v(" "),i("li",[t._v("关注的人/标签")]),t._v(" "),i("li",[t._v("粉丝")]),t._v(" "),i("li",[t._v("个人主页详细页:设置个人资料,绑定邮件,")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"更多"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#更多","aria-hidden":"true"}},[this._v("#")]),this._v(" 更多")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("消息通知:如点赞随笔,评论随笔、点赞评论、回复评论后的消息通知。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"脑图分享"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#脑图分享","aria-hidden":"true"}},[this._v("#")]),this._v(" 脑图分享")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://camo.githubusercontent.com/49d4fca8ccfef50fb7a2f3106e6be05c4a82b887/68747470733a2f2f706963322e73757065726265642e636e2f6974656d2f3564643366363838386530653265336565393330663435382e706e67",alt:"image"}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"分组"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#分组","aria-hidden":"true"}},[this._v("#")]),this._v(" 分组")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("id name info\n1\tAdmin\t 系统管理员\n2\tCmsAdmin\t内容管理员\n3\tUser\t 普通用户\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"审计日志"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#审计日志","aria-hidden":"true"}},[this._v("#")]),this._v(" 审计日志")])},function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("p",[t._v("大多数表存在如下8个字段,用于记录行的变化状态,is_deleted为软删除,执行删除操作时,将其状态置为true,默认实体类继承 "),i("strong",[t._v("FullAduitEntity")]),t._v(" 即可拥有以下8个字段。该设计参考ABP中的实现。FullAduitEntity为泛型,默认id为long类型,FullAduitEntity,即可改变主键类型,默认LinUser表主键long,保持"),i("strong",[t._v("create_user_id")]),t._v(","),i("strong",[t._v("delete_user_id")]),t._v(","),i("strong",[t._v("update_user_id")]),t._v("都与LinUser的主键相同")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("\nid\t bigint\ncreate_user_id \tbigint\ncreate_time\t datetime\nis_deleted\t bit\ndelete_user_id \tbigint\ndelete_time\t datetime\nupdate_user_id\t bigint\nupdate_time\t datetime\n\n\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"lin-cms-开源地址分享"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lin-cms-开源地址分享","aria-hidden":"true"}},[this._v("#")]),this._v(" lin-cms 开源地址分享")])}],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/31.7b7b19ea.js b/assets/js/31.7b7b19ea.js new file mode 100644 index 0000000..5e15040 --- /dev/null +++ b/assets/js/31.7b7b19ea.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{193:function(t,e,n){"use strict";n.r(e);var i=n(0),s=Object(i.a)({},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),n("p",[t._v("使用SPA+.NET Core3.1实现 GitHub第三方授权登录 类似使用AspNet.Security.OAuth.GitHub,前端使用如下:VUE+Vue-Router+axios")]),t._v(" "),t._m(1),t._v(" "),n("ul",[n("li",[t._v("GitHub "),n("a",{attrs:{href:"https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers"),n("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),n("p",[t._v("什么配置的过程不说了。。有一推。")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://www.jianshu.com/p/78d186aeb526",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub 第三方登录"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://juejin.im/post/5dfb04cee51d45583a66c2f3",target:"_blank",rel:"noopener noreferrer"}},[t._v("给你的网站添加第三方登录以及短信验证功能"),n("OutboundLink")],1)])]),t._v(" "),n("p",[t._v("下面为示例")]),t._v(" "),t._m(3),n("p",[t._v("Get")]),t._v(" "),t._m(4),n("p",[t._v("会重定向到")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://localhost:5001/signin-github?code=07537a84d12bbae08361",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://localhost:5001/signin-github?code=07537a84d12bbae08361"),n("OutboundLink")],1)]),t._v(" "),n("p",[t._v("这个code放到下面的请求中,获取access_token\nPOST方式(PostMan去请求)")]),t._v(" "),t._m(5),n("p",[t._v("Get方式")]),t._v(" "),t._m(6),n("p",[t._v("然后就能获取用户信息")]),t._v(" "),t._m(7),t._m(8),t._v(" "),n("p",[t._v("以下代码为主要代码,完整代码看下面的DEMO链接。")]),t._v(" "),n("p",[t._v("使用WebApi时,看了一些项目,全是基于MVC结构的,都不是我想要的。看了一些博客上面介绍 ,步骤都是千篇一律,都是配合前后端分离的。")]),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),n("p",[t._v("本地测试时,gitHub回调地址设置 http(s)😕/ip:端口/signin-github")]),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),n("p",[n("a",{attrs:{href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-3.1",target:"_blank",rel:"noopener noreferrer"}},[t._v("google-登录,微软文档"),n("OutboundLink")],1),t._v(",其中有一个"),n("strong",[t._v("更改默认回调 URI")]),t._v(",通过 AddGitHub中的CallbackPath属性配置。")]),t._v(" "),n("p",[t._v("介绍了回调地址应配置signin-google,所以这里应该是signin-github,他是可以配置的,不需要自己写程序处理signin-google这个路由,内部有中间件已经处理了。")]),t._v(" "),t._m(16),t._v(" "),n("p",[t._v("具体上面的根据code获取access_token,根据access_token获取用户的信息的过程,这些处理的过程,都不需要我们自己处理。我们可以用直接获取用户信息。")]),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),n("p",[t._v("这个url为另一个获取用户信息的路由,只要拼接好地址即可。")]),t._v(" "),t._m(19),n("p",[t._v("需要注入")]),t._v(" "),t._m(20),t._m(21),t._v(" "),n("p",[t._v("打开NuGet包管理,安装包")]),t._v(" "),t._m(22),n("p",[t._v("appSettings.json")]),t._v(" "),t._m(23),n("p",[t._v("add扩展方法")]),t._v(" "),t._m(24),n("p",[t._v("默认情况下,如头像,email,是没有获取的。")]),t._v(" "),t._m(25),n("p",[t._v("startup.cs")]),t._v(" "),n("p",[t._v("ConfigureServices中配置此服务")]),t._v(" "),t._m(26),n("p",[t._v("创建AuthenticationController.cs\n增加SignIn,用于处理用户授权成功后,重定回signin-callback,并将参数带回。")]),t._v(" "),t._m(27),n("p",[t._v("在signin方法中,用户点击授权后(第一次),会根据其传递的URL,重定向到这个地址,signin-callback,参数也会一同携带。provider为GitHub,redirectUrl为:http://localhost:8081/login-result.")]),t._v(" "),t._m(28),n("p",[t._v("这时候我们能获取用户信息了。那么前端怎么办呢。我们写个方法,获取用户信息,看看效果。")]),t._v(" "),t._m(29),t._v(" "),t._m(30),n("p",[t._v("我记得之前传Token时,后台是可以这样获取的。")]),t._v(" "),t._m(31),n("p",[t._v("LoginResult.vue在created生命周期中。都是得到null")]),t._v(" "),t._m(32),t._m(33),t._v(" "),n("p",[t._v("因为前后端分离,不是基于Cookies的。http是无状态的。每次请求无法区分用户的。我们可以根据当前的ClaimsPrincipal,根据JWT生成相应的Token,axios请求时,放到headers中。")]),t._v(" "),n("p",[t._v("安装包")]),t._v(" "),t._m(34),n("p",[t._v("AppSettings.json配置改成")]),t._v(" "),t._m(35),n("p",[t._v("AddJwtConfiguration改成如下内容")]),t._v(" "),t._m(36),n("p",[n("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/blob/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2/spa-vue-oauth2/src/components/LoginResult.vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("前端LoginResult.vue代码"),n("OutboundLink")],1)]),t._v(" "),n("p",[t._v("前端运行")]),t._v(" "),t._m(37),n("p",[t._v("点击GitHub登录")]),t._v(" "),n("p",[t._v("GetOpenIdByToken根据生成的token值,解析出了用户id,这样前端在login-result这个组件中,把token保存好,并重定向自己的主页,获取用户所有信息即可。")]),t._v(" "),t._m(38),n("p",[t._v("OpenId?provider=GitHub则得不到数据,只能浏览器直接请求https://localhost:5001/OpenId?provider=GitHub,才能到github 的id。这个适应于前后端不分离,或者属于之前我们经常使用MVC结构,同一域名下,同一端口,基于Cookies登录的判断。")]),t._v(" "),t._m(39),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://www.cnblogs.com/rsls/p/10522649.html",target:"_blank",rel:"noopener noreferrer"}},[t._v(".net Core2.2 WebApi通过OAuth2.0实现微信登录"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://blog.csdn.net/weixin_30414305/article/details/101389325",target:"_blank",rel:"noopener noreferrer"}},[t._v("AspNetCore3.0 和 JWT"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"http://www.woshipm.com/pd/509712.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("用户系统设计:第三方授权、账号绑定及解绑(下)"),n("OutboundLink")],1)])]),t._v(" "),t._m(40),t._v(" "),n("ul",[n("li",[t._v("GitHub "),n("a",{attrs:{href:"https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2"),n("OutboundLink")],1),t._v(" "),n("RightMenu")],1)])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"github第三方授权登录"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#github第三方授权登录","aria-hidden":"true"}},[this._v("#")]),this._v(" GitHub第三方授权登录")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"aspnet-security-oauth-github"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#aspnet-security-oauth-github","aria-hidden":"true"}},[this._v("#")]),this._v(" AspNet.Security.OAuth.GitHub")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"github授权登录"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#github授权登录","aria-hidden":"true"}},[this._v("#")]),this._v(" GitHub授权登录")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("client_id:0be6b05fc717bfc4fb67\nclient_secret:dcaced9f176afba64e89d88b9b06ffc4a887a609\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("https://github.com/login/oauth/authorize?client_id=0be6b05fc717bfc4fb67&redirect_uri=https://localhost:5001/signin-github\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("https://github.com/login/oauth/access_token?client_id=0be6b05fc717bfc4fb67&client_secret=dcaced9f176afba64e89d88b9b06ffc4a887a609&code=07537a84d12bbae08361\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("https://api.github.com/user?access_token=787506afa3271d077b98f18af56d7cfdc8db43b4\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('{\n "login": "luoyunchong",\n "id": 18613266,\n "node_id": "MDQ6VXNlcjE4NjEzMjY2",\n "avatar_url": "https://avatars1.githubusercontent.com/u/18613266?v=4",\n "gravatar_id": "",\n "url": "https://api.github.com/users/luoyunchong",\n "html_url": "https://github.com/luoyunchong",\n "followers_url": "https://api.github.com/users/luoyunchong/followers",\n "following_url": "https://api.github.com/users/luoyunchong/following%7B/other_user%7D",\n "gists_url": "https://api.github.com/users/luoyunchong/gists%7B/gist_id%7D",\n "starred_url": "https://api.github.com/users/luoyunchong/starred%7B/owner%7D%7B/repo%7D",\n "subscriptions_url": "https://api.github.com/users/luoyunchong/subscriptions",\n "organizations_url": "https://api.github.com/users/luoyunchong/orgs",\n "repos_url": "https://api.github.com/users/luoyunchong/repos",\n "events_url": "https://api.github.com/users/luoyunchong/events%7B/privacy%7D",\n "received_events_url": "https://api.github.com/users/luoyunchong/received_events",\n "type": "User",\n "site_admin": false,\n "name": "IGeekFan",\n "company": null,\n "blog": "https://blog.igeekfan.cn/",\n "location": null,\n "email": "luoyunchong@foxmail.com",\n "hireable": null,\n "bio": "学习之路漫漫无期。",\n "public_repos": 14,\n "public_gists": 0,\n "followers": 16,\n "following": 11,\n "created_at": "2016-04-22T10:33:44Z",\n "updated_at": "2019-12-21T14:49:33Z"\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"net-core3-1"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-core3-1","aria-hidden":"true"}},[this._v("#")]),this._v(" .NET Core3.1")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("前端运行在:http://localhost:8081")]),this._v(" "),e("li",[this._v("后端运行在:https://localhost:5001")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"前后端分离的spa-配合第三方授权登录流程如下"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前后端分离的spa-配合第三方授权登录流程如下","aria-hidden":"true"}},[this._v("#")]),this._v(" 前后端分离的SPA 配合第三方授权登录流程如下")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("如: https://localhost:5001/signin-github。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"_1-上面这个明明填写的后端的地址,那后端怎么把结果通知前端呢?"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_1-上面这个明明填写的后端的地址,那后端怎么把结果通知前端呢?","aria-hidden":"true"}},[this._v("#")]),this._v(" 1. 上面这个明明填写的后端的地址,那后端怎么把结果通知前端呢?")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("前端请求"),e("strong",[this._v("https://localhost:5001/signin?provider=GitHub&redirectUrl=http://localhost:8080/login-result")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("提供参数provider为GitHub,")]),this._v(" "),e("li",[this._v("redirectUrl为GitHub授权登录后,回调signin-github后,后端再去重定向的地址,这里填前端的一个路由。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"_2-后端只提供了signin,signin-callback路由,没有signin-github,那github上配置的路由是怎么回调回来呢?"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2-后端只提供了signin,signin-callback路由,没有signin-github,那github上配置的路由是怎么回调回来呢?","aria-hidden":"true"}},[this._v("#")]),this._v(" 2. 后端只提供了signin,signin-callback路由,没有signin-github,那github上配置的路由是怎么回调回来呢?")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"_3-回调到signin-github后,后端怎么处理,才能让前端刷新。获取登录后的信息呢。"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_3-回调到signin-github后,后端怎么处理,才能让前端刷新。获取登录后的信息呢。","aria-hidden":"true"}},[this._v("#")]),this._v(" 3. 回调到signin-github后,后端怎么处理,才能让前端刷新。获取登录后的信息呢。")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("一个方法SignIn,只要"),e("strong",[this._v("return Challenge(properties, provider);")]),this._v(",")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("provider 为 GitHub,")]),this._v(" "),e("li",[this._v("properties var properties = new AuthenticationProperties { RedirectUri = url };")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);\nstring email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value;\nstring name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value;\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("private readonly IHttpContextAccessor _contextAccessor;\npublic AuthenticationController( IHttpContextAccessor contextAccessor)\n{\n _contextAccessor = contextAccessor;\n}\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"代码部署(简化)"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#代码部署(简化)","aria-hidden":"true"}},[this._v("#")]),this._v(" 代码部署(简化)")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("Install-Package AspNet.Security.OAuth.GitHub\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('"Authentication": {\n "GitHub": {\n "ClientId": "0be6b05fc717bfc4fb67",\n "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609"\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('public static class JwtConfiguration\n{\n public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration)\n {\n\n services.AddAuthentication(opts =>\n {\n opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;\n }).AddCookie(options =>\n {\n options.LoginPath = "/signin";\n options.LogoutPath = "/signout";\n }).AddGitHub(options =>\n {\n options.ClientId = configuration["Authentication:GitHub:ClientId"];\n options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];\n });\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('.AddGitHub(options =>\n{\n options.ClientId = configuration["Authentication:GitHub:ClientId"];\n options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];\n //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github\n options.Scope.Add("user:email");\n //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value; 得到GitHub头像\n options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");\n options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio");\n options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog");\n});\n\n#其中LinConsts类为静态常量\npublic static class LinConsts\n{\n public static class Claims\n {\n public const string BIO = "urn:github:bio";\n public const string AvatarUrl = "urn:github:avatar_url";\n public const string BlogAddress = "urn:github:blog";\n }\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(" services.AddSingleton();\n services.AddJwtConfiguration(Configuration);\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' private readonly IHttpContextAccessor _contextAccessor;\n private readonly IConfiguration _configuration;\n\n public AuthenticationController(IHttpContextAccessor contextAccessor, IConfiguration configuration)\n {\n _contextAccessor = contextAccessor;\n _configuration = configuration;\n }\n \n [HttpGet("~/signin")]\n public async Task SignIn(string provider, string redirectUrl)\n {\n var request = _contextAccessor.HttpContext.Request;\n var url =\n $"{request.Scheme}://{request.Host}{request.PathBase}{request.Path}-callback?provider={provider}&redirectUrl={redirectUrl}";\n var properties = new AuthenticationProperties { RedirectUri = url };\n properties.Items["LoginProviderKey"] = provider;\n return Challenge(properties, provider);\n\n }\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[HttpGet("~/signin-callback")]\npublic async Task Home(string provider = null, string redirectUrl = "")\n{\n var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);\n if (!authenticateResult.Succeeded) return Redirect(redirectUrl);\n var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier);\n if (openIdClaim == null || string.IsNullOrWhiteSpace(openIdClaim.Value))\n return Redirect(redirectUrl);\n\n //TODO 记录授权成功后的信息 \n\n string email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value;\n string name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value;\n string gitHubName = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Name)?.Value;\n string gitHubUrl = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Url)?.Value;\n //startup 中 AddGitHub配置项 options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");\n string avatarUrl = authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value;\n\n return Redirect($"{redirectUrl}?openId={openIdClaim.Value}");\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("浏览器直接打开能得到github的id。")]),this._v(" "),e("li",[this._v("axios GET请求 https://localhost:5001/OpenId 得到null")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[HttpGet("~/OpenId")]\npublic async Task OpenId(string provider = null)\n{\n var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);\n if (!authenticateResult.Succeeded) return null;\n var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier);\n return openIdClaim?.Value;\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('[HttpGet("~/GetOpenIdByToken")]\npublic string GetOpenIdByToken()\n{\n return User.FindFirst(ClaimTypes.NameIdentifier)?.Value;\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('axios({\n methods: "get",\n url: "https://localhost:5001/OpenId?provider=GitHub"\n})\n .then(function(response) {\n // handle success\n console.log(response);\n })\n\naxios({\n methods: "get",\n url: "https://localhost:5001/GetOpenIdByToken"\n})\n .then(function(response) {\n // handle success\n console.log(response);\n })\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"为什么呢???"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#为什么呢???","aria-hidden":"true"}},[this._v("#")]),this._v(" 为什么呢???")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("Install-Package Microsoft.AspNetCore.Authentication.JwtBearer\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('"Authentication": {\n"JwtBearer": {\n "SecurityKey": "JWTStudyWebsite_DI20DXU3",\n "Issuer": "JWTStudy",\n "Audience": "JWTStudyWebsite"\n},\n"GitHub": {\n "ClientId": "0be6b05fc717bfc4fb67",\n "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609"\n}\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration)\n{\n\n services.AddAuthentication(opts =>\n {\n opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;\n }).AddCookie(options =>\n {\n options.LoginPath = "/signin";\n options.LogoutPath = "/signout";\n }).AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>\n {\n options.Audience = configuration["Authentication:JwtBearer:Audience"];\n\n options.TokenValidationParameters = new TokenValidationParameters\n {\n // The signing key must match!\n ValidateIssuerSigningKey = true,\n IssuerSigningKey = new SymmetricSecurityKey(\n Encoding.ASCII.GetBytes(configuration["Authentication:JwtBearer:SecurityKey"])),\n\n // Validate the JWT Issuer (iss) claim\n ValidateIssuer = true,\n ValidIssuer = configuration["Authentication:JwtBearer:Issuer"],\n\n // Validate the JWT Audience (aud) claim\n ValidateAudience = true,\n ValidAudience = configuration["Authentication:JwtBearer:Audience"],\n\n // Validate the token expiry\n ValidateLifetime = true,\n\n // If you want to allow a certain amount of clock drift, set that here\n //ClockSkew = TimeSpan.Zero\n };\n }).AddGitHub(options =>\n {\n options.ClientId = configuration["Authentication:GitHub:ClientId"];\n options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];\n //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github\n options.Scope.Add("user:email");\n //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value; 得到GitHub头像\n options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");\n options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio");\n options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog");\n });\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("yarn install\nyarn serve\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('data: 18613266\nstatus: 200\nconfig: {url: "https://localhost:5001/GetOpenIdByToken"}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考","aria-hidden":"true"}},[this._v("#")]),this._v(" 参考")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"demo-示例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#demo-示例","aria-hidden":"true"}},[this._v("#")]),this._v(" Demo 示例")])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/32.c3b644c7.js b/assets/js/32.c3b644c7.js new file mode 100644 index 0000000..18bea38 --- /dev/null +++ b/assets/js/32.c3b644c7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{194:function(t,e,r){"use strict";r.r(e);var n=r(0),s=Object(n.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/luoyunchong/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/lin-cms-vue"),r("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),r("ul",[r("li",[t._v("介绍 "),r("a",{attrs:{href:"http://doc.cms.7yue.pro/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://doc.cms.7yue.pro/"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("前端 "),r("a",{attrs:{href:"http://doc.cms.7yue.pro/lin/client/s",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://doc.cms.7yue.pro/lin/client/"),r("OutboundLink")],1)])]),t._v(" "),t._m(3),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"http://face.cms.7yue.pro/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://face.cms.7yue.pro/"),r("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),r("ul",[r("li",[r("p",[t._v("后端swagger地址 "),r("a",{attrs:{href:"http://47.106.80.39:7000/swagger/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://47.106.80.39:7000/swagger/index.html"),r("OutboundLink")],1)])]),t._v(" "),r("li",[r("p",[t._v("用户端 lin-cms-vvlog "),r("a",{attrs:{href:"http://47.106.80.39:8080/index",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://47.106.80.39:8080/index"),r("OutboundLink")],1)]),t._v(" "),t._m(5)]),t._v(" "),r("li",[r("p",[t._v("管理员 lin-cms-vue "),r("a",{attrs:{href:"http://47.106.80.39:8081/#/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://47.106.80.39:8081/#/"),r("OutboundLink")],1)]),t._v(" "),t._m(6)])]),t._v(" "),t._m(7),t._v(" "),r("p",[t._v("开发必备")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://nodejs.org/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Node.js 10+"),r("OutboundLink")],1),t._v(" 版本即可,我须安装12.7")]),t._v(" "),r("li",[r("a",{attrs:{href:"https://yarnpkg.com/zh-Hant/docs/install#windows-stable",target:"_blank",rel:"noopener noreferrer"}},[t._v("yarn"),r("OutboundLink")],1)])]),t._v(" "),r("p",[t._v("如果以下命令有问题,请删除yarn.lock,node_modules文件夹后,重新执行yarn,yarn serve")]),t._v(" "),t._m(8),t._m(9),t._v(" "),r("p",[t._v("scp2方便快速发布,一行命令就能快速发布成功。")]),t._v(" "),r("p",[t._v("必备条件:(参数)")]),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),r("p",[t._v("根目录新建deploy目录,创建index.js文件。")]),t._v(" "),t._m(12),r("p",[t._v("快速发布,需要安装 scp2")]),t._v(" "),t._m(13),r("p",[t._v("package.json中增加")]),t._v(" "),t._m(14),t._m(15),t._m(16),t._v(" "),t._m(17),t._v(" "),t._m(18),t._m(19),t._v(" "),t._m(20),t._v(" "),r("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"前端准备"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前端准备","aria-hidden":"true"}},[this._v("#")]),this._v(" 前端准备")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"开源地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开源地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 开源地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"文档地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#文档地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 文档地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"官方预览地址"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#官方预览地址","aria-hidden":"true"}},[this._v("#")]),this._v(" 官方预览地址")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"线上-demo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#线上-demo","aria-hidden":"true"}},[this._v("#")]),this._v(" 线上 Demo")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("普通用户:710277267@qq.com")]),this._v(" "),e("li",[this._v("密码:123qwe")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("管理员: admin")]),this._v(" "),e("li",[this._v("密码:123qwe")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"快速上手"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#快速上手","aria-hidden":"true"}},[this._v("#")]),this._v(" 快速上手")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("# clone the project\ngit clone https://github.com/luoyunchong/lin-cms-vue.git\n\n# install dependency\nyarn\n\n# develop\nyarn serve\n\n# deploy\nyarn deploy\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"deploy-发布"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-发布","aria-hidden":"true"}},[this._v("#")]),this._v(" deploy 发布")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[t._v("一台linux的服务器,ip")]),t._v(" "),r("li",[t._v("用户名")]),t._v(" "),r("li",[t._v("密码")]),t._v(" "),r("li",[t._v("端口:默认是22")]),t._v(" "),r("li",[t._v("发布的地址。这里放到/var/www/lin-cms-vue目录中。")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#步骤","aria-hidden":"true"}},[this._v("#")]),this._v(" 步骤")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v('\'use strict\'\n// 引入scp2模块\nvar client = require(\'scp2\');\nconst ora = require(\'ora\')\nconst chalk = require(\'chalk\')\nconst spinner = ora(\'正在发布到生产服务器...\')\nspinner.start()\nclient.scp(\'dist/\', {\n "host": "",\n "username": "",\n "password": "",\n "port": "22",\n "path": "/var/www/lin-cms-vue"\n}, function (err) {\n spinner.stop()\n if (!err) {\n console.log("npm run build-scp2: scp2工具上传完毕,远端服务路径:/var/www/lin-cms-vue")\n } else {\n console.log("err", err)\n }\n})\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("cnpm install scp2\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' "scripts": {\n "deploy": "yarn build:production && node ./deploy",\n}\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("yarn deploy\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"nginx-配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nginx-配置","aria-hidden":"true"}},[this._v("#")]),this._v(" nginx 配置")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("vue 使用history的配置")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("server {\n listen 8080;\n root /var/www/lin-cms-vue;\n\n charset utf-8;\n location / {\n try_files $uri $uri/ /index.html; \n\n }\n \n error_page 500 502 503 504 /50x.html;\n location = /50x.html {\n root html;\n }\n\n}\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"配置项"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#配置项","aria-hidden":"true"}},[this._v("#")]),this._v(" 配置项")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ol",[e("li",[e("p",[this._v("配置 api 地址: 打开配置文件 src/config/index.js 配置 baseUrl ,本地开发阶段配置本地虚拟域名(https://localhost:5001/),线上部署生产域名。")])]),this._v(" "),e("li",[e("p",[this._v("用户名:"),e("strong",[this._v("super")]),this._v(" 密码 "),e("strong",[this._v("123456")])])])])}],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/33.6564e7fd.js b/assets/js/33.6564e7fd.js new file mode 100644 index 0000000..6cd6456 --- /dev/null +++ b/assets/js/33.6564e7fd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{166:function(t,e,s){"use strict";s.r(e);var r=s(0),a=Object(r.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),s("p",[t._v("项目使用vuepress,其可专注于文档构建")]),t._v(" "),s("ul",[s("li",[t._v("该项目的文档是基于此项目 "),s("a",{attrs:{href:"https://github.com/vanoneang/blog",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/vanoneang/blog"),s("OutboundLink")],1)])]),t._v(" "),t._m(1),t._v(" "),s("p",[s("a",{attrs:{href:"https://github.com/luoyunchong/vuepress-docs",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/luoyunchong/vuepress-docs"),s("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/vuejs/vuepress",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/vuejs/vuepress"),s("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://luoyunchong.github.io/vuepress-docs",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://luoyunchong.github.io/vuepress-docs/"),s("OutboundLink")],1)])]),t._v(" "),t._m(5),t._v(" "),s("p",[t._v("Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架,前后端分离的完整解决方案。")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/TaleLin/lin-cms-vue",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/TaleLin/lin-cms-vue"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("与本项目的关系:本项目和Lin-CMS的文档的样式效果是一样的,所以文档构建中包含“林间有风团队” 出品,意思是指UI主题来自其团队。")]),t._v(" "),t._m(6),t._v(" "),s("p",[t._v("前提")]),t._v(" "),t._m(7),t._v(" "),s("p",[t._v("最好是安装yarn "),s("a",{attrs:{href:"https://yarnpkg.com/lang/zh-hans/docs/install/#windows-stable",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://yarnpkg.com/lang/zh-hans/docs/install/#windows-stable"),s("OutboundLink")],1)]),t._v(" "),t._m(8),t._v(" "),t._m(9),s("p",[t._v("如果不能正常运行,就删除 yarn.lock、node_modules文件夹,再重新执行上面的命令")]),t._v(" "),t._m(10),t._v(" "),t._m(11),t._m(12),t._v(" "),s("p",[t._v("发布至github pages 中的gh-pages分支")]),t._v(" "),t._m(13),s("p",[t._v(".sh 也不懂,关键我本地是windows,不能正常执行,git bash 也许可以")]),t._v(" "),t._m(14),t._v(" "),s("p",[t._v("package.json有这些命令")]),t._v(" "),t._m(15),s("p",[t._v("所以我们可以 yarn dev或yarn build\n其他的,暂时还不会跑")]),t._v(" "),s("p",[t._v("bash无法推送\nssh: connect to host github.com port 22: No route to host\nfatal: Could not read from remote repository.")]),t._v(" "),t._m(16),s("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#简介","aria-hidden":"true"}},[this._v("#")]),this._v(" 简介")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"文档源码"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#文档源码","aria-hidden":"true"}},[this._v("#")]),this._v(" 文档源码")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"vuepress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#vuepress","aria-hidden":"true"}},[this._v("#")]),this._v(" vuepress")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("该采用"),e("code",[this._v("vuepress")]),this._v("搭建,内置"),e("code",[this._v("md")]),this._v(",可以采用"),e("code",[this._v("vue")]),this._v("语法,vue作者出品")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"完整文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#完整文档","aria-hidden":"true"}},[this._v("#")]),this._v(" 完整文档")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"lincms"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lincms","aria-hidden":"true"}},[this._v("#")]),this._v(" LinCMS")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"如何构建运行"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#如何构建运行","aria-hidden":"true"}},[this._v("#")]),this._v(" 如何构建运行")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[this._v("node.js")]),this._v(" "),e("li",[this._v("yarn或npm")]),this._v(" "),e("li",[this._v("vuepress")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"安装依赖包,开发运行"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#安装依赖包,开发运行","aria-hidden":"true"}},[this._v("#")]),this._v(" 安装依赖包,开发运行")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("PS D:\\code\\github\\vuepress-docs>yarn install\nPS D:\\code\\github\\vuepress-docs>yarn dev\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"生成发布包"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#生成发布包","aria-hidden":"true"}},[this._v("#")]),this._v(" 生成发布包")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-ps1 extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("PS D:\\code\\github\\vuepress-docs>yarn build \n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"发布"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#发布","aria-hidden":"true"}},[this._v("#")]),this._v(" 发布")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-ps1 extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("PS D:\\code\\github\\vuepress-docs>.\\deploy.ps1\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"package-json介绍"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#package-json介绍","aria-hidden":"true"}},[this._v("#")]),this._v(" package.json介绍")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v(' "scripts": {\n "dev": "node bin/vuepress dev docs",\n "build": "node bin/vuepress build docs",\n "lint": "eslint --fix --ext .js,.vue bin/ lib/ test/",\n "deploy-gh": "yarn build && bash scripts/deploy-gh.sh",\n "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s",\n "release": "bash scripts/release.sh",\n "test": "node test/prepare.js && jest --config test/jest.config.js"\n },\n')])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[this._v("yarn deploy-gh\n")])])])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/4.06774d68.js b/assets/js/4.06774d68.js new file mode 100644 index 0000000..3aa9429 --- /dev/null +++ b/assets/js/4.06774d68.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{154:function(t,n,a){},157:function(t,n,a){"use strict";var e=a(154);a.n(e).a},165:function(t,n,a){"use strict";a.r(n);var e={functional:!0,props:{text:String,status:{type:String,default:"enable"}},render:function(t,n){var a=n.props;return t("div",{class:["btn",a.status]},a.text)}},s=(a(157),a(0)),r=Object(s.a)(e,void 0,void 0,!1,null,"58baaab4",null);n.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/5.82af18d5.js b/assets/js/5.82af18d5.js new file mode 100644 index 0000000..ad987a7 --- /dev/null +++ b/assets/js/5.82af18d5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{163:function(n,w,o){}}]); \ No newline at end of file diff --git a/assets/js/6.7b20ecca.js b/assets/js/6.7b20ecca.js new file mode 100644 index 0000000..6960690 --- /dev/null +++ b/assets/js/6.7b20ecca.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{175:function(t,n,e){"use strict";e.r(n);var s=e(0),c=Object(s.a)({},function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"content"})},[],!1,null,null,null);n.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/7.b71ef550.js b/assets/js/7.b71ef550.js new file mode 100644 index 0000000..f28be60 --- /dev/null +++ b/assets/js/7.b71ef550.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{174:function(t,e,r){"use strict";r.r(e);var a=r(0),i=Object(a.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/weilanwl/ColorUI",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/weilanwl/ColorUI"),r("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),r("p",[t._v("* 这是一个css库,相比其他vant-weapp、mpvue都是不一样的,非组件化,主要定位我觉得是美化主题,非组件化,支持uni-app、mpvue,可结合vant-weapp一起使用。")]),t._v(" "),t._m(3),t._v(" "),r("p",[t._v("很简单,官方还没出文档,使用起来,需要开发者自行去看main.css,打开手机看小程序的demo,然后再去找项目源码,我觉得太麻烦,不知道其他人的感受如何。")]),t._v(" "),r("RightMenu")],1)},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"colorui"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#colorui","aria-hidden":"true"}},[this._v("#")]),this._v(" ColorUI")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"github"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#github","aria-hidden":"true"}},[this._v("#")]),this._v(" github")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"特点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#特点","aria-hidden":"true"}},[this._v("#")]),this._v(" 特点")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"该文档作用"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#该文档作用","aria-hidden":"true"}},[this._v("#")]),this._v(" 该文档作用")])}],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/8.8cdfa53b.js b/assets/js/8.8cdfa53b.js new file mode 100644 index 0000000..c2d5c84 --- /dev/null +++ b/assets/js/8.8cdfa53b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{173:function(t,n,s){"use strict";s.r(n);var c=s(0),a=Object(c.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this.$createElement,n=this._self._c||t;return n("div",{staticClass:"content"},[n("h1",{attrs:{id:"button-按钮"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#button-按钮","aria-hidden":"true"}},[this._v("#")]),this._v(" Button 按钮")]),this._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[this._v('\n\n\n')])])]),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[this._v('.cu-btn \n.cu-btn::after\n.cu-btn:not([class*="bg-"]) \n.cu-btn[class*="line"] \n.cu-btn[class*="line"]::after\n.cu-btn.round[class*="line"]::after \n.cu-btn[class*="lines"]::after \n.cu-btn[class*="bg-"]::after \n.cu-btn.sm \n.cu-btn.lg \n.cu-btn.cuIcon.sm \n.cu-btn.cuIcon \nbutton.cuIcon.lg \n.cu-btn.shadow-blur::before \n.cu-btn.button-hover \n.block \n.cu-btn.block \n.cu-btn[disabled] \n')])])]),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[this._v(".cu-bar.btn-group\n.cu-bar.btn-group button\n.cu-bar.btn-group button\n")])])])])}],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/9.c05b688d.js b/assets/js/9.c05b688d.js new file mode 100644 index 0000000..36a4628 --- /dev/null +++ b/assets/js/9.c05b688d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{172:function(e,n,t){"use strict";t.r(n);var l=t(0),i=Object(l.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this.$createElement,n=this._self._c||e;return n("div",{staticClass:"content"},[n("h1",{attrs:{id:"text-文本"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#text-文本","aria-hidden":"true"}},[this._v("#")]),this._v(" Text 文本")]),this._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[this._v(".text-xs \n.text-sm \n.text-df \n.text-lg \n.text-xl \n.text-xxl \n.text-sl \n.text-xsl \n.text-Abc \n.text-ABC \n.text-abc \n.text-price::before \n.text-cut \n.text-bold \n.text-center \n.text-content \n.text-left \n.text-right\n.text-red\n.line-red\n.lines-red \n.text-orange\n.line-orange\n.lines-orange\n.text-yellow\n.line-yellow\n.lines-yellow \n.text-olive\n.line-olive\n.lines-olive\n.text-green\n.line-green\n.lines-green \n.text-cyan\n.line-cyan\n.lines-cyan \n.text-blue\n.line-blue\n.lines-blue \n.text-purple\n.line-purple\n.lines-purple \n.text-mauve\n.line-mauve\n.lines-mauve \n.text-pink\n.line-pink\n.lines-pink \n.text-brown\n.line-brown\n.lines-brown\n.text-grey\n.line-grey\n.lines-grey \n.text-gray\n.line-gray\n.lines-gray\n.text-black\n.line-black\n.lines-black \n.text-white\n.line-white\n.lines-white\n")])])])])}],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/app.da0724c2.js b/assets/js/app.da0724c2.js new file mode 100644 index 0000000..02274e0 --- /dev/null +++ b/assets/js/app.da0724c2.js @@ -0,0 +1,8 @@ +!function(t){function e(e){for(var n,r,i=e[0],a=e[1],s=0,c=[];s0?o(r(t),9007199254740991):0}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var r=n(111),o=n(83),i=n(16),a=n(26);t.exports=n(84)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(7).f,o=n(13),i=n(1)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(8);r(r.S+r.F,"Object",{assign:n(106)})},function(t,e,n){var r=n(79),o=n(64);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(80),o=n(18);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(18);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(27),o=n(25);n(82)("keys",function(){return function(t){return o(r(t))}})},function(t,e,n){"use strict";var r=n(3),o=n(27),i=n(17),a=n(22),s=n(67),c=n(68),l=Math.max,u=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;n(70)("replace",2,function(t,e,n,h){return[function(r,o){var i=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=h(n,t,this,e);if(o.done)return o.value;var f=r(t),p=String(this),d="function"==typeof e;d||(e=String(e));var m=f.global;if(m){var g=f.unicode;f.lastIndex=0}for(var y=[];;){var b=c(f,p);if(null===b)break;if(y.push(b),!m)break;""===String(b[0])&&(f.lastIndex=s(p,i(f.lastIndex),g))}for(var _,x="",w=0,C=0;C=w&&(x+=p.slice(w,S)+T,w=S+k.length)}return x+p.slice(w)}];function v(t,e,r,i,a,s){var c=r+t.length,l=i.length,u=d;return void 0!==a&&(a=o(a),u=p),n.call(s,u,function(n,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":s=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return n;if(u>l){var p=f(u/10);return 0===p?n:p<=l?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}s=i[u-1]}return void 0===s?"":s})}})},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){var r,o; +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */void 0===(o="function"==typeof(r=function(){var t,e,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),l=c.querySelector(r.barSelector),u=r.speed,f=r.easing;return c.offsetWidth,a(function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(l,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,u,f)),1===t?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout(function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){n.remove(),e()},u)},u)):setTimeout(e,u)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout(function(){n.status&&(n.trickle(),t())},r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always(function(){0==--e?(t=0,n.done()):n.set((t-e)/t)}),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?"-100":i(n.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(e),e},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()}),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){var n="string"==typeof t?t:f(t);return n.indexOf(" "+e+" ")>=0}function l(t,e){var n=f(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function u(t,e){var n,r=f(t);c(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function f(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e){t.exports=!1},function(t,e,n){var r=n(15),o=n(1)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){var r=n(12),o=n(2),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(54)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var r=n(4),o=n(2).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(11),o=n(98),i=n(99),a=n(3),s=n(17),c=n(100),l={},u={};(e=t.exports=function(t,e,n,f,p){var d,h,v,m,g=p?function(){return t}:c(t),y=r(n,f,e?2:1),b=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(i(g)){for(d=s(t.length);d>b;b++)if((m=e?y(a(h=t[b])[0],h[1]):y(t[b]))===l||m===u)return m}else for(v=g.call(t);!(h=v.next()).done;)if((m=o(v,y,h.value,e))===l||m===u)return m}).BREAK=l,e.RETURN=u},function(t,e,n){var r=n(10);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e,n){"use strict";var r=n(2),o=n(7),i=n(5),a=n(1)("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(56)("keys"),o=n(21);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(21)("meta"),o=n(4),i=n(13),a=n(7).f,s=0,c=Object.isExtensible||function(){return!0},l=!n(6)(function(){return c(Object.preventExtensions({}))}),u=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";u(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;u(t)}return t[r].w},onFreeze:function(t){return l&&f.NEED&&c(t)&&!i(t,r)&&u(t),t}}},function(t,e,n){var r=n(7).f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n(5)&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},function(t,e,n){"use strict";var r=n(118)(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){"use strict";var r=n(55),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},function(t,e,n){"use strict";var r,o,i=n(87),a=RegExp.prototype.exec,s=String.prototype.replace,c=a,l=(r=/a/,o=/b*/g,a.call(r,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),u=void 0!==/()??/.exec("")[1];(l||u)&&(c=function(t){var e,n,r,o,c=this;return u&&(n=new RegExp("^"+c.source+"$(?!\\s)",i.call(c))),l&&(e=c.lastIndex),r=a.call(c,t),l&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),u&&r&&r.length>1&&s.call(r[0],n,function(){for(o=1;o")}),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=s(t),d=!i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)}),h=d?!i(function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[l]=function(){return n}),n[p](""),!e}):void 0;if(!d||!h||"replace"===t&&!u||"split"===t&&!f){var v=/./[p],m=n(a,p,""[t],function(t,e,n,r,o){return e.exec===c?d&&!o?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),g=m[0],y=m[1];r(String.prototype,t,g),o(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},function(t,e,n){"use strict";var r,o,i,a,s=n(54),c=n(2),l=n(11),u=n(55),f=n(8),p=n(4),d=n(20),h=n(59),v=n(60),m=n(74),g=n(75).set,y=n(102)(),b=n(77),_=n(103),x=n(104),w=n(105),C=c.TypeError,k=c.process,S=k&&k.versions,A=S&&S.v8||"",$=c.Promise,E="process"==u(k),O=function(){},T=o=b.f,j=!!function(){try{var t=$.resolve(1),e=(t.constructor={})[n(1)("species")]=function(t){t(O,O)};return(E||"function"==typeof PromiseRejectionEvent)&&t.then(O)instanceof e&&0!==A.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(t){}}(),L=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;y(function(){for(var r=t._v,o=1==t._s,i=0,a=function(e){var n,i,a,s=o?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{s?(o||(2==t._h&&P(t),t._h=1),!0===s?n=r:(u&&u.enter(),n=s(r),u&&(u.exit(),a=!0)),n===e.promise?l(C("Promise-chain cycle")):(i=L(n))?i.call(n,c,l):c(n)):l(r)}catch(t){u&&!a&&u.exit(),l(t)}};n.length>i;)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&M(t)})}},M=function(t){g.call(c,function(){var e,n,r,o=t._v,i=R(t);if(i&&(e=_(function(){E?k.emit("unhandledRejection",o,t):(n=c.onunhandledrejection)?n({promise:t,reason:o}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",o)}),t._h=E||R(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},R=function(t){return 1!==t._h&&0===(t._a||t._c).length},P=function(t){g.call(c,function(){var e;E?k.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})},U=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},N=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw C("Promise can't be resolved itself");(e=L(t))?y(function(){var r={_w:n,_d:!1};try{e.call(t,l(N,r,1),l(U,r,1))}catch(t){U.call(r,t)}}):(n._v=t,n._s=1,I(n,!1))}catch(t){U.call({_w:n,_d:!1},t)}}};j||($=function(t){h(this,$,"Promise","_h"),d(t),r.call(this);try{t(l(N,this,1),l(U,this,1))}catch(t){U.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(61)($.prototype,{then:function(t,e){var n=T(m(this,$));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=E?k.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=l(N,t,1),this.reject=l(U,t,1)},b.f=T=function(t){return t===$||t===a?new i(t):o(t)}),f(f.G+f.W+f.F*!j,{Promise:$}),n(23)($,"Promise"),n(62)("Promise"),a=n(12).Promise,f(f.S+f.F*!j,"Promise",{reject:function(t){var e=T(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(s||!j),"Promise",{resolve:function(t){return w(s&&this===a?$:this,t)}}),f(f.S+f.F*!(j&&n(78)(function(t){$.all(t).catch(O)})),"Promise",{all:function(t){var e=this,n=T(e),r=n.resolve,o=n.reject,i=_(function(){var n=[],i=0,a=1;v(t,!1,function(t){var s=i++,c=!1;n.push(void 0),a++,e.resolve(t).then(function(t){c||(c=!0,n[s]=t,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=T(e),r=n.reject,o=_(function(){v(t,!1,function(t){e.resolve(t).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(t,e,n){t.exports=!n(5)&&!n(6)(function(){return 7!=Object.defineProperty(n(57)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(4);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(3),o=n(20),i=n(1)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r,o,i,a=n(11),s=n(101),c=n(76),l=n(57),u=n(2),f=u.process,p=u.setImmediate,d=u.clearImmediate,h=u.MessageChannel,v=u.Dispatch,m=0,g={},y=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},b=function(t){y.call(t.data)};p&&d||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return g[++m]=function(){s("function"==typeof t?t:Function(t),e)},r(m),m},d=function(t){delete g[t]},"process"==n(15)(f)?r=function(t){f.nextTick(a(y,t,1))}:v&&v.now?r=function(t){v.now(a(y,t,1))}:h?(i=(o=new h).port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(r=function(t){u.postMessage(t+"","*")},u.addEventListener("message",b,!1)):r="onreadystatechange"in l("script")?function(t){c.appendChild(l("script")).onreadystatechange=function(){c.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:p,clear:d}},function(t,e,n){var r=n(2).document;t.exports=r&&r.documentElement},function(t,e,n){"use strict";var r=n(20);function o(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r}),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=n(1)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},function(t,e,n){var r=n(13),o=n(26),i=n(107)(!1),a=n(63)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(l,n)||l.push(n));return l}},function(t,e,n){var r=n(15);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(8),o=n(12),i=n(6);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(54),o=n(8),i=n(10),a=n(9),s=n(16),c=n(112),l=n(23),u=n(114),f=n(1)("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,h,v,m,g){c(n,e,h);var y,b,_,x=function(t){if(!p&&t in S)return S[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",C="values"==v,k=!1,S=t.prototype,A=S[f]||S["@@iterator"]||v&&S[v],$=A||x(v),E=v?C?x("entries"):$:void 0,O="Array"==e&&S.entries||A;if(O&&(_=u(O.call(new t)))!==Object.prototype&&_.next&&(l(_,w,!0),r||"function"==typeof _[f]||a(_,f,d)),C&&A&&"values"!==A.name&&(k=!0,$=function(){return A.call(this)}),r&&!g||!p&&!k&&S[f]||a(S,f,$),s[e]=$,s[w]=d,v)if(y={values:C?$:x("values"),keys:m?$:x("keys"),entries:E},g)for(b in y)b in S||i(S,b,y[b]);else o(o.P+o.F*(p||k),e,y);return y}},function(t,e,n){var r=n(3),o=n(113),i=n(64),a=n(63)("IE_PROTO"),s=function(){},c=function(){var t,e=n(57)("iframe"),r=i.length;for(e.style.display="none",n(76).appendChild(e),e.src="/service/javascript:",(t=e.contentWindow.document).open(),t.write(" + + + + + + +

Button 按钮

<button class="cu-btn">默认</button>
+<button class="cu-btn round">圆角</button>
+<button class="cu-btn icon">
+	<text class="cuIcon-emojifill"></text>
+</button>
+
.cu-btn 
+.cu-btn::after
+.cu-btn:not([class*="bg-"]) 
+.cu-btn[class*="line"] 
+.cu-btn[class*="line"]::after
+.cu-btn.round[class*="line"]::after 
+.cu-btn[class*="lines"]::after 
+.cu-btn[class*="bg-"]::after 
+.cu-btn.sm 
+.cu-btn.lg 
+.cu-btn.cuIcon.sm 
+.cu-btn.cuIcon 
+button.cuIcon.lg 
+.cu-btn.shadow-blur::before 
+.cu-btn.button-hover 
+.block 
+.cu-btn.block 
+.cu-btn[disabled] 
+
.cu-bar.btn-group
+.cu-bar.btn-group button
+.cu-bar.btn-group button
+
上次更新: 10/8/2019, 1:41:22 PM
+ + + diff --git a/colorui/docs/index.html b/colorui/docs/index.html new file mode 100644 index 0000000..6d3cd27 --- /dev/null +++ b/colorui/docs/index.html @@ -0,0 +1,35 @@ + + + + + + + ColorUI | IGeekFan的文档 + + + + + + + + +

ColorUI

github

特点

* 这是一个css库,相比其他vant-weapp、mpvue都是不一样的,非组件化,主要定位我觉得是美化主题,非组件化,支持uni-app、mpvue,可结合vant-weapp一起使用。

该文档作用

很简单,官方还没出文档,使用起来,需要开发者自行去看main.css,打开手机看小程序的demo,然后再去找项目源码,我觉得太麻烦,不知道其他人的感受如何。

    上次更新: 10/8/2019, 1:41:22 PM
    + + + diff --git a/colorui/docs/text.html b/colorui/docs/text.html new file mode 100644 index 0000000..ad07eaa --- /dev/null +++ b/colorui/docs/text.html @@ -0,0 +1,102 @@ + + + + + + + Text 文本 | IGeekFan的文档 + + + + + + + + +

    Text 文本

    .text-xs 
    +.text-sm 
    +.text-df 
    +.text-lg 
    +.text-xl 
    +.text-xxl 
    +.text-sl 
    +.text-xsl 
    +.text-Abc 
    +.text-ABC 
    +.text-abc 
    +.text-price::before 
    +.text-cut 
    +.text-bold 
    +.text-center 
    +.text-content 
    +.text-left 
    +.text-right
    +.text-red
    +.line-red
    +.lines-red 
    +.text-orange
    +.line-orange
    +.lines-orange
    +.text-yellow
    +.line-yellow
    +.lines-yellow 
    +.text-olive
    +.line-olive
    +.lines-olive
    +.text-green
    +.line-green
    +.lines-green 
    +.text-cyan
    +.line-cyan
    +.lines-cyan 
    +.text-blue
    +.line-blue
    +.lines-blue 
    +.text-purple
    +.line-purple
    +.lines-purple 
    +.text-mauve
    +.line-mauve
    +.lines-mauve 
    +.text-pink
    +.line-pink
    +.lines-pink 
    +.text-brown
    +.line-brown
    +.lines-brown
    +.text-grey
    +.line-grey
    +.lines-grey 
    +.text-gray
    +.line-gray
    +.lines-gray
    +.text-black
    +.line-black
    +.lines-black 
    +.text-white
    +.line-white
    +.lines-white
    +
    上次更新: 10/8/2019, 1:41:22 PM
    + + + diff --git a/deploy.ps1 b/deploy.ps1 deleted file mode 100644 index 0bc3446..0000000 --- a/deploy.ps1 +++ /dev/null @@ -1,17 +0,0 @@ - -# yarn install -# 生成静态文件 -yarn build - -# 进入生成的文件夹 -Set-Location docs/.vuepress/dist -git config --global user.email "luoyunchong@foxmail.com" -git config --global user.name "luoyunchong" - -git init -git add -A -git commit -m 'deploy' - -git push -f git@github.com:luoyunchong/vuepress-docs.git master:gh-pages - -Set-Location ../../../ \ No newline at end of file diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index e1920a9..0000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,93 +0,0 @@ -module.exports = { - base: '/vuepress-docs/', - head: [ - [ - 'link', - { - rel: 'icon', - href: `/logo.png` - } - ], - ], - title: 'IGeekFan的文档', - themeConfig: { - search: true, - searchMaxSuggestions: 10, - displayAllHeaders: true, - // 文档仓库 - docsRepo: 'https://github.com/luoyunchong/vuepress-docs', - // 假如文档不是放在仓库的根目录下: - docsDir: 'docs', - // 假如文档放在一个特定的分支下: - docsBranch: 'master', - // 默认是 false, 设置为 true 来启用 - editLinks: true, - // 默认为 "Edit this page" - editLinkText: '在 GitHub 上编辑此页', - lastUpdated: '上次更新', - sidebarDepth: 2, - nav: [ - { text: '简介', link: '/' }, - { text: 'lin-cms-dotnetcore起步', link: '/dotnetcore/lin-cms/' }, - { text: 'dotnetcore指南', link: '/dotnetcore/examples/' }, - { text: 'ColorUI指南', link: '/colorui/docs/' }, - { text: '关于我', link: 'http://blog.igeekfan.cn/about/' }, - { - text: 'GitHub', - link: 'https://github.com/luoyunchong' - }], - sidebar: { - '/dotnetcore/examples/': [ - { - title: 'Examples', - collapsable: true, - children: [ - 'Console-Hello-World', - 'Console-News-Types', - 'FreeSql-in-asp.net-core-webapi-how-to-use', - 'FreeSql-sample-blog-RESTful-use-automapper', - 'IdentityServer4', - 'Qiniu-Object-Storage', - 'ImCore-Chat' - ] - } - ], - '/dotnetcore/lin-cms/': [{ - title: 'lin-cms-dotnetcore起步', - collapsable: true, - children: [ - 'dotnetcore-start.md', - 'vue-start.md', - 'Open-source-road.md', - 'Module-Design.md', - 'Production-Design.md', - 'pm-design-modules.md', - ] - }, { - title: '开发者文档', - collapsable: true, - children: [ - 'dev-start', - 'Newtonsoft.Json-question', - 'dependency-injection', - 'dynamic-authorization-in-asp-net-core', - 'Reflex-Assembly-Get-Controller-Methods-Attribute', - 'IdentityServer4-JWT', - 'ToolGood.Words', - 'StopWords', - 'spa-github-login' - ] - }], - '/colorui/': [ - { - title: 'ColorUI文档', - collapsable: true, - children: [ - 'docs/button', - 'docs/text', - ] - } - ], - } - } -} \ No newline at end of file diff --git a/docs/about/README.md b/docs/about/README.md deleted file mode 100644 index 1040b02..0000000 --- a/docs/about/README.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -layout: AboutLayout ---- \ No newline at end of file diff --git a/docs/colorui/docs/README.md b/docs/colorui/docs/README.md deleted file mode 100644 index 400fca3..0000000 --- a/docs/colorui/docs/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# ColorUI - -## github - -- [https://github.com/weilanwl/ColorUI](https://github.com/weilanwl/ColorUI) - -## 特点 - -* 这是一个css库,相比其他vant-weapp、mpvue都是不一样的,非组件化,主要定位我觉得是美化主题,非组件化,支持uni-app、mpvue,可结合vant-weapp一起使用。 - -## 该文档作用 - -很简单,官方还没出文档,使用起来,需要开发者自行去看main.css,打开手机看小程序的demo,然后再去找项目源码,我觉得太麻烦,不知道其他人的感受如何。 - - - \ No newline at end of file diff --git a/docs/colorui/docs/button.md b/docs/colorui/docs/button.md deleted file mode 100644 index c4a3ced..0000000 --- a/docs/colorui/docs/button.md +++ /dev/null @@ -1,36 +0,0 @@ - -# Button 按钮 - -``` - - - -``` -``` -.cu-btn -.cu-btn::after -.cu-btn:not([class*="bg-"]) -.cu-btn[class*="line"] -.cu-btn[class*="line"]::after -.cu-btn.round[class*="line"]::after -.cu-btn[class*="lines"]::after -.cu-btn[class*="bg-"]::after -.cu-btn.sm -.cu-btn.lg -.cu-btn.cuIcon.sm -.cu-btn.cuIcon -button.cuIcon.lg -.cu-btn.shadow-blur::before -.cu-btn.button-hover -.block -.cu-btn.block -.cu-btn[disabled] -``` - -``` -.cu-bar.btn-group -.cu-bar.btn-group button -.cu-bar.btn-group button -``` diff --git a/docs/colorui/docs/text.md b/docs/colorui/docs/text.md deleted file mode 100644 index 89ae35b..0000000 --- a/docs/colorui/docs/text.md +++ /dev/null @@ -1,68 +0,0 @@ - -# Text 文本 - -``` -.text-xs -.text-sm -.text-df -.text-lg -.text-xl -.text-xxl -.text-sl -.text-xsl -.text-Abc -.text-ABC -.text-abc -.text-price::before -.text-cut -.text-bold -.text-center -.text-content -.text-left -.text-right -.text-red -.line-red -.lines-red -.text-orange -.line-orange -.lines-orange -.text-yellow -.line-yellow -.lines-yellow -.text-olive -.line-olive -.lines-olive -.text-green -.line-green -.lines-green -.text-cyan -.line-cyan -.lines-cyan -.text-blue -.line-blue -.lines-blue -.text-purple -.line-purple -.lines-purple -.text-mauve -.line-mauve -.lines-mauve -.text-pink -.line-pink -.lines-pink -.text-brown -.line-brown -.lines-brown -.text-grey -.line-grey -.lines-grey -.text-gray -.line-gray -.lines-gray -.text-black -.line-black -.lines-black -.text-white -.line-white -.lines-white -``` \ No newline at end of file diff --git a/docs/dotnetcore/examples/Console-Hello-World.md b/docs/dotnetcore/examples/Console-Hello-World.md deleted file mode 100644 index c9cf250..0000000 --- a/docs/dotnetcore/examples/Console-Hello-World.md +++ /dev/null @@ -1,78 +0,0 @@ - -# 创建简单Hello World - -## 源码 -代码托管在GitHub上 [https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-hello-world](https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-hello-world) - -## 相关阅读 -- [C# 和 Visual Studio Code 入门教程](https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/with-visual-studio-code) -- [vscode调试运行c#详细操作过程](https://blog.csdn.net/qq_40346899/article/details/80955788) -- **[使用Visual Studio Code开发.NET Core看这篇就够了](https://blog.csdn.net/qin_yu_2010/article/details/83978244)** 强烈推荐。 - -## 开始 -创建一个hello-word的console,会输出Hello World! - -~~~bash -mkdir console-hello-world -cd console-hello-world -dotnet new console -dotnet run -~~~ - -console-hello-world.csproj - -**OutputType** 标记指定我们要生成的可执行文件,即控制台应用程序。 - -**TargetFramework** 标记指定要定位的 .NET 实现代码。 在高级方案中,可以指定多个目标框架,并在单个操作中生成所有目标框架。 - -~~~xml - - - - Exe - netcoreapp3.0 - console_hello_world - - - - -~~~ - -在 console-hello-world/bin/Debug/netcoreapp3.0中生成了console-hello-world.dll - -~~~PowerShell -cd console-hello-world #要先在console-hello-world目录中 -dotnet bin/Debug/netcoreapp3.0/console-hello-world.dll -Hello World -~~~ - -修改main函数 - -~~~c# -using System; - -namespace console_hello_world -{ - class Program - { - static void Main(string[] args) - { - if (args.Length > 0) - { - Console.WriteLine($"Hello {args[0]}!"); - } - else - { - Console.WriteLine("Hello!"); - } - } - } -} -~~~ - -~~~PowerShell -$ dotnet run -- John -Hello John! -~~~ - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/Console-News-Types.md b/docs/dotnetcore/examples/Console-News-Types.md deleted file mode 100644 index 49b62cf..0000000 --- a/docs/dotnetcore/examples/Console-News-Types.md +++ /dev/null @@ -1,58 +0,0 @@ -# .NET Core 简单测试项目 - -使用PowerShell的dotnet cli命令行创建控制台项目,测试项目,测试项目引用控制台项目。 -## 源码 -代码托管在GitHub上 [https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-news-types](https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-news-types) - -## 相关参考 -code :[https://github.com/dotnet/samples/blob/master/core/console-apps/NewTypesMsBuild/README.md](https://github.com/dotnet/samples/blob/master/core/console-apps/NewTypesMsBuild/README.md) - -docs: [https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/testing-with-cli](https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/testing-with-cli) - -dotnet-add-reference 使用文档 [https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-reference](https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-reference) - -总结如下命令行 -~~~PowerShell -PS dotnetcore-examples> mkdir console-news-types -PS dotnetcore-examples> cd .\console-news-types\ -PS dotnetcore-examples\console-news-types> mkdir src - -PS dotnetcore-examples\console-news-types> mkdir test -PS dotnetcore-examples\console-news-types> ls -Mode LastWriteTime Length Name ----- ------------- ------ ---- -d---- 2019/6/27 20:51 src -d---- 2019/6/27 20:51 test - -PS dotnetcore-examples\console-news-types> cd .\src\ -PS dotnetcore-examples\console-news-types\src> dotnet new console -n NewTypes -PS dotnetcore-examples\console-news-types\src> cd ..\test\ -PS dotnetcore-examples\console-news-types\test> dotnet new xunit -n NewTypesTests -PS dotnetcore-examples\console-news-types\test> cd .\NewTypesTests\ -PS dotnetcore-examples\console-news-types\test\NewTypesTests> dotnet add reference ../../src/NewTypes/NewTypes.csproj -#Reference `..\..\src\NewTypes\NewTypes.csproj` added to the project. -~~~ - -其他的代码就看上面的二个链接,把代码复制进去,代码很简单,一个接口,二个实现,main函数调用,测试项目引用控制台项目, - -先cd 到src\NewTypes目录中,执行 **dotnet run** -~~~PowerShell -PS dotnetcore-examples\console-news-types\src\NewTypes> dotnet run -Woof! -Meow! -~~~ - -先cd 到test\NewTypesTests目录中,执行 **dotnet test**,看好代码,测试类 Assert.Equal() 是成功的,如果是Assert.NotEqual() 则Failure -~~~PowerShell -PS dotnetcore-examples\console-news-types\test\NewTypesTests> dotnet test -dotnetcore-examples\console-news-types\test\NewTypesTests\bin\Debug\netcoreapp3.0\NewTypesTests.dll 的测试运行(.NETCoreApp,Version=v3.0) -Microsoft (R) 测试执行命令行工具版本 16.0.1 -版权所有 (C) Microsoft Corporation。保留所有权利。 - -正在启动测试执行,请稍候... - -总测试: 2。已通过: 2。失败: 0。已跳过: 0。 -测试运行成功。 -测试执行时间: 1.5134 秒 -~~~ - \ No newline at end of file diff --git a/docs/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.md b/docs/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.md deleted file mode 100644 index d53d633..0000000 --- a/docs/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.md +++ /dev/null @@ -1,299 +0,0 @@ -# FreeSql+ASP.NET Core - -## 文章概述 -主要在介绍FreeSql在ASP.NTE Core WebApi中如何使用的过程,完成一个最简单的博客系统的后端接口。 - -## FreeSql 简介 -国人写的一个功能强大的ORM,FreeSql 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,特点:轻量级、可扩展、基于 .NET Standard 跨平台。 - -## 源码 -代码托管在GitHub上 [https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql) - -## 参考 -- FreeSql github [https://github.com/2881099/FreeSql](https://github.com/2881099/FreeSql) -- [关于.net core cli中如何使用dotnet new](https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22) -- [使用 ASP.NET Core 创建 Web API](https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2) -- [Swagger/OpenAPI 生成接口文档](https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-2.2) -- [Swagger GitHub (Swashbuckle.AspNetCore)](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) - -## 项目准备 -- Mysql 5.6 -- Visual Studio 2019或2017、Visual Studio code -- .NET Core 2.2+ -- PowerShell -- 懂点mvc,该教程不会教你如何使用 ASP .NET Core MVC、RESTful - - -### 创建项目 -使用dotnet 命令行创建一个webapi项目,起名为RESTful.FreeSql -``` -PS dotnetcore-examples\asp.net-core-freesql> dotnet new webapi -n RESTful.FreeSql -The template "ASP.NET Core Web API" was created successfully. -``` - -然后cd 到RESTful.FreeSql目录,通过dotnet run 命令运行项目 -```PowerShell -PS dotnetcore-examples\asp.net-core-freesql> cd .\RESTful.FreeSql\ -PS dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql> dotnet run - -info: Microsoft.Hosting.Lifetime[0] - Now listening on: https://localhost:5001 -info: Microsoft.Hosting.Lifetime[0] - Now listening on: http://localhost:5000 -info: Microsoft.Hosting.Lifetime[0] - Application started. Press Ctrl+C to shut down. -info: Microsoft.Hosting.Lifetime[0] - Hosting environment: Development -info: Microsoft.Hosting.Lifetime[0] - Content root path: D:\code\github\dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql -``` - -打开浏览器 https://localhost:5001 会出现404 - -请打开这个地址 https://localhost:5001/api/values ,可看到如下内容。 -~~~ -["value1","value2"] -~~~ - -接下来我们来集成FreeSql,我们以最简单的命令和说明,详细内容去官网看具体内容 - -- 官网文档 [http://freesql.net/doc](http://freesql.net/doc) -## Install -要先cd到RESTful.FreeSql目录中。 -~~~PowerShell -PS \asp.net-core-freesql\RESTful.FreeSql> dotnet add package FreeSql -PS \asp.net-core-freesql\RESTful.FreeSql> dotnet add package FreeSql.Provider.MySql -~~~ - - -## code first -- [关于CodeFirst,官方文档的介绍](https://github.com/2881099/FreeSql/blob/master/Docs/codefirst.md) - -代码优先,使用过EntityFramework的应该很清楚这一概念,我的理解就是:在分析数据库表关系时,不通过在数据库中设计表,而是直接在代码中声明对应的类,使用导航属性代替外键关联,通过数据表字段与C#中的类库对应,从而自动生成数据表。 - - -## db first -数据库优先:需求分析后,直接设计数据库,通过数据库中的表,直接生成代码,类。 - -## 开始 -### 分析需求 - -我们以code first 为示例,学习如何使用freesql,实现一个简单的博客。将表内容分为博客表(Blog)和评论表(Post) - -#### Blog 表 - -|字段名 | 字段类型| 说明| -|---|---|---| -|BlogId |int|博客id| -|Title |varchar(50)|博客标题| -|Content |varchar(500)|博客内容| -|CreateTime |DateTime|发布时间| - -#### Post 表 - -|字段名 | 字段类型| 说明| -|---|---|---| -|PostId |int|评论id| -|ReplyContent |varchar(50)|标题| -|BlogId |int|博客id| -|ReplyTime |DateTime|回复时间| - -建一个Domain文件夹,用于存放数据库表中对应的实体类。 -### 基础介绍 - -#### 1. Column属性介绍,大家可以看[源码,解析](https://github.com/2881099/FreeSql/blob/f8c3608fdac2933b528605cc46b21b71c79eaacb/FreeSql/DataAnnotations/ColumnAttribute.cs) - -1). 比如:Blog表中指定了Title为varchar(50),我们如何通过代码指定了主键,唯一值,字形。 -```c# - public class Blog - { - [Column(IsIdentity = true, IsPrimary = true)] - public int BlogId { get; set; } - [Column(DbType = "varchar(50)")] - public string Title { get; set; } - } -``` -2). Column的命名空间在 -```c# -using FreeSql.DataAnnotations; -``` -更多属性介绍 -|字段 | 备注| -|---|---| -|Name|数据库列名| -|OldName|指定数据库旧的列名,修改实体属性命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库字段;否则将视为【新增字段】| -|DbType|数据库类型,如: varchar(255)| -|IsPrimary|主键| -|IsIdentity|自增标识| -|IsNullable|是否可DBNull| -|IsIgnore|忽略此列,不迁移、不插入| -|IsVersion|设置行锁(乐观锁)版本号,每次更新累加版本号,若更新整个实体时会附带当前的版本号判断(修改失败时抛出异常)| -|DbDefautValue|数据库默认值| -|MapType|类型映射,比如:可将 enum 属性映射成 typeof(string)| -|Uniques| 唯一键,在多个属性指定相同的标识,代表联合键;可使用逗号分割多个 UniqueKey 名。| - -#### 2. Table 的使用:用于在类的上面指定这个表的属性 - -```csharp -[Table(Name = "t_blog")] -public class Blog { - //... -} -``` -更多属性介绍 -|字段 | 备注| -|---|---| -|Name|数据库表名| -|OldName |指定数据库旧的表名,修改实体命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库表;否则将视为【创建新表】| -|SelectFilter |查询过滤SQL,实现类似 a.IsDeleted = 1 功能| -|DisableSyncStructure|禁用 CodeFirst 同步结构迁移| - -#### 3. 其他的还是看 https://github.com/2881099/FreeSql/blob/master/Docs/codefirst.md - -#### Blog.cs -~~~c# -using FreeSql.DataAnnotations; -using System; - -namespace RESTful.FreeSql.Domain -{ - public class Blog - { - [Column(IsIdentity = true, IsPrimary = true)] - public int BlogId { get; set; } - [Column(DbType = "varchar(50)")] - public string Title { get; set; } - [Column(DbType = "varchar(500)")] - public string Content { get; set; } - public DateTime CreateTime { get; set; } - - - } -} -~~~ - -#### Post.cs -~~~C# - -using FreeSql.DataAnnotations; -using System; - -namespace RESTful.FreeSql.Domain -{ - public class Post - { - [Column(IsIdentity = true, IsPrimary = true)] - public int PostId { get; set; } - [Column(DbType = "varchar(50)")] - public string ReplyContent { get; set; } - public int BlogId { get; set; } - public DateTime ReplyTime { get; set; } - public Blog Blog { get; set; } - } -} -~~~ - - - -#### Startup.cs -非全部代码,这里注意点:要先在mysql中创建数据库**FreeSql_Blog**,否则一直提示**主库xxxxx**,官网未找到相关描述。 - -这里初始化FreeSql,并使用单例模式,注入到默认的依赖中,这样在Controller中即可直接注入。 -~~~c# -namespace RESTful.FreeSql -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Fsql = new FreeSqlBuilder() - .UseConnectionString(DataType.MySql, @"Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=FreeSql_Blog;Charset=utf8;SslMode=none;Max pool size=10") - .UseAutoSyncStructure(true) - .Build(); - } - - public IFreeSql Fsql { get; } - - public void ConfigureServices(IServiceCollection services) - { - services.AddSingleton(Fsql); - - } - } -} -~~~ - -#### BlogController -在controllers文件夹新建一个控制器BlogController - -~~~c# -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using FreeSql; -using Microsoft.AspNetCore.Mvc; -using RESTful.FreeSql.Domain; - -namespace RESTful.FreeSql.Controllers -{ - [Route("api/[controller]")] - [ApiController] - public class BlogController : ControllerBase - { - // GET api/Blog - - IFreeSql _fsql; - public BlogController(IFreeSql fsql) - { - _fsql = fsql; - } - - [HttpGet] - public ActionResult> Get() - { - List blogs = _fsql.Select().OrderByDescending(r => r.CreateTime).ToList(); - - return blogs; - } - - // GET api/blog/5 - [HttpGet("{id}")] - public ActionResult Get(int id) - { - return _fsql.Select(id).ToOne(); - } - - - // DELETE api/blog/5 - [HttpDelete("{id}")] - public void Delete(int id) - { - _fsql.Delete(new { BlogId = id }).ExecuteAffrows(); - } - } -} -~~~ - -重新运行,打开地址 http://localhost:5001/api/blog 会发现数据库中生成了表blog,这时候表post并没有生成。所以我们判断,只有在访问到实体类才检查是否存在表结构,然后执行相应的处理。 - -手动向blog表中加一些数据,然后再次请求 -- http://localhost:5001/api/blog, 可看到相应的数据。 -- http://localhost:5001/api/blog/1 可得到单个数据。 - - -### 自动同步实体结构【开发环境必备】 -此功能默认为开启状态,发布正式环境后,请修改此设置 -~~~ -Fsql = new FreeSqlBuilder() - .UseConnectionString(DataType.MySql, @"连接字符串") - .UseAutoSyncStructure(true) - .Build(); - -//UseAutoSyncStructure(true/false)【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改 - -// 也可使用此方法指定是否自动同步结构。 -Fsql.CodeFirst.IsAutoSyncStructure = true; -~~~ - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.md b/docs/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.md deleted file mode 100644 index 37ddfb1..0000000 --- a/docs/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.md +++ /dev/null @@ -1,376 +0,0 @@ -# RESTful+FreeSql+AutoMapper -## 文章概述 -本文使用ASP .NET Core的WEB API,构建一个RESTful风格的接口,使用Freesql访问MySQL数据库,实现二个表的简单博客,并集成AutoMapper。 - -接上一篇 -- [FreeSql在ASP.NTE Core WebApi中如何使用的教程](http://blog.igeekfan.cn/2019/06/30/re-start/FreeSql-asp.net-core-how-to-use/) - -- 项目源码 [https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql) - - - -## Dto作用 - -当我们使用RESTful提供接口时,比如创建一个博客,修改一下博客内容时,他们的参数是有区别的。良好的设计应该是 - - - -创建一个博客 -~~~json -POST /api/blog -data: -{ - "title": "string", - "content": "string" -} -~~~ -修改一个博客内容 -~~~json -PUT /api/blog -data: -{ - "blogId":"int", - "title": "string", - "content": "string" -} -~~~ -但一个blog 实体如下 - -~~~c# - public class Blog - { - [Column(IsIdentity = true, IsPrimary = true)] - public int BlogId { get; set; } - public string Title { get; set; } - public string Content { get; set; } - public DateTime CreateTime { get; set; } - public virtual List Posts { get; set; } - } -~~~ - -如果我们以Blog作为controllers中的参数时 - -~~~c# - // POST api/blog - [HttpPost] - public void Post([FromBody] Blog blog) - { - blog.CreateTime=DateTime.Now; - _fsql.Insert(blog).ExecuteAffrows(); - } -~~~ -这时修改swagger显示的默认参数是 -~~~json -{ - "blogId": 0, - "title": "string", - "content": "string", - "createTime": "2019-06-30T07:33:05.524Z", - "posts": [ - { - "postId": 0, - "replyContent": "string", - "blogId": 0, - "replyTime": "2019-06-30T07:33:05.524Z" - } - ] -} -~~~ - -如果我们不传递createTime,会出现异常,应该createTime是DateTime,不能为null,只有DateTime?才能为null,有?为可空类型。 - -所以我们应该为POST方式传递过来时,新建一个实体类,我们称之为DTO(Data Transfer Object),即数据传输对象,因为createTime即使传递,后端为他赋了值,前台传了也无效。有了DTO,这样可让前端清楚他们应该传递的参数,而不会出现没有作用的参数。 - -在根目录创建Models/Blogs文件夹,在Blogs文件夹中创建 - -### CreateBlogDto.cs - -```c# -namespace RESTful.FreeSql.Models.Blogs -{ - public class CreateBlogDto - { - public string Title { get; set; } - public string Content { get; set; } - - } -} - -``` -### UpdateBlogDto.cs - -```c# -namespace RESTful.FreeSql.Models.Blogs -{ - public class UpdateBlogDto - { - public int BlogId { get; set; } - public string Title { get; set; } - public string Content { get; set; } - } -} - - -``` -有了Dto后,我们会发现了新的问题,往数据库插入时,往往使用了一些ORM,他们只支持原本的实体类,如Blog,Post。但不支持CreateBlogDto、UpdateBlogDto,我们可以手动,将一个类的值,赋值给另一个类。 -如 -```c# - CreateBlogDto createBlogDto = new CreateBlogDto() - { - Title = "我是title", - Content = "我是content" - }; - - Blog newBlog=new Blog() - { - Title = createBlogDto.Title, - Content = createBlogDto.Content - }; -``` -现在只是非常简单的二个属性,我们还能忍受,但如果是十个属性、而且有着大量的类与类之间的转换呢。这时修改AutoMapper就闪亮登场了。 - -## AutoMapper -> 作用:A convention-based object-object mapper. - -我们是在ASP .NET Core下使用AutoMapper [官网介绍,如何依赖注入中使用](https://automapper.readthedocs.io/en/latest/Dependency-injection.html) - -### Setup -先cd到dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql目录 -```PowerShell -PS > dotnet add package AutoMapper -PS > dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection --version 6.1.1 -``` -在StartUp.cs中的ConfigureServices配置如下 -``` - public void ConfigureServices(IServiceCollection services) - { - // .... Ignore code before this - - //AddAutoMapper会去找继承Profile的类, - services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); - - // .... Ignore code after this - } -``` - -### Adding Profiles - -AutoMapper/BlogProfile.cs -```c# -using AutoMapper; -using RESTful.FreeSql.Domain; -using RESTful.FreeSql.Models.Blogs; - -namespace RESTful.FreeSql.AutoMapper -{ - public class BlogProfile : Profile - { - public BlogProfile() - { - CreateMap(); - CreateMap(); - } - } -} -``` - -AutoMapper/BlogProfile.cs -```c# -using AutoMapper; -using RESTful.FreeSql.Domain; -using RESTful.FreeSql.Models.Blogs; - -namespace RESTful.FreeSql.AutoMapper -{ - public class PostProfile : Profile - { - public PostProfile() - { - CreateMap(); - } - } -} -``` - -Models/Posts/SearchPostDto.cs根据博客id,得到分页的评论时,集成分页类 -```c# -using RESTful.FreeSql.Web; - -namespace RESTful.FreeSql.Models.Posts -{ - public class SearchPostDto:PageDto - { - public int BlogId { get; set; } - } -} - -``` - -Controlers/BlogController.cs文件中,注入IMapper, -```c# -using AutoMapper; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using RESTful.FreeSql.Domain; -using RESTful.FreeSql.Models.Blogs; -using RESTful.FreeSql.Web; - -namespace RESTful.FreeSql.Controllers -{ - [Route("api/[controller]")] - [ApiController] - public class BlogController : ControllerBase - { - // GET api/Blog - - private readonly IFreeSql _fsql; - private readonly IMapper _mapper; - public BlogController(IFreeSql fsql, IMapper mapper) - { - _fsql = fsql; - _mapper = mapper; - } - - /// - /// 博客列表页 - /// - /// 分页参数 - /// - [HttpGet] - public ActionResult> Get([FromQuery]PageDto pageDto) - { - List blogs = _fsql.Select().OrderByDescending(r => r.CreateTime).Page(pageDto.PageNumber, pageDto.PageSize).ToList(); - long count = _fsql.Select().Count(); - return new PagedResultDto(count, blogs); - } - - // GET api/blog/5 - [HttpGet("{id}")] - public ActionResult Get(int id) - { - // eg.1 return _fsql.Select().Where(a => a.Id == id).ToOne(); - // eg.2 - return _fsql.Select(id).ToOne(); - } - - // POST api/blog - [HttpPost] - public void Post([FromBody] CreateBlogDto createBlogDto) - { - Blog blog = _mapper.Map(createBlogDto); - blog.CreateTime = DateTime.Now; - _fsql.Insert(blog).ExecuteAffrows(); - } - - // PUT api/blog - [HttpPut] - public void Put([FromBody] UpdateBlogDto updateBlogDto) - { - - //eg.1 更新指定列 - //_fsql.Update(updateBlogDto.BlogId).Set(a => new Blog() - //{ - // Title = updateBlogDto.Title, - // Content = updateBlogDto.Content - //}).ExecuteAffrows(); - - //eg.2将这个实体更新到数据库中。当更新时,会把其他列的值,如CreateTime也更新掉。 - //使用IgnoreColumns可忽略某一些列。 - - Blog blog = _mapper.Map(updateBlogDto); - _fsql.Update().SetSource(blog).IgnoreColumns(r => r.CreateTime).ExecuteAffrows(); - } - - // DELETE api/blog/5 - [HttpDelete("{id}")] - public void Delete(int id) - { - _fsql.Delete(new { BlogId = id }).ExecuteAffrows(); - } - } -} -``` - -Controlers/BlogController.cs文件中,注入IMapper, -```c# -using FreeSql; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using AutoMapper; -using RESTful.FreeSql.Domain; -using RESTful.FreeSql.Models.Posts; -using RESTful.FreeSql.Web; - -namespace RESTful.FreeSql.Controllers -{ - [Route("api/[controller]")] - [ApiController] - public class PostController : ControllerBase - { - // GET: api/Post - private readonly IFreeSql _fsql; - private readonly IMapper _mapper; - public PostController(IFreeSql fsql, IMapper mapper) - { - _fsql = fsql; - _mapper = mapper; - } - - /// - /// 根据博客id、分页条件查询评论信息 - /// - /// - /// - [HttpGet] - public PagedResultDto Get(SearchPostDto searchPostDto) - { - ISelect selectPost = _fsql - .Select() - .Where(r => r.BlogId == searchPostDto.BlogId); - - List posts = selectPost.OrderByDescending(r => r.ReplyTime) - .Page(searchPostDto.PageNumber, searchPostDto.PageSize) - .ToList(); - - long total = selectPost.Count(); - - return new PagedResultDto(total, posts); - } - - // GET: api/Post/5 - [HttpGet("{id}", Name = "Get")] - public Post Get(int id) - { - return _fsql.Select().Where(a => a.PostId == id).ToOne(); - } - - // POST: api/Post - [HttpPost] - public void Post([FromBody] CreatePostDto createPostDto) - { - Post post = _mapper.Map(createPostDto); - post.ReplyTime = DateTime.Now; - _fsql.Insert(post).ExecuteAffrows(); - } - - - // DELETE: api/Post/ - [HttpDelete("{id}")] - public async Task DeleteAsync(int id) - { - await _fsql.Delete(new Post { PostId = id }).ExecuteAffrowsAsync(); - } - } -} - -``` - -### 参考 -- 建议大家先看官网 [http://automapper.org/](http://automapper.org/) -- 开源地址 [https://github.com/AutoMapper/AutoMapper](https://github.com/AutoMapper/AutoMapper) -- Getting-started 文档 [https://automapper.readthedocs.io/en/latest/Getting-started.html#what-is-automapper](https://automapper.readthedocs.io/en/latest/Getting-started.html#what-is-automapper) - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/IdentityServer4.md b/docs/dotnetcore/examples/IdentityServer4.md deleted file mode 100644 index 1f1c38b..0000000 --- a/docs/dotnetcore/examples/IdentityServer4.md +++ /dev/null @@ -1,13 +0,0 @@ -# IdentityServer4 - -## 写的一些IdentityServer4的示例 - -IdentityServer4 实现单点登录授权token验证 - -## 源码 -代码托管在GitHub上 [https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-identityserver4](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-identityserver4) - - -## 参考 -- [.NET Core微服务之基于IdentityServer建立授权与验证服务](https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01.html) - \ No newline at end of file diff --git a/docs/dotnetcore/examples/ImCore-Chat.md b/docs/dotnetcore/examples/ImCore-Chat.md deleted file mode 100644 index cb4a40d..0000000 --- a/docs/dotnetcore/examples/ImCore-Chat.md +++ /dev/null @@ -1,15 +0,0 @@ -# ImCore 即时通讯 -## 简介 -利用 webSocket 协议实现简易、高性能、集群即时通讯组件,支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能。 - -## 开源地址 -[https://github.com/2881099/im](https://github.com/2881099/im) - -## 示例 -[https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-im](https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-im) - -## 演示效果 - -![](https://ae01.alicdn.com/kf/Hf8b31f05dbb94f8da565fce29f78aa78Y.png) - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/Qiniu-Object-Storage.md b/docs/dotnetcore/examples/Qiniu-Object-Storage.md deleted file mode 100644 index 963443f..0000000 --- a/docs/dotnetcore/examples/Qiniu-Object-Storage.md +++ /dev/null @@ -1,154 +0,0 @@ - - -## 七牛云对象存储 - -.NET Core下集成 七牛云下的对象存储 - -## 开源地址 -[https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-qiniu](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-qiniu) - -## 集成类库 -|基础类库集成方案|开源地址|文档|说明| -|---|---|---|---| -|[Qiniu云对象存储](https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnet-core-efcore)|[.net](https://github.com/qiniu/csharp-sdk)/[.net core](https://github.com/Hello-Mango/MQiniu.Core)|[c# sdk](https://developer.qiniu.com/kodo/sdk/1237/csharp)|由于官网未支持. net core,所以 大家看[社区版解决方案](https://github.com/Hello-Mango/MQiniu.Core)| - -## 前提 -* 本地windows 10,安装 .net core 2.2+ -* Linux 服务器 Ubuntu Server 16+ -* 服务器安装了Docker -* 本地xftp、xshell(这二个分别是windows传文件至linux,执行命令行。) -## 准备 -在七牛云中自行注册后,在个人中心,密钥管理,生成自己的密钥(https://portal.qiniu.com/user/key) -v* AK,SK分别代表:AccessKey/SecretKey -* Bucket中的vant-ui,是创建对象存储时起的名字 -* PrefixPath中的值,随意字符串,前缀地址。 -* Host为:融合 CDN 测试域名,可自行绑定自己的域名,否则只有三十天免费使用时长。 -## appsettings.json配置项 -``` - "Qiniu": { - "AK": "eUH1O-ft66S4XM2GIK7FGmj7czuYkcAyNGDAc-wq", - "SK": "4dOi1daSr2-YgofhAfWb8JaLrbgozCmgD6AUmmM9", - "Bucket": "vant-ui", - "PrefixPath": "ui", - "Host": "http://pu5vnz60k.bkt.clouddn.com/" - } -``` -## 安装包 - -``` -Install-Package MQiniu.Core -``` -## 代码解读 -配置swagger的过程就不说了,创建QiniuController -``` - /// - /// 七牛云上传服务 - /// - [Route("api/[controller]")] - [ApiController] - public class QiniuController : ControllerBase - { - private readonly IConfiguration _configuration; - - public QiniuController(IConfiguration configuration) - { - _configuration = configuration; - } - - /// - /// 根据后台配置项,得到请求七牛云的token值,前台也可根据此token值上传至七牛云服务 - /// - /// - [HttpGet("access_token")] - public string GetAccessToken() - { - Mac mac = new Mac(_configuration["Qiniu:AK"], _configuration["Qiniu:SK"]); - PutPolicy putPolicy = new PutPolicy { Scope = _configuration["Qiniu:Bucket"] }; - return Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); - } - - /// - /// 上传文件至七牛云,code为200,代表上传成功,其他代表不成功 - /// - /// 单个文件 - /// new { code = 200, data ="七牛云文件地址,包括http://....mm.png", msg = "上传成功" }; - [HttpPost("upload")] - public dynamic Upload(IFormFile file) - { - if (file.Length == 0) - { - return new { code = 1, msg = "文件为空" }; - } - - FormUploader upload = new FormUploader(new Config() - { - Zone = Zone.ZONE_CN_South,//华南 - UseHttps = true - }); - - var fileName = ContentDispositionHeaderValue - .Parse(file.ContentDisposition) - .FileName.Trim(); - - string qiniuName = _configuration["Qiniu:PrefixPath"] + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + fileName; - Stream stream = file.OpenReadStream(); - HttpResult result = upload.UploadStream(stream, qiniuName, GetAccessToken(), null); - - if (result.Code == 200) - { - return new { code = 200, data = _configuration["Qiniu:Host"] + qiniuName, msg = "上传成功" }; - } - - return new { code = 1, msg = "上传失败" }; - } - } - -``` - - -Upload方法中,Zone.ZONE_CN_South,代表华南,所以创建对象存储时要注意,请选择与此相同的位置(华南),或根据实际情况修改Zone所在地区的枚举值即可。 -``` -FormUploader upload = new FormUploader(new Config() -{ - Zone = Zone.ZONE_CN_South,//华南 - UseHttps = true -}); - -``` - -## 发布至Linux下的Docker -双击 publish.bat,生成的文件夹为如下: - -![image](https://upload-images.jianshu.io/upload_images/2001974-bcd72707e4fcc7f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -修改项目名为qiniu-web,复制 至linux服务器中,(xftp工具) -![image](https://upload-images.jianshu.io/upload_images/2001974-48771e9fce281262.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -使用xshell远程登录后,进入root权限。 -```bash -root@VM-37-104-ubuntu:/home/ubuntu/# sudo su -root@VM-37-104-ubuntu:/home/ubuntu/# cd qiniu-web -``` -前置条件,在ubuntu上安装好了docker。并且正常运行。 - --d 代表后台运行,此时将对外显露5000端口运行,5000是运行后,docker对外的端口,80是这个服务对外的端口,其中Dockerfile 存在语句EXPOSE 80 - -```bash -docker build -t igeekfan/qiniu . #生成images -docker run -d -p 5000:80 igeekfan/qiniu # 生成 container 并运行在5000端口 -``` -此时打开 浏览器, ip+端口5000即可访问服务,请加/swagger。 - -本项目已部署至服务器 [http://122.152.192.161:5000/swagger/index.html](http://122.152.192.161:5000/swagger/index.html) - -## 运行结果 -![image.png](https://upload-images.jianshu.io/upload_images/2001974-2b72cc6338db1434.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 参考 - -- .NET Core版本七牛云SDK使用[https://www.cnblogs.com/OMango/p/8447480.html](https://www.cnblogs.com/OMango/p/8447480.html) -- .NET Core部署至Linux 下的Docker [http://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/](http://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/) - - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/README.md b/docs/dotnetcore/examples/README.md deleted file mode 100644 index 45f9d6d..0000000 --- a/docs/dotnetcore/examples/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# .NET Core 学习示例文档 - -浏览左侧导航菜单以深入了解文档. - -.NET Core 学习示例文档主要是结合 ASP .NET Core,集成第三方类库的示例,运用基础组件,写好Demo。 - -## 源码 -代码托管在GitHub上 [https://github.com/luoyunchong/dotnetcore-examples](https://github.com/luoyunchong/dotnetcore-examples) - -## 推荐阅读 - -- Microsoft Docs [https://docs.microsoft.com/zh-cn](https://docs.microsoft.com/zh-cn) - - 其中包含如下 - - .NET Core 指南 https://docs.microsoft.com/zh-cn/dotnet/core/ - - ASP .NET 文档 https://docs.microsoft.com/zh-cn/aspnet/ - - .NET Core CLI 文档 https://docs.microsoft.com/zh-cn/dotnet/core/tools/?tabs=netcore2x - -## 本地环境说明 -- Windows 10 (18922.rs_prerelease.190614-1427) -- .NET Core 3.0.100-preview6-012264 -- Visual Studio Code 1.35.1、Microsoft Visual Studio 2019 16.1.3 -- PowerSheel -- MySQL 5.7.25 -- Navicat Premium 12 [欢迎下载](http://blog.igeekfan.cn/2018/06/02/%E5%A4%A7%E5%90%8E%E7%AB%AF/Navicat%20Premium%2012%20%20%E7%A0%B4%E8%A7%A3%E7%89%88%E5%85%8D%E8%B4%B9%E4%B8%8B%E8%BD%BD/) -## Install - -本地开发选择SDK安装即可,还是安装 2.2的吧,3.0(19.6.29)目前还没有发布稳定版本。 - -- 安装这个 **https://dotnet.microsoft.com/download/dotnet-core/2.2** -- https://dotnet.microsoft.com/download/dotnet-core/3.0 - -安装后,在 PowerShell 中任一目录查看安装后的版本 - -~~~PowerShell -PS C:\WINDOWS\system32> dotnet --version -3.0.100-preview6-012264 -# 本地安装了好几个.net core sdk版本 -PS C:\WINDOWS\system32> dotnet --list-sdks -2.1.700 [C:\Program Files\dotnet\sdk] -2.2.300 [C:\Program Files\dotnet\sdk] -3.0.100-preview6-012264 [C:\Program Files\dotnet\sdk] -~~~ - -## CLI -全称:command-line interface,命令行界面,主要是cmd、bash(sh等等)、powershell等。 - -> 说明 **所有命令行都在windows10自带的powershell中执行。** - - -### 指定SDK版本 - .NET Core 项目默认使用最新版本的 .NET Core,在根目录使用PowerShell中执行如下命令, - - 语法 :dotnet new global.json --sdk-version -~~~ -dotnet new globaljson --sdk-version 2.2.300 -~~~ -参考 -- [dotnet new 命令行](https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22) -- [选择要使用的 .NET Core 版本](https://docs.microsoft.com/zh-cn/dotnet/core/versions/selection?view=dotnet-plat-ext-2.1) -## .NET Core - -.NET Core是什么? 官网说的太高大上了 https://docs.microsoft.com/zh-cn/dotnet/core/about - -总结,.NET Core包含如下 -- 二个RunTime - - .NET Core RunTime:基础类型系统 、垃圾回收、基元类型等, - - ASP .NET RunTime :提供WEB、LOT等应用程序的框架支持。 -- .NET Core CLI工具:各种命令行工具,创建项目、编译项目,发布项目等; -- 语言编译器:(支持C#、F#、VB等语言) -- dotnet 工具:.NET Core运行时和库的安装程序包 - -三个发布包: -- .NET Core 运行时 -- ASP .NET Core 运行时 -- .NET Core SDK:包括上面二个内容,再加上 .NET CLI工具等 - -所以本地调试时,可直接安装最全的SDK即可。 - -## 项目文档 - -目前 关于此项目的文档放到docs文件夹中,zh-Hans为中文,这样可支持多语言,欢迎翻译PR,之后会发布至 - -- 文档官网 [https://luoyunchong.github.io/vuepress-docs/](https://luoyunchong.github.io/vuepress-docs/) - -将使用abp vnext 下的modules的[docs模块](https://github.com/abpframework/abp/blob/dev/modules/docs/README.md)。不过abp vnext 现在也不稳定,0.18.1,还是有各种问题,我还是写基础模块的使用文档吧,后期完善后,发布文档网站。 - - -## 说明 -本项目也是我的学习记录,,用于测试不同类库集成的解决方案,所以用最基础的方案,**命令行**来创建项目,引用包,运行,测试等。让自己对 .net core 的原理结构了解地更加深入一些。 -- 采用的都是 Visual Studio Code/VS2019 +PowerShell运行,关于如何采用Visual Studio 2019创建项目,引用包是非常简单的,不再说明。 - - - \ No newline at end of file diff --git a/docs/dotnetcore/examples/images/imcore-chat.png b/docs/dotnetcore/examples/images/imcore-chat.png deleted file mode 100644 index 54e8217..0000000 Binary files a/docs/dotnetcore/examples/images/imcore-chat.png and /dev/null differ diff --git a/docs/dotnetcore/lin-cms/IdentityServer4-JWT.md b/docs/dotnetcore/lin-cms/IdentityServer4-JWT.md deleted file mode 100644 index 76b40e3..0000000 --- a/docs/dotnetcore/lin-cms/IdentityServer4-JWT.md +++ /dev/null @@ -1,100 +0,0 @@ -## 认证鉴权状态 -认证分为以下情况:当前角色为管理员,该分组配置了权限,该分组未分配某一方法的权限. - -状态码(StatusCode):401 UnAuthorized - -|StatusCode | 含义| -|---|---| -|401 UnAuthorized| 未授权、无权限、未登录| -|422 UNPROCESSABLE ENTITY| 令牌失效| -|200 | 访问正常| - - -1. 未登录,不带access_token,直接请求需要登录的接口、管理员接口结果一样。 - -返回结果应为:状态码:401 UNAUTHORIZED - -``` -{ - "error_code": 10000, - "msg": "认证失败,请检查请求头或者重新登陆", - "request": "GET /cms/admin/authority" -} -``` - -2. 携带access_token,但非超级管理员(admin字段为2),访问的方法为角色为超管才有权限的方法。 -``` -[LinCmsAuthorize(Roles = LinGroup.Administrator)] -``` - -返回结果应为::状态码:401 UNAUTHORIZED - -``` -{ - "error_code": 10000, - "msg": "只有超级管理员可操作", - "request": "GET /cms/admin/authority" -} -``` - -3. 携带access_token ,访问只需要登录的接口(/cms/user/auths) - -控制器或方法上指定 **[Authorize]** 或 **[LinCmsAuthorize]** 特性标签时,必须登录才能访问,否则返回第一种结果。 - -返回结果应为:状态码:200 -``` -{ - "active": 1, - "admin": 1, - "auths": [ - { - "信息": [ - { - "auth": "查看lin的信息", - "module": "信息" - } - ] - } - ], - "avatar": null, - "create_time": 1564372600000, - "email": "acs@acs.com", - "group_id": 54, - "id": 112, - "nickname": "alan", - "update_time": 1564487059000 -} -``` -4. 携带access_token,但此用户无访问此方法的权限(即该用户的组别未配置此权限)。 - -返回结果应为:状态码:401 UNAUTHORIZED -``` -{ - "error_code": 10000, - "msg": "权限不够,请联系超级管理员获得权限", - "request": "GET /cms/log/search" -} -``` - - -5. 携带过期的access_token值 -返回结果应为:状态码:401 UNAUTHORIZED -``` -{ - "error_code": 10050, - "msg": "令牌过期", - "request": "GET /cms/admin/users" -} -``` - -6. 携带不正常的access_token值,后台无法下正常解析出用户信息 -返回结果应为:状态码:422 UNPROCESSABLE ENTITY -``` -{ - "error_code": 10040, - "msg": "令牌失效", - "request": "GET /cms/admin/users" -} -``` - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/Newtonsoft.Json-question.md b/docs/dotnetcore/lin-cms/Newtonsoft.Json-question.md deleted file mode 100644 index 9e09948..0000000 --- a/docs/dotnetcore/lin-cms/Newtonsoft.Json-question.md +++ /dev/null @@ -1,167 +0,0 @@ -# Newtonsoft.Json基础问题 -它是.NET下的一个序列化、反序化的基础类库,更基础的用法还是看别人的吧,这里只说一些遇到的问题。 - -## 设置下划线 - -ContractResolver 默认是小驼峰,我想改成下划线方式,遇到了一些问题,dictionary的键未格式化 - -in controller 创建一个控制器 -```csharp -[HttpGet("getDictionary")] -public IDictionary GetDictionary() -{ - IDictionary dics = new Dictionary(); - - dics.Add("Key", "Value"); - dics.Add("KeyTest", "Value_Test"); - return dics; -} -``` -In Startup.cs -```csharp -services -.AddMvc() -.SetCompatibilityVersion(CompatibilityVersion.Version_2_2) -.AddJsonOptions(opt => -{ - - // 设置下划线方式,首字母是小写 - opt.SerializerSettings.ContractResolver = new DefaultContractResolver() - { - NamingStrategy = new SnakeCaseNamingStrategy() - }; -}); -``` - - -此时运行后,得到的是Key,而不是key,我想他的键都变成下划线方式的小写 -```json -{ - "Key": "Value", - "KeyTest": "Value_Test" -} -``` - -其他测试,增加多级,测试正常 -```csharp -[HttpGet("get")] -public dynamic Get() -{ - return new { - Content = new { - Url=Request.Path.Value, - NewUrlTest="test in new url test" - } - }; -} -``` -此时运行后,满足要求,多层结构也不会影响 -```json -{ - "content": { - "url": "/test/get", - "new_url_test": "test in new url test" - } -} - -``` - -看了Newtonsoft.Json的github,并在in this repository 搜索Dictionary,看issues中的配置项如下即可满足dictionary的键也转小写, -ProcessDictionaryKeys 功能:A flag indicating whether dictionary keys should be processed. Defaults to false. -```csharp -services -.AddMvc() -.SetCompatibilityVersion(CompatibilityVersion.Version_2_2) -.AddJsonOptions(opt => -{ - - // 设置下划线方式,首字母是小写 - opt.SerializerSettings.ContractResolver = new DefaultContractResolver() - { - NamingStrategy = new SnakeCaseNamingStrategy - { - ProcessDictionaryKeys = true - } - }; -}); -``` -```json -{ - "key": "Value", - "key_test": "Value_Test" -} -``` - -## 实现时间戳 -前台要的格式为 **1562904163734**,只有一个数字,我搜索了一下,也没找到相关的文档,本身这个类库有一些时间戳,不过他们都包含特殊字符,如/Date(1562904163734)/,好像类似这样,他好像在逗我,为啥他要加Date,怕是有毒吧。看到 -他有Converters属性可配置,即配置自己的序列化返回格式。 -```csharp -services.AddMvc() -.SetCompatibilityVersion(CompatibilityVersion.Version_2_2) -.AddJsonOptions(opt => -{ - //opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:MM:ss"; - //设置时间戳格式 - opt.SerializerSettings.Converters = new List() - { - new LinCmsTimeConverter() - }; -}); -``` - -这里的时间戳是毫秒级别 -```csharp -/// -/// 配合LinCMS中的时间戳 后台只返回 1562904163734 -/// -public class LinCmsTimeConverter : DateTimeConverterBase -{ - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - double javaScriptTicks = 0; - if (value is DateTime dateTime) - { - javaScriptTicks = ConvertDateTimeInt(dateTime); - } - else - { - if (!(value is DateTimeOffset dateTimeOffset)) - throw new JsonSerializationException("Expected date object value."); - javaScriptTicks = ConvertDateTimeInt(dateTimeOffset.ToUniversalTime().UtcDateTime); - - } - writer.WriteValue(javaScriptTicks); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - return ConvertIntDateTime(double.Parse(reader.Value.ToString())); - } - - /// - /// 日期转换为时间戳(时间戳单位毫秒) - /// - /// - /// - public static DateTime ConvertIntDateTime(double milliseconds) - { - return new DateTime(1970, 1, 1).AddMilliseconds(milliseconds); - } - - - public static double ConvertDateTimeInt(DateTime aDt) - { - return (aDt - new DateTime(1970, 1, 1)).TotalMilliseconds; - } -} -``` - -## 参考 - -- [https://github.com/JamesNK/Newtonsoft.Json/issues/2088](https://github.com/JamesNK/Newtonsoft.Json/issues/2088) -- [https://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_Serialization_NamingStrategy_ProcessDictionaryKeys.htm](https://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_Serialization_NamingStrategy_ProcessDictionaryKeys.htm) -- [https://blog.csdn.net/yw1688/article/details/38492583](https://blog.csdn.net/yw1688/article/details/38492583) -- [https://www.jianshu.com/p/c53b1a2a121d](https://www.jianshu.com/p/c53b1a2a121d) - - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/Open-source-road.md b/docs/dotnetcore/lin-cms/Open-source-road.md deleted file mode 100644 index d94b75e..0000000 --- a/docs/dotnetcore/lin-cms/Open-source-road.md +++ /dev/null @@ -1,77 +0,0 @@ - -## 开源lin-cms-dotnetcore -- 地址:https://github.com/luoyunchong/lin-cms-dotnetcore - -1.什么是cms? - -Content Management System,内容管理系统。 - -2.dotnetcore是什么 - -.NET Core,是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理,采用宽松的MIT协议,可构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序 - -3.lin-cms 是什么 - -Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问前端仓库。官方团队产品了解请访问TaleLin - -4.lin-cms-dotnetcore有哪些特点? - -前后端分离,提供后端接口,更少的依赖,后续将实现模块化安装与卸载。 -- 用户管理、分组管理、分组权限管理、日志系统、文件上传等 -- 更多功能(自定义扩展-模块系统) - - - -## 设计如下 - -#### 字典管理 -### 我原本想实现这样的功能: -BaseType 1 对BaseItem多。 - -如:标签管理,一个文章下可以设置多个标签,原本需要设计表Tag,字段也大抵为Id,Name,Sort及关联表。 -我们使用BaseType、BaseItem实现。 -BaseType中TypeCode为tag,FullName为标签,id为1时。 -BaseItem中BaseTypeId为1,ItemCode为编码,ItemName为标签。ItemCode为不重复的字符串即可。 - -另Tag与Article的关联表,需要另设计一个表。 - -当我们要实现文章类别的下拉,原本需要设计一个表ArticleType,有字段,id,name,sort等。 -我们可以通过BaseType、BaseItem来实现,从而简化这些基础数据。 -BaseType有一条数据,TypeCode为 字符串category、FullName文章类别,BaseItem存多个文章类别(Java、大数据、Python、C#等),编码不同即可。 - - -1. 表结构 - -#### base_type (字典类别管理) -| 字段 | 类型 | 备注 | -| --------- | ----------- | -------- | -| id | int | -| type_code | varchar(50) | 类别编码 | -| full_name | varchar(50) | 全称 | -| sort_code | int | 排序码 | - -#### base_type (字典管理) -| 字段 | 类型 | 备注 | -| ------------ | ----------- | ------------------------- | -| id | int | -| base_type_id | int | 类别id(关联base_type的id) | -| item_code | varchar(50) | 字典编码 | -| item_name | varchar(50) | 字典全称 | -| sort_code | int | 排序码 | - - -#### 但现实总是事与愿违 -> 后台取文章列表时,想要取出文章对应的分类,手动join时,总觉得join的表会有些奇怪。 - -当然还有其他原因,**局限性**: -1. 比如使用了这个字典,分类需要增加一个图片字段,就不能满足要求,那怎么办呢,做不了。 -2. 比如标签需要实现这个标签下有多少个文章,通过统计也能实现, - -使用FreeSql实现时,如果二个表之间没有导航属性,是更复杂的。 - - - -## 前端cms -扩展实现一个博客,项目地址:[https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue) - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/Production-Design.md b/docs/dotnetcore/lin-cms/Production-Design.md deleted file mode 100644 index 1d6cc88..0000000 --- a/docs/dotnetcore/lin-cms/Production-Design.md +++ /dev/null @@ -1,74 +0,0 @@ -# 产品设计 - -## 产品设计-评论模块的设计 -### 1.主题式 -将评论分为二级,第一级采用时间倒序,二级按照时间正序,有助于理解上下文关系。 - - -用户操作: -- [x] 评论随笔(内容支持超链接、emoji) -- [x] 点赞评论/取消点赞 -- [x] 回复评论 -- [x] 删除自己的评论 - -运营操作: -- [x] 审核通过/拉黑评论 -- [x] 删除任何评论 -- [x] 拉黑后的显示逻辑。(保留当前区块、显示内容为:该评论因违规被拉黑) -- 删除:(如果是二级评论,直接软删除,如果是一级评论,软删除子评论和当前评论-需要提前提醒用户) -交互设计 -- 评论的字数长度(500)、emoji。 -- 点赞交互-动画、消息通知/推送 -- 评论区域元素,需要有明确可点击的区域,会跳转到哪个地方。 - -### 优化 -- 精选评论 - - -## 排行榜见解 - -排行榜从心理学上分析,主要从四个方面影响着您:**寻找权威 、参与比较 、关注主流 、自我确认。** - -如何设计一个简单的排行榜呢。。 - - -在一个博客随笔中,我们设计一个3天、七天(周榜)、30天(月榜)、全部的榜单。以浏览量(权重1)、点赞量(20)、评论量(30)。权重可自己定义。 - -1.默认取最新的随笔 - -前台传create_time时,使用如下sql -``` -select * from `blog_article` order by create_time desc; -``` -2.传排序方式为最近n天的热榜时。 - -参数:THREE_DAYS_HOTTEST(三天)、WEEKLY_HOTTEST(七天)、MONTHLY_HOTTEST(一个月)、HOTTEST(全部) - -mysql 查询当前日期时间前三天数据 -``` -select date_sub(now() ,interval 3 day); -``` -根据权重查询 -``` -select * from `blog_article` a -where a.`create_time`>(select date_sub(now() ,interval 3 day)) -order by (a.`view_hits` + a.`likes_quantity` * 20 + a.`comment_quantity` * 30) DESC, a.`create_time` DESC - -``` - -## 创作者中心 - -### 用户主页 - -统计值:阅读总数,点赞总数,关注者总数 - -### 个人设置 -用户信息、密码修改 - -## - -## 更多参考 -- [万字长文深度分析:产品排行榜的设计和玩法](http://www.woshipm.com/pd/1255548.html) -- [想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜](https://zhuanlan.zhihu.com/p/52322777) - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/README.md b/docs/dotnetcore/lin-cms/README.md deleted file mode 100644 index bf6bd6b..0000000 --- a/docs/dotnetcore/lin-cms/README.md +++ /dev/null @@ -1,135 +0,0 @@ -

    - - - -

    - Lin CMS .NET Core -

    - -😃 A simple and practical CMS implememted by .NET Core 3.1 - - - -## 项目简介 - - - - -![Build Status](https://travis-ci.org/luoyunchong/lin-cms-dotnetcore.svg?branch=master) -![](https://img.shields.io/badge/.NETCore-2.2.0-3963bc.svg) -![](https://img.shields.io/badge/license-MIT-3963bc.svg) -![](https://img.shields.io/badge/developer-IGeekFan-3963bc.svg) - - -本项目是完全出于个人喜爱,看到Lin-cms有了python,node.js,社区也有人出了[lin-cms-tp5](https://github.com/ChenJinchuang/lin-cms-tp5)的版本 - -本项目是 Lin CMS 后端的 [.NET Core 2.2](https://docs.microsoft.com/zh-cn/dotnet/core/)的 实现, - -## 什么是 Lin CMS? - - Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内容管理系统框架**。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问[**前端仓库**](https://github.com/TaleLin/lin-cms-vue)。官方团队产品了解请访问[**TaleLin**](https://github.com/TaleLin) - -## 线上文档地址(完善中) - -[https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/](https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/) - -## 线上 Demo -- 本项目swagger地址 [http://47.106.80.39:88/swagger/index.html](http://47.106.80.39:88/swagger/index.html) -- 用户端 lin-cms-vvlog [http://47.106.80.39:8080/index](http://47.106.80.39:8080/index) - - 普通用户:710277267@qq.com - - 密码:123qwe - -- 管理员 lin-cms-vue [http://47.106.80.39:8081/#/](http://47.106.80.39:8081/#/) - - 管理员: admin - - 密码:123qwe - -## 前端 -- 在原[开源项目](https://github.com/TaleLin/lin-cms-vue)中增加了博客文章、评论、留言板、标签、文章分类专栏、插件式功能(还没有),具体特点查看如下[lin-cms-dotnetcore功能模块的设计](https://blog.igeekfan.cn/2019/11/24/lin-cms-dotnetcore/design/) -- 管理端 [https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue) -- 用户端 [https://github.com/luoyunchong/lin-cms-vvlog](https://github.com/luoyunchong/lin-cms-vvlog) - -- 官方地址 [http://face.cms.7yue.pro/#/login](http://face.cms.7yue.pro/#/login) - - 用户名: super - - 密码: 123456 -- 本项目swagger地址 [http://47.106.80.39:5001/swagger/index.html](http://47.106.80.39:5001/swagger/index.html) - -## 前端 -- 在原[开源项目](https://github.com/TaleLin/lin-cms-vue)中增加了博客文章、回复、留言板、标签、文章分组管理、插件式功能(还没有) -- [https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue) - -### Lin CMS 的特点 - -Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。 - -### Lin CMS 是一个前后端分离的 CMS 解决方案 - -这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统, - -首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 Razor等模板技术。 - -服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。 - -但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。 - -其次,单页面应用程序的体验本身就要好于传统网站。 - -### 框架本身已内置了 CMS 常用的功能 - -Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可 - -更多关于Lin CMS的介绍请访问[Lin CMS线上文档](http://doc.cms.7yue.pro/) - -## 所需基础 - -由于 Lin 采用的是前后端分离的架构,所以你至少需要熟悉 C# 和 Vue。 - -### 后端 C# -该项目的Lin 的服务端框架是基于[.NET Core 3.1](https://docs.microsoft.com/zh-cn/dotnet/core/)构建的,所以如果你比较熟悉Mvc、WebAPI、过滤器等概念,或者是 有.NET Framework中Mvc开发经验,相信你一定很容易写出代码。 - -### 后端主要技术 -- 数据库:FreeSql+MySQL5.6 -- ASP.NET Core3.1+MVC -- 简化对象映射:AutoMapper -- 身份认证框架:IdentityServer4 -- Json Web令牌:JWT -- 文档:Swagger -- 序列化:Newtonsoft.Json -- 测试框架:Xunit -- 日志 NLog -- 简化注入服务:Scrutor -- 通用扩展方法 Z.ExtensionMethods - -### 前端 -前端需要开发者比较熟悉 Vue 的,另外需要了解 ES6,axios,ElementUi、webpack、Vuex、Vue-Router等等等 - -## 讨论交流 - -### QQ 交流群 - -- 林间有风(lin-cms-vue) QQ 群号:643205479 -- .NET Core搬砖队(lin-cms-dotnetcore) QQ群号:762828442 - - - - - -### 微信公众号 - -微信搜索:林间有风 - - - - -## 下个版本开发计划 -1. 实现模块化开发、重构核心库结构,支持基础组件安装与卸载。 -2. 实现abp vnext的文档的功能 [https://docs.abp.io/en/abp/latest](https://docs.abp.io/en/abp/latest) -3. 写文档。 -4. 更多细节介绍:https://github.com/luoyunchong/lin-cms-dotnetcore/issues/3 - - [ ] 部署 - - [ ] 系统访问日志、错误日志可视化 - -## 开源地址 -* Gitee 链接 [https://gitee.com/igeekfan/lin-cms-dotnetcore](https://gitee.com/igeekfan/lin-cms-dotnetcore) -* GitHub 链接 [https://github.com/luoyunchong/lin-cms-dotnetcore](https://github.com/luoyunchong/lin-cms-dotnetcore) - diff --git a/docs/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.md b/docs/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.md deleted file mode 100644 index d5ac3f9..0000000 --- a/docs/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.md +++ /dev/null @@ -1,181 +0,0 @@ -## 获取控制器及方法特性标签 - -> .NET Core 反射获取所有控制器及方法上特定标签. - -有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把他的参数,放入一个集合并缓存起来,以便后面使用此数据用于权限验证。 - -我们通过反射获取所有控制器下及方法的Attribute。 - -## LinCmsAuthorizeAttribute是什么 -其代码非常简单,用于自定义权限验证,通过重写OnAuthorizationAsync方法,实现固定权限可分配给动态角色(也能分配给动态用户)。主要就**基于权限的授权**的实现进行研究,实现方法级别的权限验证。 -- [https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html](https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html) - -当然,这个只是部分代码,完整代码请查看最下方开源地址,其中LinCmsAuthorizeAttribute继承AuthorizeAttribute,拥有指定角色权限控制,当Permission未指定时,当过滤器与Authorize功能相同。Module是指模块,即多个权限,属于同一个模块,方便前台展示为树型结构。Permission属性的值不可重复。 - - -``` -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)] -public class LinCmsAuthorizeAttribute : AuthorizeAttribute, IAsyncAuthorizationFilter -{ - public string Permission { get; set; } - public string Module { get; set; } - - public LinCmsAuthorizeAttribute() - { - - } - - public LinCmsAuthorizeAttribute(string permission,string module) - { - Permission = permission; - Module = module; - } - - public LinCmsAuthorizeAttribute(string permission,string module, string policy) : base(policy) - { - Permission = permission; - Module = module; - } - - public async Task OnAuthorizationAsync(AuthorizationFilterContext context) - { - if (Permission == null) return; - var authorizationService = (IAuthorizationService)context.HttpContext.RequestServices.GetService(typeof(IAuthorizationService)); - var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, null, new OperationAuthorizationRequirement() { Name = Permission }); - if (!authorizationResult.Succeeded) - { - context.Result = new ForbidResult(); - } - } - - public override string ToString() - { - return $"\"{base.ToString()}\",\"Permission:{Permission}\",\"Module:{Module}\",\"Roles:{Roles}\",\"Policy:{Policy}\",\"AuthenticationSchemes:{AuthenticationSchemes}\""; - } -} -``` -## Controller -在 LinCms.Web中的Controller,至于为什么Permission为中文,目前的主要原因,此项目用于适配 [Lin-CMS-VUE](https://github.com/TaleLin/lin-cms-vue)项目,所以于平常我们以某个字符串作为权限名不同,但不须大惊小怪,道理相同。 - -``` -[Route("cms/log")] -[ApiController] -public class LogController : ControllerBase -{ - private readonly ILogService _logService; - - public LogController(ILogService logService) - { - _logService = logService; - } - - [HttpGet("users")] - [LinCmsAuthorize("查询日志记录的用户", "日志")] - public List GetLoggedUsers([FromQuery]PageDto pageDto) - { - return _logService.GetLoggedUsers(pageDto); - } - - - [HttpGet] - [LinCmsAuthorize("查询所有日志", "日志")] - public PagedResultDto GetLogs([FromQuery]LogSearchDto searchDto) - { - return _logService.GetLogUsers(searchDto); - } - - [HttpGet("search")] - [LinCmsAuthorize("搜索日志", "日志")] - public PagedResultDto SearchLogs([FromQuery]LogSearchDto searchDto) - { - return _logService.GetLogUsers(searchDto); - } -} -``` -## 测试类获取方法上的特定标签 -in xunit test 项目工程中,开始我们的测试 - -``` -[Fact] -public void GetAssemblyMethodsAttributes() -{ - var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable() - .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList(); - - assembly.ForEach(r => - { - foreach (var methodInfo in r.GetMethods()) - { - foreach (Attribute attribute in methodInfo.GetCustomAttributes()) - { - if (attribute is LinCmsAuthorizeAttribute linCmsAuthorize) - { - _testOutputHelper.WriteLine(linCmsAuthorize.ToString()); - } - } - } - }); -} -``` -## 方法结果 -可在输出文本中查看,正是我们想要的东西,最后一行,是其他Controller中的内容,而且我们重写了ToString(),所以我们能看到其属性。 - -``` -"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询日志记录的用户","Module:日志","Roles:","Policy:","AuthenticationSchemes:" -"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询所有日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:" -"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:搜索日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:" -"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查看lin的信息","Module:信息","Roles:","Policy:","AuthenticationSchemes:" - -``` - -## 获取控制器上特性标签 -``` -/// -/// 获取控制器上的LinCmsAuthorizeAttribute -/// -/// "LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:" -[Fact] -public void GetControllerAttributes() -{ - var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable() - .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList(); - - assembly.ForEach(d => - { - var linCmsAuthorize = d.GetCustomAttribute(); - if (linCmsAuthorize != null) - { - _testOutputHelper.WriteLine(linCmsAuthorize.ToString()); - } - }); -} -``` - -## Controller结果 -只有AdminController加了此标签,所以只有一行。 -``` -"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:" -``` - -此时Roles为Administrator,Permission及Module都是null, -这是因为只有AdminController中加了LinGroup.Administrator="Administrator"字符串,在登录过程中,已经给当前登录用户设置了 new Claim(ClaimTypes.Role,user.IsAdmin()?LinGroup.Administrator:user.GroupId.ToString()),即"Administrator,当用户访问AdminController中的方法时,LinCmsAuthorize并没有做相关验证,都是AuthorizeAttribute,实现了固定角色权限的判断及登录的判断。LinCmsAuthorize完成了固定权限设置为不同的动态角色后,判断用户是否拥有此权限。 -``` -[LinCmsAuthorize(Roles = LinGroup.Administrator)] -public class AdminController : ControllerBase -{ - ... -} -``` - - - -## 参考 -- c# – 如何在asp. net core rc2中获取控制器的自定义属性 [https://codeday.me/bug/20181207/453278.html](https://codeday.me/bug/20181207/453278.html) -- - - - -## 开源地址 -- [github.com/luoyunchong/lin-cms-dotnetcore](github.com/luoyunchong/lin-cms-dotnetcore) - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/StopWords.md b/docs/dotnetcore/lin-cms/StopWords.md deleted file mode 100644 index 05acfe9..0000000 --- a/docs/dotnetcore/lin-cms/StopWords.md +++ /dev/null @@ -1,189 +0,0 @@ - -## 全局敏感词处理 - -基于ToolGood.Words类库,配合敏感字的文本文件,写的API接口。 -- [https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86) - -一共二种方式 - -## 1.ToolGood.Words -类库配合敏感库 -- [ToolGood.Words](https://github.com/toolgood/ToolGood.Words) - -简单用法 - -``` -[Fact] -public void IssuesTest_17() -{ - var illegalWordsSearch = new IllegalWordsSearch(); - string s = "中国|zg人|abc"; - illegalWordsSearch.SetKeywords(s.Split('|')); - var str = illegalWordsSearch.Replace("我是中美国人厉害中国完美abcddb好的", '*'); - - Assert.Equal("我是中美国人厉害**完美***ddb好的", str); -} -``` -配合敏感库文本文件,写的工具类 - - -二个文件放到wwwroot/_Illegal目录下,通过ReplaceStopWords方法调用即可对 -- [https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt](https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt) -- [https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt](https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt) - -``` -public class ToolGoodUtils -{ - //敏感库只要这二个文件存在即可 - //本地敏感库缓存-https://github.com/toolgood/ToolGood.Words/tree/master/csharp/ToolGood.Words.Test/_Illegal - //因为需要上传至github并同步gitee,安全起见,所以未上传至git,需要自行下载并复制 - private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt"; - private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt"; - - private const string InfoPath = "wwwroot/_Illegal/IllegalInfo.txt"; - private const string BitPath = "wwwroot/_Illegal/IllegalBit.iws"; - - private static IllegalWordsSearch _search; - /// - /// 本地敏感库,文件修改后,重新创建缓存Bit - /// - /// - public static IllegalWordsSearch GetIllegalWordsSearch() - { - if (_search == null) - { - string ipath = Path.GetFullPath(InfoPath); - if (File.Exists(ipath) == false) - { - _search = CreateIllegalWordsSearch(); - } - else - { - var texts = File.ReadAllText(ipath).Split('|'); - if (new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") != - texts[0] || - new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") != - texts[1] - ) - { - _search = CreateIllegalWordsSearch(); - } - else - { - var s = new IllegalWordsSearch(); - s.Load(Path.GetFullPath(BitPath)); - _search = s; - } - } - } - return _search; - } - - private static IllegalWordsSearch CreateIllegalWordsSearch() - { - string[] words1 = File.ReadAllLines(Path.GetFullPath(KeywordsPath), Encoding.UTF8); - string[] words2 = File.ReadAllLines(Path.GetFullPath(UrlsPath), Encoding.UTF8); - var words = new List(); - foreach (var item in words1) - { - words.Add(item.Trim()); - } - foreach (var item in words2) - { - words.Add(item.Trim()); - } - - var search = new IllegalWordsSearch(); - search.SetKeywords(words); - - search.Save(Path.GetFullPath(BitPath)); - - var text = new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") + "|"+ new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"); - File.WriteAllText(Path.GetFullPath(InfoPath), text); - - return search; - } -} -``` -## 2. 循环使用Replace -方案:通过维护敏感库,循环replace -大佬分享给我的,稍微改成了从文件中获取敏感字。 - - -``` -public static class StopWords -{ - - static readonly ConcurrentDictionary FunNlpDataSensitive = new ConcurrentDictionary(); - static readonly ConcurrentDictionary ReplaceNewValue = new ConcurrentDictionary(); - - private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt"; - private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt"; - - - static StopWords() - { - LoadDataFromFile(); - } - - public static void LoadDataFromFile() - { - string words1 = File.ReadAllText(Path.GetFullPath(KeywordsPath), Encoding.UTF8); - string words2 = File.ReadAllText(Path.GetFullPath(UrlsPath), Encoding.UTF8); - LoadDataFromText(words1); - LoadDataFromText(words2); - } - - - public static void LoadDataFromText(string text) - { - int oldcount = FunNlpDataSensitive.Count; - foreach (string wd in text.Split('\n')) - { - string keykey = wd.Trim().Trim('\r', '\n').Trim(); - if (string.IsNullOrEmpty(keykey)) continue; - FunNlpDataSensitive.TryAdd(keykey, true); - if (ReplaceNewValue.ContainsKey(keykey.Length) == false) - ReplaceNewValue.TryAdd(keykey.Length, "".PadRight(keykey.Length, '*')); - } - Console.WriteLine($"敏感词加载完毕,增加数量:{FunNlpDataSensitive.Count - oldcount}"); - } - - - /// - /// 替换所有敏感词为 * - /// - /// - /// - public static string ReplaceStopWords(this string that) - { - foreach (var wd in FunNlpDataSensitive.Keys) - that = that.Replace(wd, ReplaceNewValue.TryGetValue(wd.Length, out var tryval) ? tryval : "".PadRight(wd.Length, '*')); - return that; - } -} -``` - -## FreeSql全局处理敏感词 -使用FreeSql这个ORM时,全局处理string类型的值,进行敏感词处理。代码在StartUp.cs的构造函数中。 -``` -//敏感词处理 -IllegalWordsSearch illegalWords = ToolGoodUtils.GetIllegalWordsSearch(); - -Fsql.Aop.AuditValue += (s, e) => -{ - if (e.Column.CsType == typeof(string) && e.Value != null) - { - string oldVal = (string)e.Value; - string newVal = illegalWords.Replace(oldVal); - //第二种处理敏感词的方式 - //string newVal = oldVal.ReplaceStopWords(); - if (newVal != oldVal) - { - e.Value = newVal; - } - } -}; -``` - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/ToolGood.Words.md b/docs/dotnetcore/lin-cms/ToolGood.Words.md deleted file mode 100644 index 12b5b1a..0000000 --- a/docs/dotnetcore/lin-cms/ToolGood.Words.md +++ /dev/null @@ -1,190 +0,0 @@ - -## 全局敏感词处理 - -基于ToolGood.Words类库,配合敏感字的文本文件,写的API接口。 -- [https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86](https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-%E6%95%8F%E6%84%9F%E8%AF%8D%E5%A4%84%E7%90%86) - -一共二种方式 - -## 1.ToolGood.Words -类库配合敏感库 -- [ToolGood.Words](https://github.com/toolgood/ToolGood.Words) - -简单用法 - -``` -[Fact] -public void IssuesTest_17() -{ - var illegalWordsSearch = new IllegalWordsSearch(); - string s = "中国|zg人|abc"; - illegalWordsSearch.SetKeywords(s.Split('|')); - var str = illegalWordsSearch.Replace("我是中美国人厉害中国完美abcddb好的", '*'); - - Assert.Equal("我是中美国人厉害**完美***ddb好的", str); -} -``` -配合敏感库文本文件,写的工具类 - - -二个文件放到wwwroot/_Illegal目录下,通过ReplaceStopWords方法调用即可对 -- [https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt](https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalKeywords.txt) -- [https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt](https://github.com/toolgood/ToolGood.Words/blob/master/csharp/ToolGood.Words.Test/_Illegal/IllegalUrls.txt) - -``` -public class ToolGoodUtils -{ - //敏感库只要这二个文件存在即可 - //本地敏感库缓存-https://github.com/toolgood/ToolGood.Words/tree/master/csharp/ToolGood.Words.Test/_Illegal - //因为需要上传至github并同步gitee,安全起见,所以未上传至git,需要自行下载并复制 - private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt"; - private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt"; - - private const string InfoPath = "wwwroot/_Illegal/IllegalInfo.txt"; - private const string BitPath = "wwwroot/_Illegal/IllegalBit.iws"; - - private static IllegalWordsSearch _search; - /// - /// 本地敏感库,文件修改后,重新创建缓存Bit - /// - /// - public static IllegalWordsSearch GetIllegalWordsSearch() - { - if (_search == null) - { - string ipath = Path.GetFullPath(InfoPath); - if (File.Exists(ipath) == false) - { - _search = CreateIllegalWordsSearch(); - } - else - { - var texts = File.ReadAllText(ipath).Split('|'); - if (new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") != - texts[0] || - new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") != - texts[1] - ) - { - _search = CreateIllegalWordsSearch(); - } - else - { - var s = new IllegalWordsSearch(); - s.Load(Path.GetFullPath(BitPath)); - _search = s; - } - } - } - return _search; - } - - private static IllegalWordsSearch CreateIllegalWordsSearch() - { - string[] words1 = File.ReadAllLines(Path.GetFullPath(KeywordsPath), Encoding.UTF8); - string[] words2 = File.ReadAllLines(Path.GetFullPath(UrlsPath), Encoding.UTF8); - var words = new List(); - foreach (var item in words1) - { - words.Add(item.Trim()); - } - foreach (var item in words2) - { - words.Add(item.Trim()); - } - - var search = new IllegalWordsSearch(); - search.SetKeywords(words); - - search.Save(Path.GetFullPath(BitPath)); - - var text = new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") + "|"+ new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"); - File.WriteAllText(Path.GetFullPath(InfoPath), text); - - return search; - } -} -``` -## 2. 循环使用Replace -方案:通过维护敏感库,循环replace -大佬分享给我的,稍微改成了从文件中获取敏感字。 - - -``` -public static class StopWords -{ - - static readonly ConcurrentDictionary FunNlpDataSensitive = new ConcurrentDictionary(); - static readonly ConcurrentDictionary ReplaceNewValue = new ConcurrentDictionary(); - - private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt"; - private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt"; - - - static StopWords() - { - LoadDataFromFile(); - } - - public static void LoadDataFromFile() - { - string words1 = File.ReadAllText(Path.GetFullPath(KeywordsPath), Encoding.UTF8); - string words2 = File.ReadAllText(Path.GetFullPath(UrlsPath), Encoding.UTF8); - LoadDataFromText(words1); - LoadDataFromText(words2); - } - - - public static void LoadDataFromText(string text) - { - int oldcount = FunNlpDataSensitive.Count; - foreach (string wd in text.Split('\n')) - { - string keykey = wd.Trim().Trim('\r', '\n').Trim(); - if (string.IsNullOrEmpty(keykey)) continue; - FunNlpDataSensitive.TryAdd(keykey, true); - if (ReplaceNewValue.ContainsKey(keykey.Length) == false) - ReplaceNewValue.TryAdd(keykey.Length, "".PadRight(keykey.Length, '*')); - } - Console.WriteLine($"敏感词加载完毕,增加数量:{FunNlpDataSensitive.Count - oldcount}"); - } - - - /// - /// 替换所有敏感词为 * - /// - /// - /// - public static string ReplaceStopWords(this string that) - { - foreach (var wd in FunNlpDataSensitive.Keys) - that = that.Replace(wd, ReplaceNewValue.TryGetValue(wd.Length, out var tryval) ? tryval : "".PadRight(wd.Length, '*')); - return that; - } -} -``` - -## FreeSql全局处理敏感词 -使用FreeSql这个ORM时,全局处理string类型的值,进行敏感词处理。代码在StartUp.cs的构造函数中。 -``` -//敏感词处理 -IllegalWordsSearch illegalWords = ToolGoodUtils.GetIllegalWordsSearch(); - -Fsql.Aop.AuditValue += (s, e) => -{ - if (e.Column.CsType == typeof(string) && e.Value != null) - { - string oldVal = (string)e.Value; - string newVal = illegalWords.Replace(oldVal); - //第二种处理敏感词的方式 - //string newVal = oldVal.ReplaceStopWords(); - if (newVal != oldVal) - { - e.Value = newVal; - } - } -}; -``` - - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/dependency-injection.md b/docs/dotnetcore/lin-cms/dependency-injection.md deleted file mode 100644 index 9afdf33..0000000 --- a/docs/dotnetcore/lin-cms/dependency-injection.md +++ /dev/null @@ -1,124 +0,0 @@ - -# 依赖注入 - -官网介绍 - -[https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2](https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2) - -## Scrutor -- 开源地址[https://github.com/khellang/Scrutor](https://github.com/khellang/Scrutor) -- 参考文档 [https://www.cnblogs.com/catcher1994/p/10316928.html](https://www.cnblogs.com/catcher1994/p/10316928.html) -手动管理依赖注入过于麻烦,当有多个仓储,服务,无法统一注入,Scrutor能帮助我们简化ASP.NET Core的DI注册。 - -在ConfigServices中,我们原本需要这样子依次注入仓储,服务和其他接口及实现,当有多个仓储时,这样就过于繁琐。 -``` -services.AddTransient(); -services.AddTransient(); -services.AddTransient(); -``` - -## Serivce后缀服务注入DI -当我们有多个Service后缀的服务时,使用以下方法,可将服务扫描只留下以Serivce结尾的类,将其类型注册为提供所有公共接口生成服务,其生命周期为Transient, -``` -services.Scan(scan => scan - //加载Startup这个类所在的程序集 - .FromAssemblyOf() - // 表示要注册那些类,上面的代码还做了过滤,只留下了以 Service 结尾的类 - .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service", StringComparison.OrdinalIgnoreCase))) - //表示将类型注册为提供其所有公共接口作为服务 - .AsImplementedInterfaces() - //表示注册的生命周期为 Transient - .WithTransientLifetime() - ); - -``` -## ITransientDependency -新建一个空接口,当其他类继承此接口后,统一注入到DI中,以Transient的生命周期。 -``` -namespace LinCms.Zero.Dependency -{ - public interface ITransientDependency - { - } -} -``` -## 接口 - -``` -public interface ICurrentUser -{ - int? Id { get; } - - int? GroupId { get; } - - bool? IsAdmin { get; } -} - ``` -## 模拟实现 -``` - public class CurrentUser : ICurrentUser, ITransientDependency - { - - public int? Id => 1; - public int? GroupId => 2; - public bool? IsAdmin => true; - } -``` - -扫描所有继承ITransientDependency的实现。 -``` - services.Scan(scan => scan - // We start out with all types in the assembly of ITransientService - .FromAssemblyOf() - // AddClasses starts out with all public, non-abstract types in this assembly. - // These types are then filtered by the delegate passed to the method. - // In this case, we filter out only the classes that are assignable to ITransientService. - .AddClasses(classes => classes.AssignableTo()) - // We then specify what type we want to register these classes as. - // In this case, we want to register the types as all of its implemented interfaces. - // So if a type implements 3 interfaces; A, B, C, we'd end up with three separate registrations. - .AsImplementedInterfaces() - // And lastly, we specify the lifetime of these registrations. - .WithTransientLifetime() - ); - -``` - -## 如何使用 -在其他类中使用此接口 -``` -[ApiController] -[Route("cms/user")] -public class UserController : ControllerBase -{ - private readonly ICurrentUser _currentUser; - - public UserController(ICurrentUser currentUser) - { - _currentUser = currentUser; - } - - [HttpGet] - public int GetUser() - { - return _currentUser.Id; - } -} -``` - -## 统一注入 -当然,我们可以统一注入,而非写二次servics.Scan -``` -services.Scan(scan => scan - .FromAssemblyOf() - .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service",StringComparison.OrdinalIgnoreCase))) - .AsImplementedInterfaces() - .WithTransientLifetime() - .FromAssemblyOf() - .AddClasses(classes => classes.AssignableTo()) - .AsImplementedInterfaces() - .WithTransientLifetime() - ); -``` - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/dev-start.md b/docs/dotnetcore/lin-cms/dev-start.md deleted file mode 100644 index 5144964..0000000 --- a/docs/dotnetcore/lin-cms/dev-start.md +++ /dev/null @@ -1,21 +0,0 @@ -# 开发起步 - - -## 项目结构 - -无 - -## 类库使用介绍 - -### FreeSql - -- [主要在介绍FreeSql在ASP.NTE Core WebApi中如何使用的过程,完成一个最简单的博客系统的后端接口](https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.html) - -- [本文使用ASP .NET Core的WEB API,构建一个RESTful风格的接口,使用Freesql访问MySQL数据库,实现二个表的简单博客,并集成AutoMapper。](https://luoyunchong.github.io/vuepress-docs/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.html) - -### IdentityServer4 - - -- [IdentityServer4 在本项目中的应用](/dotnetcore/examples/IdentityServer4.html) - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/dotnetcore-start.md b/docs/dotnetcore/lin-cms/dotnetcore-start.md deleted file mode 100644 index 9491d3e..0000000 --- a/docs/dotnetcore/lin-cms/dotnetcore-start.md +++ /dev/null @@ -1,125 +0,0 @@ -# 后端准备 - -## Server 端必备环境 -* 安装软件开发包 [.NET Core SDK 2.2](https://dotnet.microsoft.com/download/dotnet-core/2.2) -* 安装开发工具 [Visual Studio 2019](https://visualstudio.microsoft.com/zh-hans/vs/?rr=https%3A%2F%2Fcn.bing.com%2F) -* 安装MySQL(version: 5.6+,别装8.0+,未测试) - - -## 获取工程项目 -```bash -git clone https://github.com/luoyunchong/lin-cms-dotnetcore.git -``` - -## 数据库配置 - -文件位置src/LinCms.Web/appsettings.json,当数据库中存储表情包是,Charset为utf8mb4 - -**请务必根据自己的实际情况修改此配置项** -```json -"ConnectionStrings": { - "Default": "Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=LinCms;Charset=utf8;SslMode=none;Max pool size=10" -} -``` -## 数据迁移 -该项目使用[FreeSql](https://github.com/2881099/FreeSql),默认自动迁移数据表结构,**需要自己创建数据库,名字为LinCms**,无须用户操作,但无数据,而且只有访问到表时才会创建某个表,所以用户可将[备份SQL](https://github.com/luoyunchong/lin-cms-dotnetcore/blob/master/docs/sql/lincms.sql)放到Mysql中生成,还原表结构及数据。 - - -## 1.vscode命令行运行 -使用vscode打开项目, -### 切换到LinCms.Web目录 -``` - D:\code\github\lin-cms-dotnetcore> cd src\LinCms.Web -``` -### 编译、安装依赖包 -``` -D:\code\github\lin-cms-dotnetcore\src\LinCms.Web> dotnet build -``` -### 运行 -``` -D:\code\github\lin-cms-dotnetcore\src\LinCms.Web> dotnet run watch -Now listening on: https://localhost:5001 -Now listening on: http://localhost:5000 -Application started. Press Ctrl+C to shut down. -``` -这时候打开 https://localhost:5001/swagger/index.html,即可看到swagger页面。 - -## 2.visual studio 2019运行 - -双击lin-cms-dotnetcore.sln即可使用vs2019打开项目。右键解决方案,点击生成解决方案,然后,再单击LinCms .Web,即可自动启动后台服务。 - -![](https://ae01.alicdn.com/kf/H70086026eaca4dc8ab4806ee1d07443bP.jpg) - -会打开浏览器,访问[https://localhosst:5001/swagger/index.html](https://localhosst:5001/swagger/index.html),会看到swagger的文档。 - -![](https://ae01.alicdn.com/kf/He52bc4d3708242d2995419bb584e1f53Q.jpg) - - - -## 部署至linux(Ubuntu16.06) - -- [https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Ubuntu/](https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Ubuntu/) - -## 部署至Docker - -- [https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/](https://blog.igeekfan.cn/2019/06/09/dotnetcore/ASP.NET-Core-Deploy-To-Docker-Ubuntu/) - -## 部署前准备 -因为该项目基于IdentityServer4,实现的授权认证服务, - -开发阶段使用`AddDeveloperSigningCredential()`方法即可完成签名认证,但是在生产环境,我们必须使用`AddSigningCredential()`方法并且使用OpenSSL生成自己的签名证书 - -Startup.cs -``` - services.AddIdentityServer() -#if DEBUG - .AddDeveloperSigningCredential() -#endif -#if !DEBUG - .AddSigningCredential(new X509Certificate2(Path.Combine(AppContext.BaseDirectory, - Configuration["Certificates:Path"]), - Configuration["Certificates:Password"])) -#endif - .AddInMemoryIdentityResources(InMemoryConfiguration.GetIdentityResources()) - .AddInMemoryApiResources(InMemoryConfiguration.GetApis()) - .AddInMemoryClients(InMemoryConfiguration.GetClients()) - .AddProfileService() - .AddResourceOwnerValidator(); -``` - -appsettings.Production.json - -``` -{ - "Certificates": - { - "Path":"ids4.pfx", - "Password":"123qwe" - } -} -``` - -### 使用OpenSSL生成证书 - -官网下载并安装OpenSSL [OpenSSL官网](https://slproweb.com/products/Win32OpenSSL.html) - -下载 Win64 OpenSSL v1.1.1b 版本 - -在OpenSSL的bin文件夹,以管理员身份打开CMD执行以下命令: - -``` -openssl req -newkey rsa:2048 -nodes -keyout ids4.key -x509 -days 365 -out ids4.cer -``` -下面将生成的证书和Key封装成一个文件,以便IdentityServer可以使用它们去正确地签名tokens -``` -openssl pkcs12 -export -in ids4.cer -inkey ids4.key -out ids4.pfx -``` -##### (注:在生成的过程中会让我们输入Export Password) -这个 密码与appsettings.Production.json配置项相同。 - -发布时,把ids4.pfx,放到项目根目录 - -## 参考 -- [IdentityServer4之JWT签名(RSA加密证书)及验签](https://www.cnblogs.com/guolianyu/p/9872661.html) - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.md b/docs/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.md deleted file mode 100644 index 5ba876e..0000000 --- a/docs/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.md +++ /dev/null @@ -1,18 +0,0 @@ -## 认证与授权 -主要就**基于权限的授权**的实现进行研究,实现方法级别的权限验证。 -- [https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html](https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html) - - -## 认证鉴权相关 - -IdentityServer4 - -- [ASP.NET Core WebAPI JWT Bearer 认证失败返回自定义数据 Json](https://blog.csdn.net/jasonsong2008/article/details/89226705) -- [IdentityServer4 中文文档与实战](https://www.cnblogs.com/stulzq/p/8119928.html) - - -## JWT - -json web token - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/error-code.md b/docs/dotnetcore/lin-cms/error-code.md deleted file mode 100644 index a1f0086..0000000 --- a/docs/dotnetcore/lin-cms/error-code.md +++ /dev/null @@ -1,37 +0,0 @@ -# code - -## 核心库内置已使用状态码 - -0 成功 - -999 服务器未知错误 - -9999 失败 - -10000 认证失败 - -10020 资源不存在 - -10030 参数错误 - -10040 令牌失效 - -10050 令牌过期 - -10060 字段重复 - -10070 禁止操作 - -10080 请求方法不允许 - -10100 refresh token 获取失败 - -10110 文件体积过大 - -10120 文件数量过多 - -10130 文件扩展名不符合规范 - -10140 请求过于频繁,请稍后重试 - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/pm-design-comment.md b/docs/dotnetcore/lin-cms/pm-design-comment.md deleted file mode 100644 index 4f83f8f..0000000 --- a/docs/dotnetcore/lin-cms/pm-design-comment.md +++ /dev/null @@ -1,29 +0,0 @@ -# 产品设计-评论模块的设计 - -## 主题式 -将评论分为二级,第一级采用时间倒序,二级按照时间正序,有助于理解上下文关系。 - - -用户操作: -- 评论随笔(内容支持超链接、emoji) -- 点赞评论/取消点赞 -- 回复评论 -- 删除自己的评论 - -运营操作: -- 审核通过/拉黑评论 -- 删除任何评论 -- 拉黑后的显示逻辑。(保留当前区块、显示内容为:该评论因违规被拉黑) -- 删除:(如果是二级评论,直接软删除,如果是一级评论,软删除子评论和当前评论-需要提前提醒用户) -交互设计 -- 评论的字数长度(500)、emoji。 -- 点赞交互-动画、消息通知/推送 -- 评论区域元素,需要有明确可点击的区域,会跳转到哪个地方。 - -### 优化 -- 精选评论 - - - - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/pm-design-modules.md b/docs/dotnetcore/lin-cms/pm-design-modules.md deleted file mode 100644 index a89cba5..0000000 --- a/docs/dotnetcore/lin-cms/pm-design-modules.md +++ /dev/null @@ -1,113 +0,0 @@ -# 功能模块的设计 - -## 基础权限模块 -- 用户信息:邮件、用户名(唯一)、昵称、头像、分组、是否激活、手机号、是否是Admin、个性签名 - - [x] 注册/登录 - - [x] 上传头像 - - [x] 修改密码 - - 用户基本信息修改 - - [x] 配置分组 - - 第三方账号绑定/登录 -- 绑定信息:功能(QQ快速登录,GitHub快速登录)。 -- 分组信息:是否静态分组(无法删除,无法修改分组编码)、名称可以修改 - - [x] 分组增删改 - - [x] 组别配置权限 -- 文件管理 - - [x] 本地文件上传 - - 七牛云存储 - - 文件去重,秒传 -- [x] 系统日志:请求方法、路径、http返回码、时间、用户昵称、用户id、访问哪个权限、 日志信息 - - 记录系统请求的日志 - -## cms 管理员维护模块 -- [x] 标签管理:名称、图片,是否启用/禁用,排序、文章数量、用户关注数量。 - - [x] 标签增删改 - - [x] 标签列表,禁用 -- 随笔管理: - - 审核随笔/拉黑 -- 评论管理 - - 后台审核通过/拉黑 - - 管理员删除评论 -- 字典管理 - - [x] 字典类别管理 - - [x] 字典管理:如随笔类型(原创、转载、翻译) - -## cms 用户端模块 -- 分类专栏管理:发布随笔时可选择单个分类。 - - [x] 分类增删改(随笔数量、图片、名称、排序) - - [x] 分类列表,仅查看、编辑自己创建的分类专栏 -- 标签:统计每个标签下多少个文章、多少人关注 - - [x] 标签列表 - - [x] 无限加载 - - [x] 最新/最热 根据名称模糊查询 - - 我关注的标签 -- 随笔 - - [x] 支持markdown,增删改(仅自己的随笔),修正分类专栏中的随笔数量 - - [x] 列表无限加载,按标签查询随笔 - - [x] 点赞随笔 - - 随笔详情页 - - [x] 支持目录导航(滚动时,固定至顶部位置),展示字数统计、预计阅读时长; - - [x] 作者介绍:头像,昵称,签名,随笔数; - - [x] 展示文章类型:原创、转载、翻译 - - 相关文章 - - 推荐文章 -- 评论 - - 评论随笔(内容支持超链接、emoji) - - [x] 删除自己的评论 - - [x] 点赞评论 - - [x] 回复评论 -- 关注 - - 关注/取消关注用户 - - 关注/取消关注标签 - - - -### 个人主页 -- 用户专栏分类展示 -- 最新发布、最热的随笔 -- 关注的人/标签 -- 粉丝 -- 个人主页详细页:设置个人资料,绑定邮件, - -## 更多 -- 消息通知:如点赞随笔,评论随笔、点赞评论、回复评论后的消息通知。 - -### 脑图分享 - -![image](https://camo.githubusercontent.com/49d4fca8ccfef50fb7a2f3106e6be05c4a82b887/68747470733a2f2f706963322e73757065726265642e636e2f6974656d2f3564643366363838386530653265336565393330663435382e706e67) - -### 分组 - 分为三种 - - ``` -id name info -1 Admin 系统管理员 -2 CmsAdmin 内容管理员 -3 User 普通用户 - ``` - -### 审计日志 -大多数表存在如下8个字段,用于记录行的变化状态,is_deleted为软删除,执行删除操作时,将其状态置为true,默认实体类继承 **FullAduitEntity** 即可拥有以下8个字段。该设计参考ABP中的实现。FullAduitEntity为泛型,默认id为long类型,FullAduitEntity\,即可改变主键类型,默认LinUser表主键long,保持**create_user_id**,**delete_user_id**,**update_user_id**都与LinUser的主键相同 -``` - -id bigint -create_user_id bigint -create_time datetime -is_deleted bit -delete_user_id bigint -delete_time datetime -update_user_id bigint -update_time datetime - - -``` - - - -## lin-cms 开源地址分享 - -- 后端接口 [https://github.com/luoyunchong/lin-cms-dotnetcore](https://github.com/luoyunchong/lin-cms-dotnetcore) -- 管理后台UI [https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue) -- 前端UI[https://github.com/luoyunchong/lin-cms-vvlog](https://github.com/luoyunchong/lin-cms-vvlog) - - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/spa-github-login.md b/docs/dotnetcore/lin-cms/spa-github-login.md deleted file mode 100644 index e3a3073..0000000 --- a/docs/dotnetcore/lin-cms/spa-github-login.md +++ /dev/null @@ -1,434 +0,0 @@ -## GitHub第三方授权登录 -使用SPA+.NET Core3.1实现 GitHub第三方授权登录 类似使用AspNet.Security.OAuth.GitHub,前端使用如下:VUE+Vue-Router+axios - -## AspNet.Security.OAuth.GitHub -- GitHub [https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers) - -## GitHub授权登录 -什么配置的过程不说了。。有一推。 - -- [GitHub 第三方登录](https://www.jianshu.com/p/78d186aeb526) -- [给你的网站添加第三方登录以及短信验证功能](https://juejin.im/post/5dfb04cee51d45583a66c2f3) - - -下面为示例 - -``` -client_id:0be6b05fc717bfc4fb67 -client_secret:dcaced9f176afba64e89d88b9b06ffc4a887a609 -``` -Get -``` -https://github.com/login/oauth/authorize?client_id=0be6b05fc717bfc4fb67&redirect_uri=https://localhost:5001/signin-github -``` -会重定向到 - -[https://localhost:5001/signin-github?code=07537a84d12bbae08361](https://localhost:5001/signin-github?code=07537a84d12bbae08361) - -这个code放到下面的请求中,获取access_token -POST方式(PostMan去请求) -``` -https://github.com/login/oauth/access_token?client_id=0be6b05fc717bfc4fb67&client_secret=dcaced9f176afba64e89d88b9b06ffc4a887a609&code=07537a84d12bbae08361 -``` - -Get方式 -``` -https://api.github.com/user?access_token=787506afa3271d077b98f18af56d7cfdc8db43b4 -``` - -然后就能获取用户信息 - - ``` -{ - "login": "luoyunchong", - "id": 18613266, - "node_id": "MDQ6VXNlcjE4NjEzMjY2", - "avatar_url": "https://avatars1.githubusercontent.com/u/18613266?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/luoyunchong", - "html_url": "https://github.com/luoyunchong", - "followers_url": "https://api.github.com/users/luoyunchong/followers", - "following_url": "https://api.github.com/users/luoyunchong/following%7B/other_user%7D", - "gists_url": "https://api.github.com/users/luoyunchong/gists%7B/gist_id%7D", - "starred_url": "https://api.github.com/users/luoyunchong/starred%7B/owner%7D%7B/repo%7D", - "subscriptions_url": "https://api.github.com/users/luoyunchong/subscriptions", - "organizations_url": "https://api.github.com/users/luoyunchong/orgs", - "repos_url": "https://api.github.com/users/luoyunchong/repos", - "events_url": "https://api.github.com/users/luoyunchong/events%7B/privacy%7D", - "received_events_url": "https://api.github.com/users/luoyunchong/received_events", - "type": "User", - "site_admin": false, - "name": "IGeekFan", - "company": null, - "blog": "https://blog.igeekfan.cn/", - "location": null, - "email": "luoyunchong@foxmail.com", - "hireable": null, - "bio": "学习之路漫漫无期。", - "public_repos": 14, - "public_gists": 0, - "followers": 16, - "following": 11, - "created_at": "2016-04-22T10:33:44Z", - "updated_at": "2019-12-21T14:49:33Z" -} - ``` - - -## .NET Core3.1 -以下代码为主要代码,完整代码看下面的DEMO链接。 - -使用WebApi时,看了一些项目,全是基于MVC结构的,都不是我想要的。看了一些博客上面介绍 ,步骤都是千篇一律,都是配合前后端分离的。 - -- 前端运行在:http://localhost:8081 -- 后端运行在:https://localhost:5001 -### 前后端分离的SPA 配合第三方授权登录流程如下 - -本地测试时,gitHub回调地址设置 http(s)://ip:端口/signin-github -- 如: https://localhost:5001/signin-github。 - -#### 1. 上面这个明明填写的后端的地址,那后端怎么把结果通知前端呢? - -前端请求**https://localhost:5001/signin?provider=GitHub&redirectUrl=http://localhost:8080/login-result** -- 提供参数provider为GitHub, -- redirectUrl为GitHub授权登录后,回调signin-github后,后端再去重定向的地址,这里填前端的一个路由。 - -#### 2. 后端只提供了signin,signin-callback路由,没有signin-github,那github上配置的路由是怎么回调回来呢? -[google-登录,微软文档](https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-3.1),其中有一个**更改默认回调 URI**,通过 AddGitHub中的CallbackPath属性配置。 - -介绍了回调地址应配置signin-google,所以这里应该是signin-github,他是可以配置的,不需要自己写程序处理signin-google这个路由,内部有中间件已经处理了。 - -#### 3. 回调到signin-github后,后端怎么处理,才能让前端刷新。获取登录后的信息呢。 - -具体上面的根据code获取access_token,根据access_token获取用户的信息的过程,这些处理的过程,都不需要我们自己处理。我们可以用直接获取用户信息。 - -一个方法SignIn,只要**return Challenge(properties, provider);**, -- provider 为 GitHub, -- properties var properties = new AuthenticationProperties { RedirectUri = url }; - -这个url为另一个获取用户信息的路由,只要拼接好地址即可。 - -``` -var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider); -string email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value; -string name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value; -``` -需要注入 -``` -private readonly IHttpContextAccessor _contextAccessor; -public AuthenticationController( IHttpContextAccessor contextAccessor) -{ - _contextAccessor = contextAccessor; -} -``` -### 代码部署(简化) - -打开NuGet包管理,安装包 -``` -Install-Package AspNet.Security.OAuth.GitHub -``` - -appSettings.json -``` -"Authentication": { - "GitHub": { - "ClientId": "0be6b05fc717bfc4fb67", - "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609" - } -} -``` - -add扩展方法 - -``` -public static class JwtConfiguration -{ - public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration) - { - - services.AddAuthentication(opts => - { - opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; - opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - }).AddCookie(options => - { - options.LoginPath = "/signin"; - options.LogoutPath = "/signout"; - }).AddGitHub(options => - { - options.ClientId = configuration["Authentication:GitHub:ClientId"]; - options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"]; - }); - } -} -``` -默认情况下,如头像,email,是没有获取的。 -``` -.AddGitHub(options => -{ - options.ClientId = configuration["Authentication:GitHub:ClientId"]; - options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"]; - //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github - options.Scope.Add("user:email"); - //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value; 得到GitHub头像 - options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url"); - options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio"); - options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog"); -}); - -#其中LinConsts类为静态常量 -public static class LinConsts -{ - public static class Claims - { - public const string BIO = "urn:github:bio"; - public const string AvatarUrl = "urn:github:avatar_url"; - public const string BlogAddress = "urn:github:blog"; - } -} -``` -startup.cs - -ConfigureServices中配置此服务 -``` - services.AddSingleton(); - services.AddJwtConfiguration(Configuration); -``` - -创建AuthenticationController.cs -增加SignIn,用于处理用户授权成功后,重定回signin-callback,并将参数带回。 -``` - private readonly IHttpContextAccessor _contextAccessor; - private readonly IConfiguration _configuration; - - public AuthenticationController(IHttpContextAccessor contextAccessor, IConfiguration configuration) - { - _contextAccessor = contextAccessor; - _configuration = configuration; - } - - [HttpGet("~/signin")] - public async Task SignIn(string provider, string redirectUrl) - { - var request = _contextAccessor.HttpContext.Request; - var url = - $"{request.Scheme}://{request.Host}{request.PathBase}{request.Path}-callback?provider={provider}&redirectUrl={redirectUrl}"; - var properties = new AuthenticationProperties { RedirectUri = url }; - properties.Items["LoginProviderKey"] = provider; - return Challenge(properties, provider); - - } -``` - -在signin方法中,用户点击授权后(第一次),会根据其传递的URL,重定向到这个地址,signin-callback,参数也会一同携带。provider为GitHub,redirectUrl为:http://localhost:8081/login-result. -``` -[HttpGet("~/signin-callback")] -public async Task Home(string provider = null, string redirectUrl = "") -{ - var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider); - if (!authenticateResult.Succeeded) return Redirect(redirectUrl); - var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier); - if (openIdClaim == null || string.IsNullOrWhiteSpace(openIdClaim.Value)) - return Redirect(redirectUrl); - - //TODO 记录授权成功后的信息 - - string email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value; - string name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value; - string gitHubName = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Name)?.Value; - string gitHubUrl = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Url)?.Value; - //startup 中 AddGitHub配置项 options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url"); - string avatarUrl = authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value; - - return Redirect($"{redirectUrl}?openId={openIdClaim.Value}"); -} -``` - -这时候我们能获取用户信息了。那么前端怎么办呢。我们写个方法,获取用户信息,看看效果。 - -- 浏览器直接打开能得到github的id。 -- axios GET请求 https://localhost:5001/OpenId 得到null - ``` -[HttpGet("~/OpenId")] -public async Task OpenId(string provider = null) -{ - var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider); - if (!authenticateResult.Succeeded) return null; - var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier); - return openIdClaim?.Value; -} - ``` - -我记得之前传Token时,后台是可以这样获取的。 -``` -[HttpGet("~/GetOpenIdByToken")] -public string GetOpenIdByToken() -{ - return User.FindFirst(ClaimTypes.NameIdentifier)?.Value; -} - ``` - -LoginResult.vue在created生命周期中。都是得到null -``` -axios({ - methods: "get", - url: "https://localhost:5001/OpenId?provider=GitHub" -}) - .then(function(response) { - // handle success - console.log(response); - }) - -axios({ - methods: "get", - url: "https://localhost:5001/GetOpenIdByToken" -}) - .then(function(response) { - // handle success - console.log(response); - }) -``` - -### 为什么呢??? - -因为前后端分离,不是基于Cookies的。http是无状态的。每次请求无法区分用户的。我们可以根据当前的ClaimsPrincipal,根据JWT生成相应的Token,axios请求时,放到headers中。 - -安装包 -``` -Install-Package Microsoft.AspNetCore.Authentication.JwtBearer -``` - -AppSettings.json配置改成 -``` -"Authentication": { -"JwtBearer": { - "SecurityKey": "JWTStudyWebsite_DI20DXU3", - "Issuer": "JWTStudy", - "Audience": "JWTStudyWebsite" -}, -"GitHub": { - "ClientId": "0be6b05fc717bfc4fb67", - "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609" -} -} -``` - - -在signin-callback路由中,得到authenticateResult.Principal,其中默认包含了(id,login,name,url),授权得到eamil,另外MapJsonKey扩展了以下字段(avatar_url、bio、blog) -``` -var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider); -string token = this.CreateToken(authenticateResult.Principal); -``` -根据ClaimsPrincipal值生成token值。 -``` -private string CreateToken(ClaimsPrincipal claimsPrincipal) -{ - - var handler = new JwtSecurityTokenHandler(); - var key = new SymmetricSecurityKey( - Encoding.UTF8.GetBytes(_configuration["Authentication:JwtBearer:SecurityKey"])); - var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); - var token = new JwtSecurityToken( - _configuration["Authentication:JwtBearer:Issuer"], - _configuration["Authentication:JwtBearer:Audience"], - claimsPrincipal.Claims, - expires: DateTime.Now.AddMinutes(30), - signingCredentials: credentials - ); - - return handler.WriteToken(token); -} -``` - -这里的claimsPrincipal是什么呢。简单的说就是一个存有github授权信息的对象,可以解析出对应的Clamis,这里其实就是用了Clamis的属性值。 - - -| Claim | ClaimsIdentity | ClaimsPrincipal | -| ------------------------------- | --------------------------------------------------------- | ---------------------- | -| id、name,url,email,avatar_url等 | 由多组Claim组成,这里可指GitHub授权登录后得到的那个对象。 | ClaimsIdentity的持有者 | - -具体Jwt的生成与配置项。这里不详细说明。可以看这个示例(.NET Core2.2)[https://github.com/luoyunchong/BasicTemplate](https://github.com/luoyunchong/BasicTemplate) - - - -AddJwtConfiguration改成如下内容 -``` -public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration) -{ - - services.AddAuthentication(opts => - { - opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; - opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - }).AddCookie(options => - { - options.LoginPath = "/signin"; - options.LogoutPath = "/signout"; - }).AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => - { - options.Audience = configuration["Authentication:JwtBearer:Audience"]; - - options.TokenValidationParameters = new TokenValidationParameters - { - // The signing key must match! - ValidateIssuerSigningKey = true, - IssuerSigningKey = new SymmetricSecurityKey( - Encoding.ASCII.GetBytes(configuration["Authentication:JwtBearer:SecurityKey"])), - - // Validate the JWT Issuer (iss) claim - ValidateIssuer = true, - ValidIssuer = configuration["Authentication:JwtBearer:Issuer"], - - // Validate the JWT Audience (aud) claim - ValidateAudience = true, - ValidAudience = configuration["Authentication:JwtBearer:Audience"], - - // Validate the token expiry - ValidateLifetime = true, - - // If you want to allow a certain amount of clock drift, set that here - //ClockSkew = TimeSpan.Zero - }; - }).AddGitHub(options => - { - options.ClientId = configuration["Authentication:GitHub:ClientId"]; - options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"]; - //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github - options.Scope.Add("user:email"); - //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value; 得到GitHub头像 - options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url"); - options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio"); - options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog"); - }); -} -``` - -[前端LoginResult.vue代码](https://github.com/luoyunchong/dotnetcore-examples/blob/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2/spa-vue-oauth2/src/components/LoginResult.vue) - -前端运行 -``` -yarn install -yarn serve -``` -点击GitHub登录 - -GetOpenIdByToken根据生成的token值,解析出了用户id,这样前端在login-result这个组件中,把token保存好,并重定向自己的主页,获取用户所有信息即可。 -``` -data: 18613266 -status: 200 -config: {url: "https://localhost:5001/GetOpenIdByToken"} -``` - - -OpenId?provider=GitHub则得不到数据,只能浏览器直接请求https://localhost:5001/OpenId?provider=GitHub,才能到github 的id。这个适应于前后端不分离,或者属于之前我们经常使用MVC结构,同一域名下,同一端口,基于Cookies登录的判断。 - -## 参考 -- [.net Core2.2 WebApi通过OAuth2.0实现微信登录](https://www.cnblogs.com/rsls/p/10522649.html) -- [AspNetCore3.0 和 JWT](https://blog.csdn.net/weixin_30414305/article/details/101389325) -- [用户系统设计:第三方授权、账号绑定及解绑(下)](http://www.woshipm.com/pd/509712.html) - -## Demo 示例 -- GitHub [https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2](https://github.com/luoyunchong/dotnetcore-examples/tree/master/dotnetcore3.1/VoVo.AspNetCore.OAuth2) - - - \ No newline at end of file diff --git a/docs/dotnetcore/lin-cms/vue-start.md b/docs/dotnetcore/lin-cms/vue-start.md deleted file mode 100644 index ec2014c..0000000 --- a/docs/dotnetcore/lin-cms/vue-start.md +++ /dev/null @@ -1,141 +0,0 @@ - -# 前端准备 - -## 开源地址 - -- [https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue) - -## 文档地址 -- 介绍 [http://doc.cms.7yue.pro/](http://doc.cms.7yue.pro/) -- 前端 [http://doc.cms.7yue.pro/lin/client/](http://doc.cms.7yue.pro/lin/client/s) - -## 官方预览地址 - -- [http://face.cms.7yue.pro/](http://face.cms.7yue.pro/) - -## 扩展官方博客模块线上地址 -- 用户端 lin-cms-vvlog [http://47.106.80.39:8080/index](http://47.106.80.39:8080/index) - - 普通用户:710277267@qq.com - - 密码:123qwe - -- 管理员 lin-cms-vue [http://47.106.80.39:8081/#/](http://47.106.80.39:8081/#/) - - 管理员: admin - - 密码:123qwe - -## 线上 Demo -- 后端swagger地址 [http://47.106.80.39:7000/swagger/index.html](http://47.106.80.39:7000/swagger/index.html) -- 用户端 lin-cms-vvlog [http://47.106.80.39:8080/index](http://47.106.80.39:8080/index) - - 普通用户:710277267@qq.com - - 密码:123qwe - -- 管理员 lin-cms-vue [http://47.106.80.39:8081/#/](http://47.106.80.39:8081/#/) - - 管理员: admin - - 密码:123qwe - -## 快速上手 - -开发必备 - -- [Node.js 10+](https://nodejs.org/en/) 版本即可,我须安装12.7 -- [yarn](https://yarnpkg.com/zh-Hant/docs/install#windows-stable) - -如果以下命令有问题,请删除yarn.lock,node_modules文件夹后,重新执行yarn,yarn serve -``` -# clone the project -git clone https://github.com/luoyunchong/lin-cms-vue.git - -# install dependency -yarn - -# develop -yarn serve - -# deploy -yarn deploy -``` - -## deploy 发布 -scp2方便快速发布,一行命令就能快速发布成功。 - -必备条件:(参数) -- 一台linux的服务器,ip -- 用户名 -- 密码 -- 端口:默认是22 -- 发布的地址。这里放到/var/www/lin-cms-vue目录中。 - -## 步骤 -根目录新建deploy目录,创建index.js文件。 - -``` -'use strict' -// 引入scp2模块 -var client = require('scp2'); -const ora = require('ora') -const chalk = require('chalk') -const spinner = ora('正在发布到生产服务器...') -spinner.start() -client.scp('dist/', { - "host": "", - "username": "", - "password": "", - "port": "22", - "path": "/var/www/lin-cms-vue" -}, function (err) { - spinner.stop() - if (!err) { - console.log("npm run build-scp2: scp2工具上传完毕,远端服务路径:/var/www/lin-cms-vue") - } else { - console.log("err", err) - } -}) -``` - -快速发布,需要安装 scp2 -``` -cnpm install scp2 -``` -package.json中增加 - -``` - "scripts": { - "deploy": "yarn build:production && node ./deploy", -} -``` - - -``` -yarn deploy -``` - -## nginx 配置 -- vue 使用history的配置 -``` -server { - listen 8080; - root /var/www/lin-cms-vue; - - charset utf-8; - location / { - try_files $uri $uri/ /index.html; - - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root html; - } - -} -``` - - -## 配置项 - -1. 配置 api 地址: 打开配置文件 src/config/index.js 配置 baseUrl ,本地开发阶段配置本地虚拟域名(https://localhost:5001/),线上部署生产域名。 - - - - - - \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 94f0a72..0000000 --- a/docs/index.md +++ /dev/null @@ -1,82 +0,0 @@ -## 简介 -项目使用vuepress,其可专注于文档构建 - -- 该项目的文档是基于此项目 [https://github.com/vanoneang/blog](https://github.com/vanoneang/blog) - -## 文档源码 -[https://github.com/luoyunchong/vuepress-docs](https://github.com/luoyunchong/vuepress-docs) - -## vuepress - -该采用`vuepress`搭建,内置`md`,可以采用`vue`语法,vue作者出品 - -- [https://github.com/vuejs/vuepress](https://github.com/vuejs/vuepress) - -## 完整文档 - -- [https://luoyunchong.github.io/vuepress-docs/](https://luoyunchong.github.io/vuepress-docs) -- [https://igeekfan.gitee.io/vuepress-docs/](https://igeekfan.gitee.io/vuepress-docs/) - -## LinCMS -Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架,前后端分离的完整解决方案。 -- [https://github.com/TaleLin/lin-cms-vue](https://github.com/TaleLin/lin-cms-vue) - -与本项目的关系:本项目和Lin-CMS的文档的样式效果是一样的,所以文档构建中包含“林间有风团队” 出品,意思是指UI主题来自其团队。 - -## 如何构建运行 -前提 -- node.js -- yarn或npm -- vuepress - -最好是安装yarn [https://yarnpkg.com/lang/zh-hans/docs/install/#windows-stable](https://yarnpkg.com/lang/zh-hans/docs/install/#windows-stable) - -## 安装依赖包,开发运行 -~~~ -PS D:\code\github\vuepress-docs>yarn install -PS D:\code\github\vuepress-docs>yarn dev -~~~ - -如果不能正常运行,就删除 yarn.lock、node_modules文件夹,再重新执行上面的命令 - -## 生成发布包 -```ps1 -PS D:\code\github\vuepress-docs>yarn build -``` - -## 发布 - -发布至github pages 中的gh-pages分支 - -```ps1 -PS D:\code\github\vuepress-docs>.\deploy.ps1 -``` - -.sh 也不懂,关键我本地是windows,不能正常执行,git bash 也许可以 - - -### package.json介绍 -package.json有这些命令 -``` - "scripts": { - "dev": "node bin/vuepress dev docs", - "build": "node bin/vuepress build docs", - "lint": "eslint --fix --ext .js,.vue bin/ lib/ test/", - "deploy-gh": "yarn build && bash scripts/deploy-gh.sh", - "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s", - "release": "bash scripts/release.sh", - "test": "node test/prepare.js && jest --config test/jest.config.js" - }, -``` - -所以我们可以 yarn dev或yarn build -其他的,暂时还不会跑 - -bash无法推送 -ssh: connect to host github.com port 22: No route to host -fatal: Could not read from remote repository. -``` -yarn deploy-gh -``` - - \ No newline at end of file diff --git a/dotnetcore/examples/Console-Hello-World.html b/dotnetcore/examples/Console-Hello-World.html new file mode 100644 index 0000000..441b6aa --- /dev/null +++ b/dotnetcore/examples/Console-Hello-World.html @@ -0,0 +1,77 @@ + + + + + + + 创建简单Hello World | IGeekFan的文档 + + + + + + + + +

    创建简单Hello World

    源码

    代码托管在GitHub上 https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-hello-world

    相关阅读

    开始

    创建一个hello-word的console,会输出Hello World!

    mkdir console-hello-world
    +cd console-hello-world
    +dotnet new console
    +dotnet run
    +

    console-hello-world.csproj

    OutputType 标记指定我们要生成的可执行文件,即控制台应用程序。

    TargetFramework 标记指定要定位的 .NET 实现代码。 在高级方案中,可以指定多个目标框架,并在单个操作中生成所有目标框架。

    <Project Sdk="Microsoft.NET.Sdk">
    +
    +  <PropertyGroup>
    +    <OutputType>Exe</OutputType>
    +    <TargetFramework>netcoreapp3.0</TargetFramework>
    +    <RootNamespace>console_hello_world</RootNamespace>
    +  </PropertyGroup>
    +
    +</Project>
    +
    +

    在 console-hello-world/bin/Debug/netcoreapp3.0中生成了console-hello-world.dll

    cd console-hello-world #要先在console-hello-world目录中
    +dotnet bin/Debug/netcoreapp3.0/console-hello-world.dll
    +Hello World
    +

    修改main函数

    using System;
    +
    +namespace console_hello_world
    +{
    +    class Program
    +    {
    +        static void Main(string[] args)
    +        {
    +            if (args.Length > 0)
    +            {
    +                Console.WriteLine($"Hello {args[0]}!");
    +            }
    +            else
    +            {
    +                Console.WriteLine("Hello!");
    +            }
    +        }
    +    }
    +}
    +
    $ dotnet run -- John
    +Hello John!
    +
      上次更新: 10/8/2019, 1:41:22 PM
      + + + diff --git a/dotnetcore/examples/Console-News-Types.html b/dotnetcore/examples/Console-News-Types.html new file mode 100644 index 0000000..f95550b --- /dev/null +++ b/dotnetcore/examples/Console-News-Types.html @@ -0,0 +1,74 @@ + + + + + + + .NET Core 简单测试项目 | IGeekFan的文档 + + + + + + + + +

      .NET Core 简单测试项目

      使用PowerShell的dotnet cli命令行创建控制台项目,测试项目,测试项目引用控制台项目。

      源码

      代码托管在GitHub上 https://github.com/luoyunchong/dotnetcore-examples/tree/master/console-news-types

      相关参考

      code :https://github.com/dotnet/samples/blob/master/core/console-apps/NewTypesMsBuild/README.md

      docs: https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/testing-with-cli

      dotnet-add-reference 使用文档 https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-reference

      总结如下命令行

      PS dotnetcore-examples> mkdir console-news-types
      +PS dotnetcore-examples> cd .\console-news-types\ 
      +PS dotnetcore-examples\console-news-types> mkdir src
      +
      +PS dotnetcore-examples\console-news-types> mkdir test
      +PS dotnetcore-examples\console-news-types> ls
      +Mode                 LastWriteTime         Length Name
      +----                 -------------         ------ ----
      +d----           2019/6/27    20:51                src
      +d----           2019/6/27    20:51                test
      +
      +PS dotnetcore-examples\console-news-types> cd .\src\
      +PS dotnetcore-examples\console-news-types\src> dotnet new console -n NewTypes
      +PS dotnetcore-examples\console-news-types\src> cd ..\test\  
      +PS dotnetcore-examples\console-news-types\test> dotnet new xunit -n NewTypesTests 
      +PS dotnetcore-examples\console-news-types\test> cd .\NewTypesTests\
      +PS dotnetcore-examples\console-news-types\test\NewTypesTests> dotnet add reference ../../src/NewTypes/NewTypes.csproj
      +#Reference `..\..\src\NewTypes\NewTypes.csproj` added to the project.
      +

      其他的代码就看上面的二个链接,把代码复制进去,代码很简单,一个接口,二个实现,main函数调用,测试项目引用控制台项目,

      先cd 到src\NewTypes目录中,执行 dotnet run

      PS dotnetcore-examples\console-news-types\src\NewTypes> dotnet run
      +Woof!
      +Meow!
      +

      先cd 到test\NewTypesTests目录中,执行 dotnet test,看好代码,测试类 Assert.Equal() 是成功的,如果是Assert.NotEqual() 则Failure

      PS dotnetcore-examples\console-news-types\test\NewTypesTests> dotnet test
      +dotnetcore-examples\console-news-types\test\NewTypesTests\bin\Debug\netcoreapp3.0\NewTypesTests.dll 的测试运行(.NETCoreApp,Version=v3.0)
      +Microsoft (R) 测试执行命令行工具版本 16.0.1
      +版权所有 (C) Microsoft Corporation。保留所有权利。
      +
      +正在启动测试执行,请稍候...
      +
      +总测试: 2。已通过: 2。失败: 0。已跳过: 0。
      +测试运行成功。
      +测试执行时间: 1.5134 秒
      +
        上次更新: 10/8/2019, 1:41:22 PM
        + + + diff --git a/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.html b/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.html new file mode 100644 index 0000000..6c8d399 --- /dev/null +++ b/dotnetcore/examples/FreeSql-in-asp.net-core-webapi-how-to-use.html @@ -0,0 +1,184 @@ + + + + + + + FreeSql+ASP.NET Core | IGeekFan的文档 + + + + + + + + +

        FreeSql+ASP.NET Core

        文章概述

        主要在介绍FreeSql在ASP.NTE Core WebApi中如何使用的过程,完成一个最简单的博客系统的后端接口。

        FreeSql 简介

        国人写的一个功能强大的ORM,FreeSql 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite,特点:轻量级、可扩展、基于 .NET Standard 跨平台。

        源码

        代码托管在GitHub上 https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-freesql

        参考

        项目准备

        • Mysql 5.6
        • Visual Studio 2019或2017、Visual Studio code
        • .NET Core 2.2+
        • PowerShell
        • 懂点mvc,该教程不会教你如何使用 ASP .NET Core MVC、RESTful

        创建项目

        使用dotnet 命令行创建一个webapi项目,起名为RESTful.FreeSql

        PS dotnetcore-examples\asp.net-core-freesql> dotnet new webapi -n RESTful.FreeSql
        +The template "ASP.NET Core Web API" was created successfully.
        +

        然后cd 到RESTful.FreeSql目录,通过dotnet run 命令运行项目

        PS dotnetcore-examples\asp.net-core-freesql> cd .\RESTful.FreeSql\
        +PS dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql> dotnet run
        +
        +info: Microsoft.Hosting.Lifetime[0]
        +      Now listening on: https://localhost:5001
        +info: Microsoft.Hosting.Lifetime[0]
        +      Now listening on: http://localhost:5000
        +info: Microsoft.Hosting.Lifetime[0]
        +      Application started. Press Ctrl+C to shut down.
        +info: Microsoft.Hosting.Lifetime[0]
        +      Hosting environment: Development
        +info: Microsoft.Hosting.Lifetime[0]
        +      Content root path: D:\code\github\dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql
        +

        打开浏览器 https://localhost:5001 会出现404

        请打开这个地址 https://localhost:5001/api/values ,可看到如下内容。

        ["value1","value2"]
        +

        接下来我们来集成FreeSql,我们以最简单的命令和说明,详细内容去官网看具体内容

        Install

        要先cd到RESTful.FreeSql目录中。

        PS \asp.net-core-freesql\RESTful.FreeSql> dotnet add package FreeSql
        +PS \asp.net-core-freesql\RESTful.FreeSql> dotnet add package FreeSql.Provider.MySql
        +

        code first

        代码优先,使用过EntityFramework的应该很清楚这一概念,我的理解就是:在分析数据库表关系时,不通过在数据库中设计表,而是直接在代码中声明对应的类,使用导航属性代替外键关联,通过数据表字段与C#中的类库对应,从而自动生成数据表。

        db first

        数据库优先:需求分析后,直接设计数据库,通过数据库中的表,直接生成代码,类。

        开始

        分析需求

        我们以code first 为示例,学习如何使用freesql,实现一个简单的博客。将表内容分为博客表(Blog)和评论表(Post)

        Blog 表

        字段名 字段类型 说明
        BlogId int 博客id
        Title varchar(50) 博客标题
        Content varchar(500) 博客内容
        CreateTime DateTime 发布时间

        Post 表

        字段名 字段类型 说明
        PostId int 评论id
        ReplyContent varchar(50) 标题
        BlogId int 博客id
        ReplyTime DateTime 回复时间

        建一个Domain文件夹,用于存放数据库表中对应的实体类。

        基础介绍

        1. Column属性介绍,大家可以看源码,解析

        1). 比如:Blog表中指定了Title为varchar(50),我们如何通过代码指定了主键,唯一值,字形。

            public class Blog
        +    {
        +        [Column(IsIdentity = true, IsPrimary = true)]
        +        public int BlogId { get; set; }
        +        [Column(DbType = "varchar(50)")]
        +        public string Title { get; set; }
        +    }
        +

        2). Column的命名空间在

        using FreeSql.DataAnnotations;
        +

        更多属性介绍

        字段 备注
        Name 数据库列名
        OldName 指定数据库旧的列名,修改实体属性命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库字段;否则将视为【新增字段】
        DbType 数据库类型,如: varchar(255)
        IsPrimary 主键
        IsIdentity 自增标识
        IsNullable 是否可DBNull
        IsIgnore 忽略此列,不迁移、不插入
        IsVersion 设置行锁(乐观锁)版本号,每次更新累加版本号,若更新整个实体时会附带当前的版本号判断(修改失败时抛出异常)
        DbDefautValue 数据库默认值
        MapType 类型映射,比如:可将 enum 属性映射成 typeof(string)
        Uniques 唯一键,在多个属性指定相同的标识,代表联合键;可使用逗号分割多个 UniqueKey 名。

        2. Table 的使用:用于在类的上面指定这个表的属性

        [Table(Name = "t_blog")]
        +public class Blog {
        +  //...
        +}
        +

        更多属性介绍

        字段 备注
        Name 数据库表名
        OldName 指定数据库旧的表名,修改实体命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库表;否则将视为【创建新表】
        SelectFilter 查询过滤SQL,实现类似 a.IsDeleted = 1 功能
        DisableSyncStructure 禁用 CodeFirst 同步结构迁移

        3. 其他的还是看 https://github.com/2881099/FreeSql/blob/master/Docs/codefirst.md

        Blog.cs

        using FreeSql.DataAnnotations;
        +using System;
        +
        +namespace RESTful.FreeSql.Domain
        +{
        +    public class Blog
        +    {
        +        [Column(IsIdentity = true, IsPrimary = true)]
        +        public int BlogId { get; set; }
        +        [Column(DbType = "varchar(50)")]
        +        public string Title { get; set; }
        +        [Column(DbType = "varchar(500)")]
        +        public string Content { get; set; }
        +        public DateTime CreateTime { get; set; }
        +
        +
        +    }
        +}
        +

        Post.cs

        
        +using FreeSql.DataAnnotations;
        +using System;
        +
        +namespace RESTful.FreeSql.Domain
        +{
        +    public class Post
        +    {
        +        [Column(IsIdentity = true, IsPrimary = true)]
        +        public int PostId { get; set; }
        +        [Column(DbType = "varchar(50)")]
        +        public string ReplyContent { get; set; }
        +        public int BlogId { get; set; }
        +        public DateTime ReplyTime { get; set; }
        +        public Blog Blog { get; set; }
        +    }
        +}
        +

        Startup.cs

        非全部代码,这里注意点:要先在mysql中创建数据库FreeSql_Blog,否则一直提示主库xxxxx,官网未找到相关描述。

        这里初始化FreeSql,并使用单例模式,注入到默认的依赖中,这样在Controller中即可直接注入。

        namespace RESTful.FreeSql
        +{
        +    public class Startup
        +    {
        +        public Startup(IConfiguration configuration)
        +        {
        +            Fsql = new FreeSqlBuilder()
        +                        .UseConnectionString(DataType.MySql, @"Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=FreeSql_Blog;Charset=utf8;SslMode=none;Max pool size=10")
        +                        .UseAutoSyncStructure(true)
        +                        .Build();
        +        }
        +
        +        public IFreeSql Fsql { get; }
        +
        +        public void ConfigureServices(IServiceCollection services)
        +        {
        +            services.AddSingleton<IFreeSql>(Fsql);
        +
        +        }
        +    }
        +}
        +

        BlogController

        在controllers文件夹新建一个控制器BlogController

        using System;
        +using System.Collections.Generic;
        +using System.Linq;
        +using System.Threading.Tasks;
        +using FreeSql;
        +using Microsoft.AspNetCore.Mvc;
        +using RESTful.FreeSql.Domain;
        +
        +namespace RESTful.FreeSql.Controllers
        +{
        +    [Route("api/[controller]")]
        +    [ApiController]
        +    public class BlogController : ControllerBase
        +    {
        +        // GET api/Blog
        +
        +        IFreeSql _fsql;
        +        public BlogController(IFreeSql fsql)
        +        {
        +            _fsql = fsql;
        +        }
        +
        +        [HttpGet]
        +        public ActionResult<IEnumerable<Blog>> Get()
        +        {
        +            List<Blog> blogs = _fsql.Select<Blog>().OrderByDescending(r => r.CreateTime).ToList();
        +
        +            return blogs;
        +        }
        +
        +        // GET api/blog/5
        +        [HttpGet("{id}")]
        +        public ActionResult<Blog> Get(int id)
        +        {
        +            return _fsql.Select<Blog>(id).ToOne();
        +        }
        +
        +
        +        // DELETE api/blog/5
        +        [HttpDelete("{id}")]
        +        public void Delete(int id)
        +        {
        +            _fsql.Delete<Blog>(new { BlogId = id }).ExecuteAffrows();
        +        }
        +    }
        +}
        +

        重新运行,打开地址 http://localhost:5001/api/blog 会发现数据库中生成了表blog,这时候表post并没有生成。所以我们判断,只有在访问到实体类才检查是否存在表结构,然后执行相应的处理。

        手动向blog表中加一些数据,然后再次请求

        • http://localhost:5001/api/blog, 可看到相应的数据。
        • http://localhost:5001/api/blog/1 可得到单个数据。

        自动同步实体结构【开发环境必备】

        此功能默认为开启状态,发布正式环境后,请修改此设置

        Fsql = new FreeSqlBuilder()
        +          .UseConnectionString(DataType.MySql, @"连接字符串")
        +          .UseAutoSyncStructure(true)
        +          .Build();
        +                      
        +//UseAutoSyncStructure(true/false)【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
        +
        +// 也可使用此方法指定是否自动同步结构。                  
        +Fsql.CodeFirst.IsAutoSyncStructure = true;
        +
          上次更新: 10/8/2019, 1:41:22 PM
          + + + diff --git a/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.html b/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.html new file mode 100644 index 0000000..7f724b4 --- /dev/null +++ b/dotnetcore/examples/FreeSql-sample-blog-RESTful-use-automapper.html @@ -0,0 +1,323 @@ + + + + + + + RESTful+FreeSql+AutoMapper | IGeekFan的文档 + + + + + + + + +

          RESTful+FreeSql+AutoMapper

          文章概述

          本文使用ASP .NET Core的WEB API,构建一个RESTful风格的接口,使用Freesql访问MySQL数据库,实现二个表的简单博客,并集成AutoMapper。

          接上一篇

          Dto作用

          当我们使用RESTful提供接口时,比如创建一个博客,修改一下博客内容时,他们的参数是有区别的。良好的设计应该是

          创建一个博客

          POST /api/blog
          +data:
          +{
          +  "title": "string",
          +  "content": "string"
          +}
          +

          修改一个博客内容

          PUT /api/blog
          +data:
          +{
          +  "blogId":"int",
          +  "title": "string",
          +  "content": "string"
          +}
          +

          但一个blog 实体如下

              public class Blog
          +    {
          +        [Column(IsIdentity = true, IsPrimary = true)]
          +        public int BlogId { get; set; }
          +        public string Title { get; set; }
          +        public string Content { get; set; }
          +        public DateTime CreateTime { get; set; }
          +        public virtual List<Post> Posts { get; set; }
          +    }
          +

          如果我们以Blog作为controllers中的参数时

                 // POST api/blog
          +        [HttpPost]
          +        public void Post([FromBody] Blog blog)
          +        {
          +            blog.CreateTime=DateTime.Now;
          +            _fsql.Insert<Blog>(blog).ExecuteAffrows();
          +        }
          +

          这时修改swagger显示的默认参数是

          {
          +  "blogId": 0,
          +  "title": "string",
          +  "content": "string",
          +  "createTime": "2019-06-30T07:33:05.524Z",
          +  "posts": [
          +    {
          +      "postId": 0,
          +      "replyContent": "string",
          +      "blogId": 0,
          +      "replyTime": "2019-06-30T07:33:05.524Z"
          +    }
          +  ]
          +}
          +

          如果我们不传递createTime,会出现异常,应该createTime是DateTime,不能为null,只有DateTime?才能为null,有?为可空类型。

          所以我们应该为POST方式传递过来时,新建一个实体类,我们称之为DTO(Data Transfer Object),即数据传输对象,因为createTime即使传递,后端为他赋了值,前台传了也无效。有了DTO,这样可让前端清楚他们应该传递的参数,而不会出现没有作用的参数。

          在根目录创建Models/Blogs文件夹,在Blogs文件夹中创建

          CreateBlogDto.cs

          namespace RESTful.FreeSql.Models.Blogs
          +{
          +    public class CreateBlogDto
          +    {
          +        public string Title { get; set; }
          +        public string Content { get; set; }
          +
          +    }
          +}
          +
          +

          UpdateBlogDto.cs

          namespace RESTful.FreeSql.Models.Blogs
          +{
          +    public class UpdateBlogDto
          +    {
          +        public int BlogId { get; set; }
          +        public string Title { get; set; }
          +        public string Content { get; set; }
          +    }
          +}
          +
          +
          +

          有了Dto后,我们会发现了新的问题,往数据库插入时,往往使用了一些ORM,他们只支持原本的实体类,如Blog,Post。但不支持CreateBlogDto、UpdateBlogDto,我们可以手动,将一个类的值,赋值给另一个类。 +如

              CreateBlogDto createBlogDto = new CreateBlogDto()
          +    {
          +        Title = "我是title",
          +        Content = "我是content"
          +    };
          +
          +    Blog newBlog=new Blog()
          +    {
          +        Title = createBlogDto.Title,
          +        Content = createBlogDto.Content
          +    };
          +

          现在只是非常简单的二个属性,我们还能忍受,但如果是十个属性、而且有着大量的类与类之间的转换呢。这时修改AutoMapper就闪亮登场了。

          AutoMapper

          作用:A convention-based object-object mapper.

          我们是在ASP .NET Core下使用AutoMapper 官网介绍,如何依赖注入中使用

          Setup

          先cd到dotnetcore-examples\asp.net-core-freesql\RESTful.FreeSql目录

          PS > dotnet add package AutoMapper
          +PS > dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection --version 6.1.1
          +

          在StartUp.cs中的ConfigureServices配置如下

             public void ConfigureServices(IServiceCollection services)
          +    {
          +        // .... Ignore code before this
          +        
          +        //AddAutoMapper会去找继承Profile的类,
          +        services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
          +
          +        // .... Ignore code after this
          +    }
          +

          Adding Profiles

          AutoMapper/BlogProfile.cs

          using AutoMapper;
          +using RESTful.FreeSql.Domain;
          +using RESTful.FreeSql.Models.Blogs;
          +
          +namespace RESTful.FreeSql.AutoMapper
          +{
          +    public class BlogProfile : Profile
          +    {
          +        public BlogProfile() 
          +        {
          +            CreateMap<CreateBlogDto, Blog>();
          +            CreateMap<UpdateBlogDto, Blog>();
          +        }
          +    }
          +}
          +

          AutoMapper/BlogProfile.cs

          using AutoMapper;
          +using RESTful.FreeSql.Domain;
          +using RESTful.FreeSql.Models.Blogs;
          +
          +namespace RESTful.FreeSql.AutoMapper
          +{
          +    public class PostProfile : Profile
          +    {
          +        public PostProfile()
          +        {
          +            CreateMap<CreatePostDto,Post>();
          +        }
          +    }
          +}
          +

          Models/Posts/SearchPostDto.cs根据博客id,得到分页的评论时,集成分页类

          using RESTful.FreeSql.Web;
          +
          +namespace RESTful.FreeSql.Models.Posts
          +{
          +    public class SearchPostDto:PageDto
          +    {
          +        public int BlogId { get; set; }
          +    }
          +}
          +
          +

          Controlers/BlogController.cs文件中,注入IMapper,

          using AutoMapper;
          +using Microsoft.AspNetCore.Mvc;
          +using System;
          +using System.Collections.Generic;
          +using RESTful.FreeSql.Domain;
          +using RESTful.FreeSql.Models.Blogs;
          +using RESTful.FreeSql.Web;
          +
          +namespace RESTful.FreeSql.Controllers
          +{
          +    [Route("api/[controller]")]
          +    [ApiController]
          +    public class BlogController : ControllerBase
          +    {
          +        // GET api/Blog
          +
          +        private readonly IFreeSql _fsql;
          +        private readonly IMapper _mapper;
          +        public BlogController(IFreeSql fsql, IMapper mapper)
          +        {
          +            _fsql = fsql;
          +            _mapper = mapper;
          +        }
          +
          +        /// <summary>
          +        /// 博客列表页 
          +        /// </summary>
          +        /// <param name="pageDto">分页参数</param>
          +        /// <returns></returns>
          +        [HttpGet]
          +        public ActionResult<PagedResultDto<Blog>> Get([FromQuery]PageDto pageDto)
          +        {
          +            List<Blog> blogs = _fsql.Select<Blog>().OrderByDescending(r => r.CreateTime).Page(pageDto.PageNumber, pageDto.PageSize).ToList();
          +            long count = _fsql.Select<Blog>().Count();
          +            return new PagedResultDto<Blog>(count, blogs);
          +        }
          +
          +        // GET api/blog/5
          +        [HttpGet("{id}")]
          +        public ActionResult<Blog> Get(int id)
          +        {
          +            // eg.1 return _fsql.Select<Blog>().Where(a => a.Id == id).ToOne();
          +            // eg.2
          +            return _fsql.Select<Blog>(id).ToOne();
          +        }
          +
          +        // POST api/blog
          +        [HttpPost]
          +        public void Post([FromBody] CreateBlogDto createBlogDto)
          +        {
          +            Blog blog = _mapper.Map<Blog>(createBlogDto);
          +            blog.CreateTime = DateTime.Now;
          +            _fsql.Insert<Blog>(blog).ExecuteAffrows();
          +        }
          +
          +        // PUT api/blog
          +        [HttpPut]
          +        public void Put([FromBody] UpdateBlogDto updateBlogDto)
          +        {
          +
          +            //eg.1 更新指定列
          +            //_fsql.Update<Blog>(updateBlogDto.BlogId).Set(a => new Blog()
          +            //{
          +            //    Title = updateBlogDto.Title,
          +            //    Content = updateBlogDto.Content
          +            //}).ExecuteAffrows();
          +
          +            //eg.2将这个实体更新到数据库中。当更新时,会把其他列的值,如CreateTime也更新掉。
          +            //使用IgnoreColumns可忽略某一些列。
          +
          +            Blog blog = _mapper.Map<Blog>(updateBlogDto);
          +            _fsql.Update<Blog>().SetSource(blog).IgnoreColumns(r => r.CreateTime).ExecuteAffrows();
          +        }
          +
          +        // DELETE api/blog/5
          +        [HttpDelete("{id}")]
          +        public void Delete(int id)
          +        {
          +            _fsql.Delete<Blog>(new { BlogId = id }).ExecuteAffrows();
          +        }
          +    }
          +}
          +

          Controlers/BlogController.cs文件中,注入IMapper,

          using FreeSql;
          +using Microsoft.AspNetCore.Mvc;
          +using System;
          +using System.Collections.Generic;
          +using System.Threading.Tasks;
          +using AutoMapper;
          +using RESTful.FreeSql.Domain;
          +using RESTful.FreeSql.Models.Posts;
          +using RESTful.FreeSql.Web;
          +
          +namespace RESTful.FreeSql.Controllers
          +{
          +    [Route("api/[controller]")]
          +    [ApiController]
          +    public class PostController : ControllerBase
          +    {
          +        // GET: api/Post
          +        private readonly IFreeSql _fsql;
          +        private readonly IMapper _mapper;
          +        public PostController(IFreeSql fsql, IMapper mapper)
          +        {
          +            _fsql = fsql;
          +            _mapper = mapper;
          +        }
          +
          +        /// <summary>
          +        /// 根据博客id、分页条件查询评论信息
          +        /// </summary>
          +        /// <param name="searchPostDto"></param>
          +        /// <returns></returns>
          +        [HttpGet]
          +        public PagedResultDto<Post> Get(SearchPostDto searchPostDto)
          +        {
          +            ISelect<Post> selectPost = _fsql
          +                .Select<Post>()
          +                .Where(r => r.BlogId == searchPostDto.BlogId);
          +
          +            List<Post> posts = selectPost.OrderByDescending(r => r.ReplyTime)
          +                .Page(searchPostDto.PageNumber, searchPostDto.PageSize)
          +                .ToList();
          +
          +            long total = selectPost.Count();
          +
          +            return new PagedResultDto<Post>(total, posts);
          +        }
          +
          +        // GET: api/Post/5
          +        [HttpGet("{id}", Name = "Get")]
          +        public Post Get(int id)
          +        {
          +            return _fsql.Select<Post>().Where(a => a.PostId == id).ToOne();
          +        }
          +
          +        // POST: api/Post
          +        [HttpPost]
          +        public void Post([FromBody] CreatePostDto createPostDto)
          +        {
          +            Post post = _mapper.Map<Post>(createPostDto);
          +            post.ReplyTime = DateTime.Now;
          +            _fsql.Insert(post).ExecuteAffrows();
          +        }
          +
          +
          +        // DELETE: api/Post/
          +        [HttpDelete("{id}")]
          +        public async Task DeleteAsync(int id)
          +        {
          +            await _fsql.Delete<Post>(new Post { PostId = id }).ExecuteAffrowsAsync();
          +        }
          +    }
          +}
          +
          +

          参考

            上次更新: 10/8/2019, 1:41:22 PM
            + + + diff --git a/dotnetcore/examples/IdentityServer4.html b/dotnetcore/examples/IdentityServer4.html new file mode 100644 index 0000000..874227e --- /dev/null +++ b/dotnetcore/examples/IdentityServer4.html @@ -0,0 +1,43 @@ + + + + + + + IdentityServer4 | IGeekFan的文档 + + + + + + + + + + + + diff --git a/dotnetcore/examples/ImCore-Chat.html b/dotnetcore/examples/ImCore-Chat.html new file mode 100644 index 0000000..284a444 --- /dev/null +++ b/dotnetcore/examples/ImCore-Chat.html @@ -0,0 +1,39 @@ + + + + + + + ImCore 即时通讯 | IGeekFan的文档 + + + + + + + + + + + + diff --git a/dotnetcore/examples/Qiniu-Object-Storage.html b/dotnetcore/examples/Qiniu-Object-Storage.html new file mode 100644 index 0000000..448a9d8 --- /dev/null +++ b/dotnetcore/examples/Qiniu-Object-Storage.html @@ -0,0 +1,125 @@ + + + + + + + 七牛云对象存储 | IGeekFan的文档 + + + + + + + + +

            七牛云对象存储

            .NET Core下集成 七牛云下的对象存储

            开源地址

            https://github.com/luoyunchong/dotnetcore-examples/tree/master/asp.net-core-qiniu

            集成类库

            基础类库集成方案 开源地址 文档 说明
            Qiniu云对象存储 .net/.net core c# sdk 由于官网未支持. net core,所以 大家看社区版解决方案

            前提

            • 本地windows 10,安装 .net core 2.2+
            • Linux 服务器 Ubuntu Server 16+
            • 服务器安装了Docker
            • 本地xftp、xshell(这二个分别是windows传文件至linux,执行命令行。)

            准备

            在七牛云中自行注册后,在个人中心,密钥管理,生成自己的密钥(https://portal.qiniu.com/user/key) +v* AK,SK分别代表:AccessKey/SecretKey

            • Bucket中的vant-ui,是创建对象存储时起的名字
            • PrefixPath中的值,随意字符串,前缀地址。
            • Host为:融合 CDN 测试域名,可自行绑定自己的域名,否则只有三十天免费使用时长。

            appsettings.json配置项

              "Qiniu": {
            +    "AK": "eUH1O-ft66S4XM2GIK7FGmj7czuYkcAyNGDAc-wq",
            +    "SK": "4dOi1daSr2-YgofhAfWb8JaLrbgozCmgD6AUmmM9",
            +    "Bucket": "vant-ui",
            +    "PrefixPath": "ui",
            +    "Host": "http://pu5vnz60k.bkt.clouddn.com/"
            +  }
            +

            安装包

            Install-Package MQiniu.Core 
            +

            代码解读

            配置swagger的过程就不说了,创建QiniuController

              /// <summary>
            +    /// 七牛云上传服务
            +    /// </summary>
            +    [Route("api/[controller]")]
            +    [ApiController]
            +    public class QiniuController : ControllerBase
            +    {
            +        private readonly IConfiguration _configuration;
            +
            +        public QiniuController(IConfiguration configuration)
            +        {
            +            _configuration = configuration;
            +        }
            +
            +        /// <summary>
            +        /// 根据后台配置项,得到请求七牛云的token值,前台也可根据此token值上传至七牛云服务
            +        /// </summary>
            +        /// <returns></returns>
            +        [HttpGet("access_token")]
            +        public string GetAccessToken()
            +        {
            +            Mac mac = new Mac(_configuration["Qiniu:AK"], _configuration["Qiniu:SK"]);
            +            PutPolicy putPolicy = new PutPolicy { Scope = _configuration["Qiniu:Bucket"] };
            +            return Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            +        }
            +
            +        /// <summary>
            +        /// 上传文件至七牛云,code为200,代表上传成功,其他代表不成功
            +        /// </summary>
            +        /// <param name="file">单个文件</param>
            +        /// <returns>new { code = 200, data ="七牛云文件地址,包括http://....mm.png", msg = "上传成功" };</returns>
            +        [HttpPost("upload")]
            +        public dynamic Upload(IFormFile file)
            +        {
            +            if (file.Length == 0)
            +            {
            +                return new { code = 1, msg = "文件为空" };
            +            }
            +
            +            FormUploader upload = new FormUploader(new Config()
            +            {
            +                Zone = Zone.ZONE_CN_South,//华南 
            +                UseHttps = true
            +            });
            +
            +            var fileName = ContentDispositionHeaderValue
            +                .Parse(file.ContentDisposition)
            +                .FileName.Trim();
            +
            +            string qiniuName = _configuration["Qiniu:PrefixPath"] + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + fileName;
            +            Stream stream = file.OpenReadStream();
            +            HttpResult result = upload.UploadStream(stream, qiniuName, GetAccessToken(), null);
            +
            +            if (result.Code == 200)
            +            {
            +                return new { code = 200, data = _configuration["Qiniu:Host"] + qiniuName, msg = "上传成功" };
            +            }
            +
            +            return new { code = 1, msg = "上传失败" };
            +        }
            +    }
            +
            +

            Upload方法中,Zone.ZONE_CN_South,代表华南,所以创建对象存储时要注意,请选择与此相同的位置(华南),或根据实际情况修改Zone所在地区的枚举值即可。

            FormUploader upload = new FormUploader(new Config()
            +{
            +    Zone = Zone.ZONE_CN_South,//华南 
            +    UseHttps = true
            +});
            +
            +

            发布至Linux下的Docker

            双击 publish.bat,生成的文件夹为如下:

            image

            修改项目名为qiniu-web,复制 至linux服务器中,(xftp工具) +image

            使用xshell远程登录后,进入root权限。

            root@VM-37-104-ubuntu:/home/ubuntu/# sudo su
            +root@VM-37-104-ubuntu:/home/ubuntu/# cd qiniu-web
            +

            前置条件,在ubuntu上安装好了docker。并且正常运行。

            -d 代表后台运行,此时将对外显露5000端口运行,5000是运行后,docker对外的端口,80是这个服务对外的端口,其中Dockerfile 存在语句EXPOSE 80

            docker build -t igeekfan/qiniu .     #生成images
            +docker run -d -p 5000:80 igeekfan/qiniu  # 生成 container 并运行在5000端口
            +

            此时打开 浏览器, ip+端口5000即可访问服务,请加/swagger。

            本项目已部署至服务器 http://122.152.192.161:5000/swagger/index.html

            运行结果

            image.png

            参考

              上次更新: 10/8/2019, 1:41:22 PM
              + + + diff --git a/dotnetcore/examples/index.html b/dotnetcore/examples/index.html new file mode 100644 index 0000000..8bc1af2 --- /dev/null +++ b/dotnetcore/examples/index.html @@ -0,0 +1,44 @@ + + + + + + + .NET Core 学习示例文档 | IGeekFan的文档 + + + + + + + + +

              .NET Core 学习示例文档

              浏览左侧导航菜单以深入了解文档.

              .NET Core 学习示例文档主要是结合 ASP .NET Core,集成第三方类库的示例,运用基础组件,写好Demo。

              源码

              代码托管在GitHub上 https://github.com/luoyunchong/dotnetcore-examples

              推荐阅读

              • Microsoft Docs https://docs.microsoft.com/zh-cn

                其中包含如下

                • .NET Core 指南 https://docs.microsoft.com/zh-cn/dotnet/core/
                • ASP .NET 文档 https://docs.microsoft.com/zh-cn/aspnet/
                • .NET Core CLI 文档 https://docs.microsoft.com/zh-cn/dotnet/core/tools/?tabs=netcore2x

              本地环境说明

              • Windows 10 (18922.rs_prerelease.190614-1427)
              • .NET Core 3.0.100-preview6-012264
              • Visual Studio Code 1.35.1、Microsoft Visual Studio 2019 16.1.3
              • PowerSheel
              • MySQL 5.7.25
              • Navicat Premium 12 欢迎下载

              Install

              本地开发选择SDK安装即可,还是安装 2.2的吧,3.0(19.6.29)目前还没有发布稳定版本。

              • 安装这个 https://dotnet.microsoft.com/download/dotnet-core/2.2
              • https://dotnet.microsoft.com/download/dotnet-core/3.0

              安装后,在 PowerShell 中任一目录查看安装后的版本

              PS C:\WINDOWS\system32> dotnet --version
              +3.0.100-preview6-012264
              +# 本地安装了好几个.net core sdk版本
              +PS C:\WINDOWS\system32> dotnet --list-sdks
              +2.1.700 [C:\Program Files\dotnet\sdk]
              +2.2.300 [C:\Program Files\dotnet\sdk]
              +3.0.100-preview6-012264 [C:\Program Files\dotnet\sdk]
              +

              CLI

              全称:command-line interface,命令行界面,主要是cmd、bash(sh等等)、powershell等。

              说明 所有命令行都在windows10自带的powershell中执行。

              指定SDK版本

              .NET Core 项目默认使用最新版本的 .NET Core,在根目录使用PowerShell中执行如下命令,

              语法 :dotnet new global.json --sdk-version <SDK版本号>

              dotnet new globaljson --sdk-version 2.2.300
              +

              参考

              .NET Core

              .NET Core是什么? 官网说的太高大上了 https://docs.microsoft.com/zh-cn/dotnet/core/about

              总结,.NET Core包含如下

              • 二个RunTime +
                • .NET Core RunTime:基础类型系统 、垃圾回收、基元类型等,
                • ASP .NET RunTime :提供WEB、LOT等应用程序的框架支持。
              • .NET Core CLI工具:各种命令行工具,创建项目、编译项目,发布项目等;
              • 语言编译器:(支持C#、F#、VB等语言)
              • dotnet 工具:.NET Core运行时和库的安装程序包

              三个发布包:

              • .NET Core 运行时
              • ASP .NET Core 运行时
              • .NET Core SDK:包括上面二个内容,再加上 .NET CLI工具等

              所以本地调试时,可直接安装最全的SDK即可。

              项目文档

              目前 关于此项目的文档放到docs文件夹中,zh-Hans为中文,这样可支持多语言,欢迎翻译PR,之后会发布至

              将使用abp vnext 下的modules的docs模块。不过abp vnext 现在也不稳定,0.18.1,还是有各种问题,我还是写基础模块的使用文档吧,后期完善后,发布文档网站。

              说明

              本项目也是我的学习记录,,用于测试不同类库集成的解决方案,所以用最基础的方案,命令行来创建项目,引用包,运行,测试等。让自己对 .net core 的原理结构了解地更加深入一些。

              • 采用的都是 Visual Studio Code/VS2019 +PowerShell运行,关于如何采用Visual Studio 2019创建项目,引用包是非常简单的,不再说明。
                上次更新: 10/8/2019, 1:41:22 PM
                + + + diff --git a/dotnetcore/lin-cms/IdentityServer4-JWT.html b/dotnetcore/lin-cms/IdentityServer4-JWT.html new file mode 100644 index 0000000..f5e7a26 --- /dev/null +++ b/dotnetcore/lin-cms/IdentityServer4-JWT.html @@ -0,0 +1,92 @@ + + + + + + + 认证鉴权状态 | IGeekFan的文档 + + + + + + + + +

                认证鉴权状态

                认证分为以下情况:当前角色为管理员,该分组配置了权限,该分组未分配某一方法的权限.

                状态码(StatusCode):401 UnAuthorized

                StatusCode 含义
                401 UnAuthorized 未授权、无权限、未登录
                422 UNPROCESSABLE ENTITY 令牌失效
                200 访问正常
                1. 未登录,不带access_token,直接请求需要登录的接口、管理员接口结果一样。

                返回结果应为:状态码:401 UNAUTHORIZED

                {
                +    "error_code": 10000,
                +    "msg": "认证失败,请检查请求头或者重新登陆",
                +    "request": "GET  /cms/admin/authority"
                +}
                +
                1. 携带access_token,但非超级管理员(admin字段为2),访问的方法为角色为超管才有权限的方法。
                [LinCmsAuthorize(Roles = LinGroup.Administrator)]
                +

                返回结果应为::状态码:401 UNAUTHORIZED

                {
                +    "error_code": 10000,
                +    "msg": "只有超级管理员可操作",
                +    "request": "GET  /cms/admin/authority"
                +}
                +
                1. 携带access_token ,访问只需要登录的接口(/cms/user/auths)

                控制器或方法上指定 [Authorize][LinCmsAuthorize] 特性标签时,必须登录才能访问,否则返回第一种结果。

                返回结果应为:状态码:200

                {
                +    "active": 1,
                +    "admin": 1,
                +    "auths": [
                +        {
                +            "信息": [
                +                {
                +                    "auth": "查看lin的信息",
                +                    "module": "信息"
                +                }
                +            ]
                +        }
                +    ],
                +    "avatar": null,
                +    "create_time": 1564372600000,
                +    "email": "acs@acs.com",
                +    "group_id": 54,
                +    "id": 112,
                +    "nickname": "alan",
                +    "update_time": 1564487059000
                +}
                +
                1. 携带access_token,但此用户无访问此方法的权限(即该用户的组别未配置此权限)。

                返回结果应为:状态码:401 UNAUTHORIZED

                {
                +    "error_code": 10000,
                +    "msg": "权限不够,请联系超级管理员获得权限",
                +    "request": "GET  /cms/log/search"
                +}
                +
                1. 携带过期的access_token值 +返回结果应为:状态码:401 UNAUTHORIZED
                {
                +    "error_code": 10050,
                +    "msg": "令牌过期",
                +    "request": "GET  /cms/admin/users"
                +}
                +
                1. 携带不正常的access_token值,后台无法下正常解析出用户信息 +返回结果应为:状态码:422 UNPROCESSABLE ENTITY
                {
                +    "error_code": 10040,
                +    "msg": "令牌失效",
                +    "request": "GET  /cms/admin/users"
                +}
                +
                  上次更新: 10/8/2019, 1:41:22 PM
                  + + + diff --git a/dotnetcore/lin-cms/Newtonsoft.Json-question.html b/dotnetcore/lin-cms/Newtonsoft.Json-question.html new file mode 100644 index 0000000..3f999b8 --- /dev/null +++ b/dotnetcore/lin-cms/Newtonsoft.Json-question.html @@ -0,0 +1,160 @@ + + + + + + + Newtonsoft.Json基础问题 | IGeekFan的文档 + + + + + + + + +

                  Newtonsoft.Json基础问题

                  它是.NET下的一个序列化、反序化的基础类库,更基础的用法还是看别人的吧,这里只说一些遇到的问题。

                  设置下划线

                  ContractResolver 默认是小驼峰,我想改成下划线方式,遇到了一些问题,dictionary的键未格式化

                  in controller 创建一个控制器

                  [HttpGet("getDictionary")]
                  +public IDictionary<string, string> GetDictionary()
                  +{
                  +    IDictionary<string, string> dics = new Dictionary<string, string>();
                  +
                  +    dics.Add("Key", "Value");
                  +    dics.Add("KeyTest", "Value_Test");
                  +    return dics;
                  +}
                  +

                  In Startup.cs

                  services
                  +.AddMvc()
                  +.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                  +.AddJsonOptions(opt =>
                  +{
                  +    
                  +    // 设置下划线方式,首字母是小写
                  +    opt.SerializerSettings.ContractResolver = new DefaultContractResolver()
                  +    {
                  +        NamingStrategy = new SnakeCaseNamingStrategy()
                  +    };
                  +});
                  +

                  此时运行后,得到的是Key,而不是key,我想他的键都变成下划线方式的小写

                  {
                  +  "Key": "Value",
                  +  "KeyTest": "Value_Test"
                  +}
                  +

                  其他测试,增加多级,测试正常

                  [HttpGet("get")]
                  +public dynamic Get()
                  +{
                  + return new {
                  +            Content = new {
                  +                Url=Request.Path.Value,
                  +                NewUrlTest="test in new url test"
                  +            }
                  +        };
                  +}
                  +

                  此时运行后,满足要求,多层结构也不会影响

                  {
                  +  "content": {
                  +    "url": "/test/get",
                  +    "new_url_test": "test in new url test"
                  +  }
                  +}
                  +
                  +

                  看了Newtonsoft.Json的github,并在in this repository 搜索Dictionary,看issues中的配置项如下即可满足dictionary的键也转小写, +ProcessDictionaryKeys 功能:A flag indicating whether dictionary keys should be processed. Defaults to false.

                  services
                  +.AddMvc()
                  +.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                  +.AddJsonOptions(opt =>
                  +{
                  +    
                  +    // 设置下划线方式,首字母是小写
                  +    opt.SerializerSettings.ContractResolver = new DefaultContractResolver()
                  +    {
                  +        NamingStrategy = new SnakeCaseNamingStrategy
                  +        {
                  +            ProcessDictionaryKeys = true
                  +        }
                  +    };
                  +});
                  +
                  {
                  +  "key": "Value",
                  +  "key_test": "Value_Test"
                  +}
                  +

                  实现时间戳

                  前台要的格式为 1562904163734,只有一个数字,我搜索了一下,也没找到相关的文档,本身这个类库有一些时间戳,不过他们都包含特殊字符,如/Date(1562904163734)/,好像类似这样,他好像在逗我,为啥他要加Date,怕是有毒吧。看到 +他有Converters属性可配置,即配置自己的序列化返回格式。

                  services.AddMvc()
                  +.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                  +.AddJsonOptions(opt =>
                  +{
                  +    //opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:MM:ss";
                  +    //设置时间戳格式
                  +    opt.SerializerSettings.Converters = new List<JsonConverter>()
                  +    {
                  +        new LinCmsTimeConverter()
                  +    };
                  +});
                  +

                  这里的时间戳是毫秒级别

                  /// <summary>
                  +/// 配合LinCMS中的时间戳 后台只返回 1562904163734
                  +/// </summary>
                  +public class LinCmsTimeConverter : DateTimeConverterBase
                  +{
                  +    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
                  +    {
                  +        double javaScriptTicks = 0;
                  +        if (value is DateTime dateTime)
                  +        {
                  +            javaScriptTicks = ConvertDateTimeInt(dateTime);
                  +        }
                  +        else
                  +        {
                  +            if (!(value is DateTimeOffset dateTimeOffset))
                  +                throw new JsonSerializationException("Expected date object value.");
                  +            javaScriptTicks = ConvertDateTimeInt(dateTimeOffset.ToUniversalTime().UtcDateTime);
                  +
                  +        }
                  +        writer.WriteValue(javaScriptTicks);
                  +    }
                  +
                  +    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
                  +    {
                  +        return ConvertIntDateTime(double.Parse(reader.Value.ToString()));
                  +    }
                  +    
                  +    /// <summary>
                  +    /// 日期转换为时间戳(时间戳单位毫秒)
                  +    /// </summary>
                  +    /// <param name="TimeStamp"></param>
                  +    /// <returns></returns> 
                  +    public static DateTime ConvertIntDateTime(double milliseconds)
                  +    {
                  +        return new DateTime(1970, 1, 1).AddMilliseconds(milliseconds);
                  +    }
                  +
                  +
                  +    public static double ConvertDateTimeInt(DateTime aDt)
                  +    {
                  +        return (aDt - new DateTime(1970, 1, 1)).TotalMilliseconds;
                  +    }
                  +}
                  +

                  参考

                    上次更新: 10/8/2019, 1:41:22 PM
                    + + + diff --git a/dotnetcore/lin-cms/Open-source-road.html b/dotnetcore/lin-cms/Open-source-road.html new file mode 100644 index 0000000..1ec2c97 --- /dev/null +++ b/dotnetcore/lin-cms/Open-source-road.html @@ -0,0 +1,48 @@ + + + + + + + 开源lin-cms-dotnetcore | IGeekFan的文档 + + + + + + + + +

                    开源lin-cms-dotnetcore

                    • 地址:https://github.com/luoyunchong/lin-cms-dotnetcore

                    1.什么是cms?

                    Content Management System,内容管理系统。

                    2.dotnetcore是什么

                    .NET Core,是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理,采用宽松的MIT协议,可构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序

                    3.lin-cms 是什么

                    Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问前端仓库。官方团队产品了解请访问TaleLin

                    4.lin-cms-dotnetcore有哪些特点?

                    前后端分离,提供后端接口,更少的依赖,后续将实现模块化安装与卸载。

                    • 用户管理、分组管理、分组权限管理、日志系统、文件上传等
                    • 更多功能(自定义扩展-模块系统)

                    设计如下

                    字典管理

                    我原本想实现这样的功能:

                    BaseType 1 对BaseItem多。

                    如:标签管理,一个文章下可以设置多个标签,原本需要设计表Tag,字段也大抵为Id,Name,Sort及关联表。 +我们使用BaseType、BaseItem实现。 +BaseType中TypeCode为tag,FullName为标签,id为1时。 +BaseItem中BaseTypeId为1,ItemCode为编码,ItemName为标签。ItemCode为不重复的字符串即可。

                    另Tag与Article的关联表,需要另设计一个表。

                    当我们要实现文章类别的下拉,原本需要设计一个表ArticleType,有字段,id,name,sort等。 +我们可以通过BaseType、BaseItem来实现,从而简化这些基础数据。 +BaseType有一条数据,TypeCode为 字符串category、FullName文章类别,BaseItem存多个文章类别(Java、大数据、Python、C#等),编码不同即可。

                    1. 表结构

                    base_type (字典类别管理)

                    字段 类型 备注
                    id int
                    type_code varchar(50) 类别编码
                    full_name varchar(50) 全称
                    sort_code int 排序码

                    base_type (字典管理)

                    字段 类型 备注
                    id int
                    base_type_id int 类别id(关联base_type的id)
                    item_code varchar(50) 字典编码
                    item_name varchar(50) 字典全称
                    sort_code int 排序码

                    但现实总是事与愿违

                    后台取文章列表时,想要取出文章对应的分类,手动join时,总觉得join的表会有些奇怪。

                    当然还有其他原因,局限性

                    1. 比如使用了这个字典,分类需要增加一个图片字段,就不能满足要求,那怎么办呢,做不了。
                    2. 比如标签需要实现这个标签下有多少个文章,通过统计也能实现,

                    使用FreeSql实现时,如果二个表之间没有导航属性,是更复杂的。

                    前端cms

                    扩展实现一个博客,项目地址:https://github.com/luoyunchong/lin-cms-vue

                      上次更新: 12/9/2019, 7:14:35 PM
                      + + + diff --git a/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.html b/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.html new file mode 100644 index 0000000..100e4a6 --- /dev/null +++ b/dotnetcore/lin-cms/Reflex-Assembly-Get-Controller-Methods-Attribute.html @@ -0,0 +1,166 @@ + + + + + + + 获取控制器及方法特性标签 | IGeekFan的文档 + + + + + + + + +

                      获取控制器及方法特性标签

                      .NET Core 反射获取所有控制器及方法上特定标签.

                      有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把他的参数,放入一个集合并缓存起来,以便后面使用此数据用于权限验证。

                      我们通过反射获取所有控制器下及方法的Attribute。

                      LinCmsAuthorizeAttribute是什么

                      其代码非常简单,用于自定义权限验证,通过重写OnAuthorizationAsync方法,实现固定权限可分配给动态角色(也能分配给动态用户)。主要就基于权限的授权的实现进行研究,实现方法级别的权限验证。

                      当然,这个只是部分代码,完整代码请查看最下方开源地址,其中LinCmsAuthorizeAttribute继承AuthorizeAttribute,拥有指定角色权限控制,当Permission未指定时,当过滤器与Authorize功能相同。Module是指模块,即多个权限,属于同一个模块,方便前台展示为树型结构。Permission属性的值不可重复。

                      [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
                      +public class LinCmsAuthorizeAttribute : AuthorizeAttribute, IAsyncAuthorizationFilter
                      +{
                      +    public string Permission { get; set; }
                      +    public string Module { get; set; }
                      +
                      +    public LinCmsAuthorizeAttribute()
                      +    {
                      +
                      +    }
                      +
                      +    public LinCmsAuthorizeAttribute(string permission,string module)
                      +    {
                      +        Permission = permission;
                      +        Module = module;
                      +    }
                      +
                      +    public LinCmsAuthorizeAttribute(string permission,string module, string policy) : base(policy)
                      +    {
                      +        Permission = permission;
                      +        Module = module;
                      +    }
                      +
                      +    public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
                      +    {
                      +        if (Permission == null) return;
                      +        var authorizationService = (IAuthorizationService)context.HttpContext.RequestServices.GetService(typeof(IAuthorizationService));
                      +        var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, null, new OperationAuthorizationRequirement() { Name = Permission });
                      +        if (!authorizationResult.Succeeded)
                      +        {
                      +            context.Result = new ForbidResult();
                      +        }
                      +    }
                      +
                      +    public override string ToString()
                      +    {
                      +        return $"\"{base.ToString()}\",\"Permission:{Permission}\",\"Module:{Module}\",\"Roles:{Roles}\",\"Policy:{Policy}\",\"AuthenticationSchemes:{AuthenticationSchemes}\"";
                      +    }
                      +}
                      +

                      Controller

                      在 LinCms.Web中的Controller,至于为什么Permission为中文,目前的主要原因,此项目用于适配 Lin-CMS-VUE项目,所以于平常我们以某个字符串作为权限名不同,但不须大惊小怪,道理相同。

                      [Route("cms/log")]
                      +[ApiController]
                      +public class LogController : ControllerBase
                      +{
                      +    private readonly ILogService _logService;
                      +
                      +    public LogController(ILogService logService)
                      +    {
                      +        _logService = logService;
                      +    }
                      +
                      +    [HttpGet("users")]
                      +    [LinCmsAuthorize("查询日志记录的用户", "日志")]
                      +    public List<string> GetLoggedUsers([FromQuery]PageDto pageDto)
                      +    {
                      +        return _logService.GetLoggedUsers(pageDto);
                      +    }
                      +
                      + 
                      +    [HttpGet]
                      +    [LinCmsAuthorize("查询所有日志", "日志")]
                      +    public PagedResultDto<LinLog> GetLogs([FromQuery]LogSearchDto searchDto)
                      +    {
                      +        return _logService.GetLogUsers(searchDto);
                      +    }
                      +
                      +    [HttpGet("search")]
                      +    [LinCmsAuthorize("搜索日志", "日志")]
                      +    public PagedResultDto<LinLog> SearchLogs([FromQuery]LogSearchDto searchDto)
                      +    {
                      +        return _logService.GetLogUsers(searchDto);
                      +    }
                      +}
                      +

                      测试类获取方法上的特定标签

                      in xunit test 项目工程中,开始我们的测试

                      [Fact]
                      +public void GetAssemblyMethodsAttributes()
                      +{
                      +    var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable()
                      +        .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList();
                      +
                      +    assembly.ForEach(r =>
                      +    {
                      +        foreach (var methodInfo in r.GetMethods())
                      +        {
                      +            foreach (Attribute attribute in methodInfo.GetCustomAttributes())
                      +            {
                      +                if (attribute is LinCmsAuthorizeAttribute linCmsAuthorize)
                      +                {
                      +                    _testOutputHelper.WriteLine(linCmsAuthorize.ToString());
                      +                }
                      +            }
                      +        }
                      +    });
                      +}    
                      +

                      方法结果

                      可在输出文本中查看,正是我们想要的东西,最后一行,是其他Controller中的内容,而且我们重写了ToString(),所以我们能看到其属性。

                      "LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询日志记录的用户","Module:日志","Roles:","Policy:","AuthenticationSchemes:"
                      +"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查询所有日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:"
                      +"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:搜索日志","Module:日志","Roles:","Policy:","AuthenticationSchemes:"
                      +"LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:查看lin的信息","Module:信息","Roles:","Policy:","AuthenticationSchemes:"
                      +
                      +

                      获取控制器上特性标签

                      /// <summary>
                      +/// 获取控制器上的LinCmsAuthorizeAttribute
                      +/// </summary>
                      +/// "LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:"
                      +[Fact]
                      +public void GetControllerAttributes()
                      +{
                      +    var assembly = typeof(Startup).Assembly.GetTypes().AsEnumerable()
                      +        .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToList();
                      +
                      +    assembly.ForEach(d =>
                      +    {
                      +        var linCmsAuthorize = d.GetCustomAttribute<LinCmsAuthorizeAttribute>();
                      +        if (linCmsAuthorize != null)
                      +        {
                      +            _testOutputHelper.WriteLine(linCmsAuthorize.ToString());
                      +        }
                      +    });
                      +}
                      +

                      Controller结果

                      只有AdminController加了此标签,所以只有一行。

                      "LinCms.Zero.Authorization.LinCmsAuthorizeAttribute","Permission:","Module:","Roles:Administrator","Policy:","AuthenticationSchemes:"
                      +

                      此时Roles为Administrator,Permission及Module都是null, +这是因为只有AdminController中加了LinGroup.Administrator="Administrator"字符串,在登录过程中,已经给当前登录用户设置了 new Claim(ClaimTypes.Role,user.IsAdmin()?LinGroup.Administrator:user.GroupId.ToString()),即"Administrator,当用户访问AdminController中的方法时,LinCmsAuthorize并没有做相关验证,都是AuthorizeAttribute,实现了固定角色权限的判断及登录的判断。LinCmsAuthorize完成了固定权限设置为不同的动态角色后,判断用户是否拥有此权限。

                      [LinCmsAuthorize(Roles = LinGroup.Administrator)]
                      +public class AdminController : ControllerBase
                      +{
                      +    ...
                      +}
                      +

                      参考

                      开源地址

                        上次更新: 10/8/2019, 1:41:22 PM
                        + + + diff --git a/dotnetcore/lin-cms/StopWords.html b/dotnetcore/lin-cms/StopWords.html new file mode 100644 index 0000000..b28cabe --- /dev/null +++ b/dotnetcore/lin-cms/StopWords.html @@ -0,0 +1,194 @@ + + + + + + + 全局敏感词处理 | IGeekFan的文档 + + + + + + + + +

                        全局敏感词处理

                        基于ToolGood.Words类库,配合敏感字的文本文件,写的API接口。

                        一共二种方式

                        1.ToolGood.Words

                        类库配合敏感库

                        简单用法

                        [Fact]
                        +public void IssuesTest_17()
                        +{
                        +    var illegalWordsSearch = new IllegalWordsSearch();
                        +    string s = "中国|zg人|abc";
                        +    illegalWordsSearch.SetKeywords(s.Split('|'));
                        +    var str = illegalWordsSearch.Replace("我是中美国人厉害中国完美abcddb好的", '*');
                        +
                        +    Assert.Equal("我是中美国人厉害**完美***ddb好的", str);
                        +}
                        +

                        配合敏感库文本文件,写的工具类

                        二个文件放到wwwroot/_Illegal目录下,通过ReplaceStopWords方法调用即可对

                        public class ToolGoodUtils
                        +{
                        +    //敏感库只要这二个文件存在即可
                        +    //本地敏感库缓存-https://github.com/toolgood/ToolGood.Words/tree/master/csharp/ToolGood.Words.Test/_Illegal
                        +    //因为需要上传至github并同步gitee,安全起见,所以未上传至git,需要自行下载并复制
                        +    private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt";
                        +    private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt";
                        +
                        +    private const string InfoPath = "wwwroot/_Illegal/IllegalInfo.txt";
                        +    private const string BitPath = "wwwroot/_Illegal/IllegalBit.iws";
                        +
                        +    private static IllegalWordsSearch _search;
                        +    /// <summary>
                        +    /// 本地敏感库,文件修改后,重新创建缓存Bit
                        +    /// </summary>
                        +    /// <returns></returns>
                        +    public static IllegalWordsSearch GetIllegalWordsSearch()
                        +    {
                        +        if (_search == null)
                        +        {
                        +            string ipath = Path.GetFullPath(InfoPath);
                        +            if (File.Exists(ipath) == false)
                        +            {
                        +                _search = CreateIllegalWordsSearch();
                        +            }
                        +            else
                        +            {
                        +                var texts = File.ReadAllText(ipath).Split('|');
                        +                if (new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") !=
                        +                    texts[0] ||
                        +                    new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") !=
                        +                    texts[1]
                        +                )
                        +                {
                        +                    _search = CreateIllegalWordsSearch();
                        +                }
                        +                else
                        +                {
                        +                    var s = new IllegalWordsSearch();
                        +                    s.Load(Path.GetFullPath(BitPath));
                        +                    _search = s;
                        +                }
                        +            }
                        +        }
                        +        return _search;
                        +    }
                        +
                        +    private static IllegalWordsSearch CreateIllegalWordsSearch()
                        +    {
                        +        string[] words1 = File.ReadAllLines(Path.GetFullPath(KeywordsPath), Encoding.UTF8);
                        +        string[] words2 = File.ReadAllLines(Path.GetFullPath(UrlsPath), Encoding.UTF8);
                        +        var words = new List<string>();
                        +        foreach (var item in words1)
                        +        {
                        +            words.Add(item.Trim());
                        +        }
                        +        foreach (var item in words2)
                        +        {
                        +            words.Add(item.Trim());
                        +        }
                        +
                        +        var search = new IllegalWordsSearch();
                        +        search.SetKeywords(words);
                        +
                        +        search.Save(Path.GetFullPath(BitPath));
                        +
                        +        var text = new FileInfo(Path.GetFullPath(KeywordsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") + "|"+ new FileInfo(Path.GetFullPath(UrlsPath)).LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
                        +        File.WriteAllText(Path.GetFullPath(InfoPath), text);
                        +
                        +        return search;
                        +    }
                        +}
                        +

                        2. 循环使用Replace

                        方案:通过维护敏感库,循环replace +大佬分享给我的,稍微改成了从文件中获取敏感字。

                        public static class StopWords
                        +{
                        +
                        +    static readonly ConcurrentDictionary<string, bool> FunNlpDataSensitive = new ConcurrentDictionary<string, bool>();
                        +    static readonly ConcurrentDictionary<int, string> ReplaceNewValue = new ConcurrentDictionary<int, string>();
                        +
                        +    private const string KeywordsPath = "wwwroot/_Illegal/IllegalKeywords.txt";
                        +    private const string UrlsPath = "wwwroot/_Illegal/IllegalUrls.txt";
                        +
                        +
                        +    static StopWords()
                        +    {
                        +        LoadDataFromFile();
                        +    }
                        +
                        +    public static void LoadDataFromFile()
                        +    {
                        +        string words1 = File.ReadAllText(Path.GetFullPath(KeywordsPath), Encoding.UTF8);
                        +        string words2 = File.ReadAllText(Path.GetFullPath(UrlsPath), Encoding.UTF8);
                        +        LoadDataFromText(words1);
                        +        LoadDataFromText(words2);
                        +    }
                        +
                        +
                        +    public static void LoadDataFromText(string text)
                        +    {
                        +        int oldcount = FunNlpDataSensitive.Count;
                        +        foreach (string wd in text.Split('\n'))
                        +        {
                        +            string keykey = wd.Trim().Trim('\r', '\n').Trim();
                        +            if (string.IsNullOrEmpty(keykey)) continue;
                        +            FunNlpDataSensitive.TryAdd(keykey, true);
                        +            if (ReplaceNewValue.ContainsKey(keykey.Length) == false)
                        +                ReplaceNewValue.TryAdd(keykey.Length, "".PadRight(keykey.Length, '*'));
                        +        }
                        +        Console.WriteLine($"敏感词加载完毕,增加数量:{FunNlpDataSensitive.Count - oldcount}");
                        +    }
                        +
                        +
                        +    /// <summary>
                        +    /// 替换所有敏感词为 *
                        +    /// </summary>
                        +    /// <param name="that"></param>
                        +    /// <returns></returns>
                        +    public static string ReplaceStopWords(this string that)
                        +    {
                        +        foreach (var wd in FunNlpDataSensitive.Keys)
                        +            that = that.Replace(wd, ReplaceNewValue.TryGetValue(wd.Length, out var tryval) ? tryval : "".PadRight(wd.Length, '*'));
                        +        return that;
                        +    }
                        +}
                        +

                        FreeSql全局处理敏感词

                        使用FreeSql这个ORM时,全局处理string类型的值,进行敏感词处理。代码在StartUp.cs的构造函数中。

                        //敏感词处理
                        +IllegalWordsSearch illegalWords = ToolGoodUtils.GetIllegalWordsSearch();
                        +
                        +Fsql.Aop.AuditValue += (s, e) =>
                        +{
                        +    if (e.Column.CsType == typeof(string) && e.Value != null)
                        +    {
                        +        string oldVal = (string)e.Value;
                        +        string newVal = illegalWords.Replace(oldVal);
                        +        //第二种处理敏感词的方式
                        +        //string newVal = oldVal.ReplaceStopWords();
                        +        if (newVal != oldVal)
                        +        {
                        +            e.Value = newVal;
                        +        }
                        +    }
                        +};
                        +
                          上次更新: 12/9/2019, 7:14:35 PM
                          + + + diff --git a/dotnetcore/lin-cms/dependency-injection.html b/dotnetcore/lin-cms/dependency-injection.html new file mode 100644 index 0000000..72e4376 --- /dev/null +++ b/dotnetcore/lin-cms/dependency-injection.html @@ -0,0 +1,121 @@ + + + + + + + 依赖注入 | IGeekFan的文档 + + + + + + + + +

                          依赖注入

                          官网介绍

                          https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2

                          Scrutor

                          在ConfigServices中,我们原本需要这样子依次注入仓储,服务和其他接口及实现,当有多个仓储时,这样就过于繁琐。

                          services.AddTransient<IUserRepository, UserRepository>();
                          +services.AddTransient<IUserService, UserService>();
                          +services.AddTransient<ICurrentUser, CurrentUser>();
                          +

                          Serivce后缀服务注入DI

                          当我们有多个Service后缀的服务时,使用以下方法,可将服务扫描只留下以Serivce结尾的类,将其类型注册为提供所有公共接口生成服务,其生命周期为Transient,

                          services.Scan(scan => scan
                          +        //加载Startup这个类所在的程序集
                          +        .FromAssemblyOf<Startup>()
                          +        // 表示要注册那些类,上面的代码还做了过滤,只留下了以 Service 结尾的类
                          +        .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service", StringComparison.OrdinalIgnoreCase)))
                          +        //表示将类型注册为提供其所有公共接口作为服务
                          +        .AsImplementedInterfaces()
                          +        //表示注册的生命周期为 Transient
                          +        .WithTransientLifetime()
                          +         );
                          +
                          +

                          ITransientDependency

                          新建一个空接口,当其他类继承此接口后,统一注入到DI中,以Transient的生命周期。

                          namespace LinCms.Zero.Dependency
                          +{
                          +    public interface ITransientDependency
                          +    {
                          +    }
                          +}
                          +

                          接口

                          public interface ICurrentUser
                          +{
                          +    int? Id { get; }
                          +
                          +    int? GroupId { get; }
                          +
                          +    bool? IsAdmin { get; }
                          +}
                          +

                          模拟实现

                              public class CurrentUser : ICurrentUser, ITransientDependency
                          +    {
                          +     
                          +        public int? Id => 1;
                          +        public int? GroupId => 2;
                          +        public bool? IsAdmin => true;
                          +    }
                          +

                          扫描所有继承ITransientDependency的实现。

                             services.Scan(scan => scan
                          +       // We start out with all types in the assembly of ITransientService
                          +        .FromAssemblyOf<ITransientDependency>()
                          +        // AddClasses starts out with all public, non-abstract types in this assembly.
                          +        // These types are then filtered by the delegate passed to the method.
                          +        // In this case, we filter out only the classes that are assignable to ITransientService.
                          +        .AddClasses(classes => classes.AssignableTo<ITransientDependency>())
                          +        // We then specify what type we want to register these classes as.
                          +        // In this case, we want to register the types as all of its implemented interfaces.
                          +        // So if a type implements 3 interfaces; A, B, C, we'd end up with three separate registrations.
                          +        .AsImplementedInterfaces()
                          +        // And lastly, we specify the lifetime of these registrations.
                          +        .WithTransientLifetime()
                          +         );
                          +
                          +

                          如何使用

                          在其他类中使用此接口

                          [ApiController]
                          +[Route("cms/user")]
                          +public class UserController : ControllerBase
                          +{
                          +    private readonly ICurrentUser _currentUser;
                          +
                          +    public UserController(ICurrentUser currentUser)
                          +    {
                          +        _currentUser = currentUser;
                          +    }
                          +
                          +    [HttpGet]
                          +    public int GetUser()
                          +    {
                          +        return _currentUser.Id;
                          +    }
                          +}
                          +

                          统一注入

                          当然,我们可以统一注入,而非写二次servics.Scan

                          services.Scan(scan => scan
                          +            .FromAssemblyOf<Startup>()
                          +            .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service",StringComparison.OrdinalIgnoreCase)))
                          +            .AsImplementedInterfaces()
                          +            .WithTransientLifetime()
                          +            .FromAssemblyOf<ITransientDependency>()
                          +            .AddClasses(classes => classes.AssignableTo<ITransientDependency>())
                          +            .AsImplementedInterfaces()
                          +            .WithTransientLifetime()
                          +      );
                          +
                            上次更新: 10/8/2019, 1:41:22 PM
                            + + + diff --git a/dotnetcore/lin-cms/dev-start.html b/dotnetcore/lin-cms/dev-start.html new file mode 100644 index 0000000..99db850 --- /dev/null +++ b/dotnetcore/lin-cms/dev-start.html @@ -0,0 +1,43 @@ + + + + + + + 开发起步 | IGeekFan的文档 + + + + + + + + +
                            + + + diff --git a/dotnetcore/lin-cms/dotnetcore-start.html b/dotnetcore/lin-cms/dotnetcore-start.html new file mode 100644 index 0000000..55c7c42 --- /dev/null +++ b/dotnetcore/lin-cms/dotnetcore-start.html @@ -0,0 +1,49 @@ + + + + + + + 后端准备 | IGeekFan的文档 + + + + + + + + +

                            后端准备

                            Server 端必备环境

                            获取工程项目

                            git clone https://github.com/luoyunchong/lin-cms-dotnetcore.git
                            +

                            数据库配置

                            文件位置src/LinCms.Web/appsettings.json,当数据库中存储表情包是,Charset为utf8mb4

                            请务必根据自己的实际情况修改此配置项

                            "ConnectionStrings": {
                            +    "Default": "Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=LinCms;Charset=utf8;SslMode=none;Max pool size=10"
                            +}
                            +

                            数据迁移

                            该项目使用FreeSql,默认自动迁移数据表结构,需要自己创建数据库,名字为LinCms,无须用户操作,但无数据,而且只有访问到表时才会创建某个表,所以用户可将备份SQL放到Mysql中生成,还原表结构及数据。

                            1.vscode命令行运行

                            使用vscode打开项目,

                            切换到LinCms.Web目录

                             D:\code\github\lin-cms-dotnetcore> cd src\LinCms.Web
                            +

                            编译、安装依赖包

                            D:\code\github\lin-cms-dotnetcore\src\LinCms.Web> dotnet build
                            +

                            运行

                            D:\code\github\lin-cms-dotnetcore\src\LinCms.Web> dotnet run watch
                            +Now listening on: https://localhost:5001
                            +Now listening on: http://localhost:5000
                            +Application started. Press Ctrl+C to shut down.
                            +

                            这时候打开 https://localhost:5001/swagger/index.html,即可看到swagger页面。

                            2.visual studio 2019运行

                            双击lin-cms-dotnetcore.sln即可使用vs2019打开项目。右键解决方案,点击生成解决方案,然后,再单击LinCms .Web,即可自动启动后台服务。

                            会打开浏览器,访问https://localhosst:5001/swagger/index.html,会看到swagger的文档。

                            部署至linux(Ubuntu16.06)

                            部署至Docker

                              上次更新: 11/28/2019, 7:52:40 PM
                              + + + diff --git a/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.html b/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.html new file mode 100644 index 0000000..2ca8cf2 --- /dev/null +++ b/dotnetcore/lin-cms/dynamic-authorization-in-asp-net-core.html @@ -0,0 +1,43 @@ + + + + + + + 认证与授权 | IGeekFan的文档 + + + + + + + + +

                              认证与授权

                              主要就基于权限的授权的实现进行研究,实现方法级别的权限验证。

                              认证鉴权相关

                              IdentityServer4

                              JWT

                              json web token

                                上次更新: 10/8/2019, 1:41:22 PM
                                + + + diff --git a/dotnetcore/lin-cms/error-code.html b/dotnetcore/lin-cms/error-code.html new file mode 100644 index 0000000..db1d3eb --- /dev/null +++ b/dotnetcore/lin-cms/error-code.html @@ -0,0 +1,35 @@ + + + + + + + code | IGeekFan的文档 + + + + + + + + + + + + diff --git a/dotnetcore/lin-cms/index.html b/dotnetcore/lin-cms/index.html new file mode 100644 index 0000000..374f874 --- /dev/null +++ b/dotnetcore/lin-cms/index.html @@ -0,0 +1,40 @@ + + + + + + + IGeekFan的文档 + + + + + + + + +

                                + Lin CMS .NET Core +

                                +😃 A simple and practical CMS implememted by .NET Core 2.2 +

                                项目简介

                                Build Status

                                本项目是完全出于个人喜爱,看到Lin-cms有了python,node.js,社区也有人出了lin-cms-tp5的版本

                                本项目是 Lin CMS 后端的 .NET Core 2.2的 实现,

                                什么是 Lin CMS?

                                Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问前端仓库。官方团队产品了解请访问TaleLin

                                线上文档地址(完善中)

                                https://luoyunchong.github.io/vuepress-docs/dotnetcore/lin-cms/

                                线上 Demo

                                前端

                                Lin CMS 的特点

                                Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。

                                Lin CMS 是一个前后端分离的 CMS 解决方案

                                这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,

                                首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 Razor等模板技术。

                                服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。

                                但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。

                                其次,单页面应用程序的体验本身就要好于传统网站。

                                框架本身已内置了 CMS 常用的功能

                                Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可

                                更多关于Lin CMS的介绍请访问Lin CMS线上文档

                                所需基础

                                由于 Lin 采用的是前后端分离的架构,所以你至少需要熟悉 C# 和 Vue。

                                后端 C#

                                该项目的Lin 的服务端框架是基于.NET Core 2.2构建的,所以如果你比较熟悉Mvc、WebAPI、过滤器等概念,或者是 有.NET Framework中Mvc开发经验,相信你一定很容易写出代码。

                                后端主要技术

                                • 数据库:FreeSql+MySQL5.6
                                • ASP.NET Core2.2+MVC
                                • 简化对象映射:AutoMapper
                                • 身份认证框架:IdentityServer4
                                • Json Web令牌:JWT
                                • 文档:Swagger
                                • 序列化:Newtonsoft.Json
                                • 测试框架:Xunit
                                • 日志 NLog
                                • 简化注入服务:Scrutor
                                • 通用扩展方法 Z.ExtensionMethods

                                前端

                                前端需要开发者比较熟悉 Vue 的,另外需要了解 ES6,axios,ElementUi、webpack、Vuex、Vue-Router等等等

                                讨论交流

                                QQ 交流群

                                • 林间有风(lin-cms-vue) QQ 群号:643205479
                                • .NET Core搬砖队(lin-cms-dotnetcore) QQ群号:762828442

                                微信公众号

                                微信搜索:林间有风

                                下个版本开发计划

                                1. 迁移Mock.Luo项目至lin-cms-dotnetcore,
                                2. 实现模块化开发,支持基础组件安装与卸载。
                                3. 实现abp vnext的文档的功能 https://docs.abp.io/en/abp/latest
                                4. 写文档。
                                • [x] 创建时间、创建人、修改时间、修改人、删除人、删除时间、是否删除(软删除)
                                • [x] 部署
                                • [ ] 系统访问日志、错误日志可视化
                                • [ ] 完善文档
                                • [ ] 重构核心库结构
                                • [ ] 基于lin-cms-vue的基础,将之前Mock.luo项目中的博客迁移过来 +
                                  • [x] 博客随笔发布/编辑/删除
                                  • [ ] 留言板
                                  • [x] 评论回复、审核、点赞等
                                  • [x] 前端展示博客效果
                                  • [x] 基础资料 BaseItem
                                  • [x] 类别管理 BaseType

                                开源地址

                                上次更新: 12/9/2019, 7:14:35 PM
                                + + + diff --git a/dotnetcore/lin-cms/pm-design-comment.html b/dotnetcore/lin-cms/pm-design-comment.html new file mode 100644 index 0000000..1b63c7e --- /dev/null +++ b/dotnetcore/lin-cms/pm-design-comment.html @@ -0,0 +1,44 @@ + + + + + + + 产品设计-评论模块的设计 | IGeekFan的文档 + + + + + + + + +

                                产品设计-评论模块的设计

                                主题式

                                将评论分为二级,第一级采用时间倒序,二级按照时间正序,有助于理解上下文关系。

                                用户操作:

                                • 评论随笔(内容支持超链接、emoji)
                                • 点赞评论/取消点赞
                                • 回复评论
                                • 删除自己的评论

                                运营操作:

                                • 审核通过/拉黑评论
                                • 删除任何评论
                                • 拉黑后的显示逻辑。(保留当前区块、显示内容为:该评论因违规被拉黑)
                                • 删除:(如果是二级评论,直接软删除,如果是一级评论,软删除子评论和当前评论-需要提前提醒用户) +交互设计
                                • 评论的字数长度(500)、emoji。
                                • 点赞交互-动画、消息通知/推送
                                • 评论区域元素,需要有明确可点击的区域,会跳转到哪个地方。

                                优化

                                • 精选评论
                                  上次更新: 12/9/2019, 7:14:35 PM
                                  + + + diff --git a/dotnetcore/lin-cms/pm-design-modules.html b/dotnetcore/lin-cms/pm-design-modules.html new file mode 100644 index 0000000..6f776a7 --- /dev/null +++ b/dotnetcore/lin-cms/pm-design-modules.html @@ -0,0 +1,72 @@ + + + + + + + 功能模块的设计 | IGeekFan的文档 + + + + + + + + +

                                  功能模块的设计

                                  基础权限模块

                                  • 用户信息:邮件、用户名(唯一)、昵称、头像、分组、是否激活、手机号、是否是Admin、个性签名 +
                                    • [x] 注册/登录
                                    • [x] 上传头像
                                    • [x] 修改密码
                                    • 用户基本信息修改
                                    • [x] 配置分组
                                    • 第三方账号绑定/登录
                                  • 绑定信息:功能(QQ快速登录,GitHub快速登录)。
                                  • 分组信息:是否静态分组(无法删除,无法修改分组编码)、名称可以修改 +
                                    • [x] 分组增删改
                                    • [x] 组别配置权限
                                  • 文件管理 +
                                    • [x] 本地文件上传
                                    • 七牛云存储
                                    • 文件去重,秒传
                                  • [x] 系统日志:请求方法、路径、http返回码、时间、用户昵称、用户id、访问哪个权限、 日志信息 +
                                    • 记录系统请求的日志

                                  cms 管理员维护模块

                                  • [x] 标签管理:名称、图片,是否启用/禁用,排序、文章数量、用户关注数量。 +
                                    • [x] 标签增删改
                                    • [x] 标签列表,禁用
                                  • 随笔管理: +
                                    • 审核随笔/拉黑
                                  • 评论管理 +
                                    • 后台审核通过/拉黑
                                    • 管理员删除评论
                                  • 字典管理 +
                                    • [x] 字典类别管理
                                    • [x] 字典管理:如随笔类型(原创、转载、翻译)

                                  cms 用户端模块

                                  • 分类专栏管理:发布随笔时可选择单个分类。 +
                                    • [x] 分类增删改(随笔数量、图片、名称、排序)
                                    • [x] 分类列表,仅查看、编辑自己创建的分类专栏
                                  • 标签:统计每个标签下多少个文章、多少人关注 +
                                    • [x] 标签列表
                                    • [x] 无限加载
                                    • [x] 最新/最热 根据名称模糊查询
                                    • 我关注的标签
                                  • 随笔 +
                                    • [x] 支持markdown,增删改(仅自己的随笔),修正分类专栏中的随笔数量
                                    • [x] 列表无限加载,按标签查询随笔
                                    • [x] 点赞随笔
                                    • 随笔详情页 +
                                      • [x] 支持目录导航(滚动时,固定至顶部位置),展示字数统计、预计阅读时长;
                                      • [x] 作者介绍:头像,昵称,签名,随笔数;
                                      • [x] 展示文章类型:原创、转载、翻译
                                      • 相关文章
                                      • 推荐文章
                                  • 评论 +
                                    • 评论随笔(内容支持超链接、emoji)
                                    • [x] 删除自己的评论
                                    • [x] 点赞评论
                                    • [x] 回复评论
                                  • 关注 +
                                    • 关注/取消关注用户
                                    • 关注/取消关注标签

                                  个人主页

                                  • 用户专栏分类展示
                                  • 最新发布、最热的随笔
                                  • 关注的人/标签
                                  • 粉丝
                                  • 个人主页详细页:设置个人资料,绑定邮件,

                                  更多

                                  • 消息通知:如点赞随笔,评论随笔、点赞评论、回复评论后的消息通知。

                                  脑图分享

                                  image

                                  分组

                                  分为三种

                                  id  name        info
                                  +1	Admin	    系统管理员
                                  +2	CmsAdmin	内容管理员
                                  +3	User	    普通用户
                                  +

                                  审计日志

                                  大多数表存在如下8个字段,用于记录行的变化状态,is_deleted为软删除,执行删除操作时,将其状态置为true,默认实体类继承 FullAduitEntity 即可拥有以下8个字段。该设计参考ABP中的实现。FullAduitEntity为泛型,默认id为long类型,FullAduitEntity<Guid>,即可改变主键类型,默认LinUser表主键long,保持create_user_id,delete_user_id,update_user_id都与LinUser的主键相同

                                  
                                  +id	                bigint
                                  +create_user_id  	bigint
                                  +create_time	        datetime
                                  +is_deleted	        bit
                                  +delete_user_id  	bigint
                                  +delete_time	        datetime
                                  +update_user_id	    bigint
                                  +update_time	        datetime
                                  +
                                  +
                                  +

                                  lin-cms 开源地址分享

                                    上次更新: 12/9/2019, 7:14:35 PM
                                    + + + diff --git a/dotnetcore/lin-cms/spa-github-login.html b/dotnetcore/lin-cms/spa-github-login.html new file mode 100644 index 0000000..28abcd5 --- /dev/null +++ b/dotnetcore/lin-cms/spa-github-login.html @@ -0,0 +1,273 @@ + + + + + + + GitHub第三方授权登录 | IGeekFan的文档 + + + + + + + + +

                                    GitHub第三方授权登录

                                    使用SPA+.NET Core3.1实现 GitHub第三方授权登录 类似使用AspNet.Security.OAuth.GitHub,前端使用如下:VUE+Vue-Router+axios

                                    AspNet.Security.OAuth.GitHub

                                    GitHub授权登录

                                    什么配置的过程不说了。。有一推。

                                    下面为示例

                                    client_id:0be6b05fc717bfc4fb67
                                    +client_secret:dcaced9f176afba64e89d88b9b06ffc4a887a609
                                    +

                                    Get

                                    https://github.com/login/oauth/authorize?client_id=0be6b05fc717bfc4fb67&redirect_uri=https://localhost:5001/signin-github
                                    +

                                    会重定向到

                                    https://localhost:5001/signin-github?code=07537a84d12bbae08361

                                    这个code放到下面的请求中,获取access_token +POST方式(PostMan去请求)

                                    https://github.com/login/oauth/access_token?client_id=0be6b05fc717bfc4fb67&client_secret=dcaced9f176afba64e89d88b9b06ffc4a887a609&code=07537a84d12bbae08361
                                    +

                                    Get方式

                                    https://api.github.com/user?access_token=787506afa3271d077b98f18af56d7cfdc8db43b4
                                    +

                                    然后就能获取用户信息

                                    {
                                    +   "login": "luoyunchong",
                                    +   "id": 18613266,
                                    +   "node_id": "MDQ6VXNlcjE4NjEzMjY2",
                                    +   "avatar_url": "https://avatars1.githubusercontent.com/u/18613266?v=4",
                                    +   "gravatar_id": "",
                                    +   "url": "https://api.github.com/users/luoyunchong",
                                    +   "html_url": "https://github.com/luoyunchong",
                                    +   "followers_url": "https://api.github.com/users/luoyunchong/followers",
                                    +   "following_url": "https://api.github.com/users/luoyunchong/following{/other_user}",
                                    +   "gists_url": "https://api.github.com/users/luoyunchong/gists{/gist_id}",
                                    +   "starred_url": "https://api.github.com/users/luoyunchong/starred{/owner}{/repo}",
                                    +   "subscriptions_url": "https://api.github.com/users/luoyunchong/subscriptions",
                                    +   "organizations_url": "https://api.github.com/users/luoyunchong/orgs",
                                    +   "repos_url": "https://api.github.com/users/luoyunchong/repos",
                                    +   "events_url": "https://api.github.com/users/luoyunchong/events{/privacy}",
                                    +   "received_events_url": "https://api.github.com/users/luoyunchong/received_events",
                                    +   "type": "User",
                                    +   "site_admin": false,
                                    +   "name": "IGeekFan",
                                    +   "company": null,
                                    +   "blog": "https://blog.igeekfan.cn",
                                    +   "location": null,
                                    +   "email": "luoyunchong@foxmail.com",
                                    +   "hireable": null,
                                    +   "bio": "学习之路漫漫无期。",
                                    +   "public_repos": 14,
                                    +   "public_gists": 0,
                                    +   "followers": 16,
                                    +   "following": 11,
                                    +   "created_at": "2016-04-22T10:33:44Z",
                                    +   "updated_at": "2019-12-21T14:49:33Z"
                                    +}
                                    +

                                    .NET Core3.1

                                    以下代码为主要代码,完整代码看下面的DEMO链接。

                                    使用WebApi时,看了一些项目,全是基于MVC结构的,都不是我想要的。看了一些博客上面介绍 ,步骤都是千篇一律,都是配合前后端分离的。

                                    • 前端运行在:http://localhost:8081
                                    • 后端运行在:https://localhost:5001

                                    前后端分离的SPA 配合第三方授权登录流程如下

                                    本地测试时,gitHub回调地址设置 http(s)😕/ip:端口/signin-github

                                    • 如: https://localhost:5001/signin-github。

                                    1. 上面这个明明填写的后端的地址,那后端怎么把结果通知前端呢?

                                    前端请求https://localhost:5001/signin?provider=GitHub&redirectUrl=http://localhost:8080/login-result

                                    • 提供参数provider为GitHub,
                                    • redirectUrl为GitHub授权登录后,回调signin-github后,后端再去重定向的地址,这里填前端的一个路由。

                                    2. 后端只提供了signin,signin-callback路由,没有signin-github,那github上配置的路由是怎么回调回来呢?

                                    google-登录,微软文档,其中有一个更改默认回调 URI,通过 AddGitHub中的CallbackPath属性配置。

                                    介绍了回调地址应配置signin-google,所以这里应该是signin-github,他是可以配置的,不需要自己写程序处理signin-google这个路由,内部有中间件已经处理了。

                                    3. 回调到signin-github后,后端怎么处理,才能让前端刷新。获取登录后的信息呢。

                                    具体上面的根据code获取access_token,根据access_token获取用户的信息的过程,这些处理的过程,都不需要我们自己处理。我们可以用直接获取用户信息。

                                    一个方法SignIn,只要return Challenge(properties, provider);

                                    • provider 为 GitHub,
                                    • properties var properties = new AuthenticationProperties { RedirectUri = url };

                                    这个url为另一个获取用户信息的路由,只要拼接好地址即可。

                                    var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);
                                    +string email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value;
                                    +string name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value;
                                    +

                                    需要注入

                                    private readonly IHttpContextAccessor _contextAccessor;
                                    +public AuthenticationController( IHttpContextAccessor contextAccessor)
                                    +{
                                    +    _contextAccessor = contextAccessor;
                                    +}
                                    +

                                    代码部署(简化)

                                    打开NuGet包管理,安装包

                                    Install-Package AspNet.Security.OAuth.GitHub
                                    +

                                    appSettings.json

                                    "Authentication": {
                                    +    "GitHub": {
                                    +      "ClientId": "0be6b05fc717bfc4fb67",
                                    +      "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609"
                                    +    }
                                    +}
                                    +

                                    add扩展方法

                                    public static class JwtConfiguration
                                    +{
                                    +    public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration)
                                    +    {
                                    +
                                    +        services.AddAuthentication(opts =>
                                    +            {
                                    +                opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                                    +                opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                                    +            }).AddCookie(options =>
                                    +        {
                                    +            options.LoginPath = "/signin";
                                    +            options.LogoutPath = "/signout";
                                    +        }).AddGitHub(options =>
                                    +        {
                                    +            options.ClientId = configuration["Authentication:GitHub:ClientId"];
                                    +            options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];
                                    +        });
                                    +    }
                                    +}
                                    +

                                    默认情况下,如头像,email,是没有获取的。

                                    .AddGitHub(options =>
                                    +{
                                    +    options.ClientId = configuration["Authentication:GitHub:ClientId"];
                                    +    options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];
                                    +    //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github
                                    +    options.Scope.Add("user:email");
                                    +    //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value;  得到GitHub头像
                                    +    options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");
                                    +    options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio");
                                    +    options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog");
                                    +});
                                    +
                                    +#其中LinConsts类为静态常量
                                    +public static class LinConsts
                                    +{
                                    +    public static class Claims
                                    +    {
                                    +        public const string BIO = "urn:github:bio";
                                    +        public const string AvatarUrl = "urn:github:avatar_url";
                                    +        public const string BlogAddress = "urn:github:blog";
                                    +    }
                                    +}
                                    +

                                    startup.cs

                                    ConfigureServices中配置此服务

                                        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
                                    +    services.AddJwtConfiguration(Configuration);
                                    +

                                    创建AuthenticationController.cs +增加SignIn,用于处理用户授权成功后,重定回signin-callback,并将参数带回。

                                            private readonly IHttpContextAccessor _contextAccessor;
                                    +        private readonly IConfiguration _configuration;
                                    +
                                    +        public AuthenticationController(IHttpContextAccessor contextAccessor, IConfiguration configuration)
                                    +        {
                                    +            _contextAccessor = contextAccessor;
                                    +            _configuration = configuration;
                                    +        }
                                    +        
                                    +        [HttpGet("~/signin")]
                                    +        public async Task<IActionResult> SignIn(string provider, string redirectUrl)
                                    +        {
                                    +            var request = _contextAccessor.HttpContext.Request;
                                    +            var url =
                                    +                $"{request.Scheme}://{request.Host}{request.PathBase}{request.Path}-callback?provider={provider}&redirectUrl={redirectUrl}";
                                    +            var properties = new AuthenticationProperties { RedirectUri = url };
                                    +            properties.Items["LoginProviderKey"] = provider;
                                    +            return Challenge(properties, provider);
                                    +
                                    +        }
                                    +

                                    在signin方法中,用户点击授权后(第一次),会根据其传递的URL,重定向到这个地址,signin-callback,参数也会一同携带。provider为GitHub,redirectUrl为:http://localhost:8081/login-result.

                                    [HttpGet("~/signin-callback")]
                                    +public async Task<IActionResult> Home(string provider = null, string redirectUrl = "")
                                    +{
                                    +    var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);
                                    +    if (!authenticateResult.Succeeded) return Redirect(redirectUrl);
                                    +    var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier);
                                    +    if (openIdClaim == null || string.IsNullOrWhiteSpace(openIdClaim.Value))
                                    +        return Redirect(redirectUrl);
                                    +
                                    +    //TODO 记录授权成功后的信息 
                                    +
                                    +    string email = authenticateResult.Principal.FindFirst(ClaimTypes.Email)?.Value;
                                    +    string name = authenticateResult.Principal.FindFirst(ClaimTypes.Name)?.Value;
                                    +    string gitHubName = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Name)?.Value;
                                    +    string gitHubUrl = authenticateResult.Principal.FindFirst(GitHubAuthenticationConstants.Claims.Url)?.Value;
                                    +    //startup 中 AddGitHub配置项  options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");
                                    +    string avatarUrl = authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value;
                                    +
                                    +    return Redirect($"{redirectUrl}?openId={openIdClaim.Value}");
                                    +}
                                    +

                                    这时候我们能获取用户信息了。那么前端怎么办呢。我们写个方法,获取用户信息,看看效果。

                                    • 浏览器直接打开能得到github的id。
                                    • axios GET请求 https://localhost:5001/OpenId 得到null
                                    [HttpGet("~/OpenId")]
                                    +public async Task<string> OpenId(string provider = null)
                                    +{
                                    +   var authenticateResult = await _contextAccessor.HttpContext.AuthenticateAsync(provider);
                                    +   if (!authenticateResult.Succeeded) return null;
                                    +   var openIdClaim = authenticateResult.Principal.FindFirst(ClaimTypes.NameIdentifier);
                                    +   return openIdClaim?.Value;
                                    +}
                                    +

                                    我记得之前传Token时,后台是可以这样获取的。

                                    [HttpGet("~/GetOpenIdByToken")]
                                    +public string GetOpenIdByToken()
                                    +{
                                    +    return User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
                                    +}
                                    +

                                    LoginResult.vue在created生命周期中。都是得到null

                                    axios({
                                    +  methods: "get",
                                    +  url: "https://localhost:5001/OpenId?provider=GitHub"
                                    +})
                                    +  .then(function(response) {
                                    +    // handle success
                                    +    console.log(response);
                                    +  })
                                    +
                                    +axios({
                                    +  methods: "get",
                                    +  url: "https://localhost:5001/GetOpenIdByToken"
                                    +})
                                    +  .then(function(response) {
                                    +    // handle success
                                    +    console.log(response);
                                    +  })
                                    +

                                    为什么呢???

                                    因为前后端分离,不是基于Cookies的。http是无状态的。每次请求无法区分用户的。我们可以根据当前的ClaimsPrincipal,根据JWT生成相应的Token,axios请求时,放到headers中。

                                    安装包

                                    Install-Package Microsoft.AspNetCore.Authentication.JwtBearer
                                    +

                                    AppSettings.json配置改成

                                    "Authentication": {
                                    +"JwtBearer": {
                                    +  "SecurityKey": "JWTStudyWebsite_DI20DXU3",
                                    +  "Issuer": "JWTStudy",
                                    +  "Audience": "JWTStudyWebsite"
                                    +},
                                    +"GitHub": {
                                    +  "ClientId": "0be6b05fc717bfc4fb67",
                                    +  "ClientSecret": "dcaced9f176afba64e89d88b9b06ffc4a887a609"
                                    +}
                                    +}
                                    +

                                    AddJwtConfiguration改成如下内容

                                    public static void AddJwtConfiguration(this IServiceCollection services, IConfiguration configuration)
                                    +{
                                    +
                                    +    services.AddAuthentication(opts =>
                                    +        {
                                    +            opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                                    +            opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                                    +        }).AddCookie(options =>
                                    +    {
                                    +        options.LoginPath = "/signin";
                                    +        options.LogoutPath = "/signout";
                                    +    }).AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
                                    +    {
                                    +        options.Audience = configuration["Authentication:JwtBearer:Audience"];
                                    +
                                    +        options.TokenValidationParameters = new TokenValidationParameters
                                    +        {
                                    +            // The signing key must match!
                                    +            ValidateIssuerSigningKey = true,
                                    +            IssuerSigningKey = new SymmetricSecurityKey(
                                    +                Encoding.ASCII.GetBytes(configuration["Authentication:JwtBearer:SecurityKey"])),
                                    +
                                    +            // Validate the JWT Issuer (iss) claim
                                    +            ValidateIssuer = true,
                                    +            ValidIssuer = configuration["Authentication:JwtBearer:Issuer"],
                                    +
                                    +            // Validate the JWT Audience (aud) claim
                                    +            ValidateAudience = true,
                                    +            ValidAudience = configuration["Authentication:JwtBearer:Audience"],
                                    +
                                    +            // Validate the token expiry
                                    +            ValidateLifetime = true,
                                    +
                                    +            // If you want to allow a certain amount of clock drift, set that here
                                    +            //ClockSkew = TimeSpan.Zero
                                    +        };
                                    +    }).AddGitHub(options =>
                                    +    {
                                    +        options.ClientId = configuration["Authentication:GitHub:ClientId"];
                                    +        options.ClientSecret = configuration["Authentication:GitHub:ClientSecret"];
                                    +        //options.CallbackPath = new PathString("~/signin-github");//与GitHub上的回调地址相同,默认即是/signin-github
                                    +        options.Scope.Add("user:email");
                                    +        //authenticateResult.Principal.FindFirst(LinConsts.Claims.AvatarUrl)?.Value;  得到GitHub头像
                                    +        options.ClaimActions.MapJsonKey(LinConsts.Claims.AvatarUrl, "avatar_url");
                                    +        options.ClaimActions.MapJsonKey(LinConsts.Claims.BIO, "bio");
                                    +        options.ClaimActions.MapJsonKey(LinConsts.Claims.BlogAddress, "blog");
                                    +    });
                                    +}
                                    +

                                    前端LoginResult.vue代码

                                    前端运行

                                    yarn install
                                    +yarn serve
                                    +

                                    点击GitHub登录

                                    GetOpenIdByToken根据生成的token值,解析出了用户id,这样前端在login-result这个组件中,把token保存好,并重定向自己的主页,获取用户所有信息即可。

                                    data: 18613266
                                    +status: 200
                                    +config: {url: "https://localhost:5001/GetOpenIdByToken"}
                                    +

                                    OpenId?provider=GitHub则得不到数据,只能浏览器直接请求https://localhost:5001/OpenId?provider=GitHub,才能到github 的id。这个适应于前后端不分离,或者属于之前我们经常使用MVC结构,同一域名下,同一端口,基于Cookies登录的判断。

                                    参考

                                    Demo 示例

                                    上次更新: 12/27/2019, 11:24:45 PM
                                    + + + diff --git a/dotnetcore/lin-cms/vue-start.html b/dotnetcore/lin-cms/vue-start.html new file mode 100644 index 0000000..2d6a303 --- /dev/null +++ b/dotnetcore/lin-cms/vue-start.html @@ -0,0 +1,96 @@ + + + + + + + 前端准备 | IGeekFan的文档 + + + + + + + + +

                                    前端准备

                                    开源地址

                                    文档地址

                                    官方预览地址

                                    线上 Demo

                                    快速上手

                                    开发必备

                                    如果以下命令有问题,请删除yarn.lock,node_modules文件夹后,重新执行yarn,yarn serve

                                    # clone the project
                                    +git clone https://github.com/luoyunchong/lin-cms-vue.git
                                    +
                                    +# install dependency
                                    +yarn
                                    +
                                    +# develop
                                    +yarn serve
                                    +
                                    +# deploy
                                    +yarn deploy
                                    +

                                    deploy 发布

                                    scp2方便快速发布,一行命令就能快速发布成功。

                                    必备条件:(参数)

                                    • 一台linux的服务器,ip
                                    • 用户名
                                    • 密码
                                    • 端口:默认是22
                                    • 发布的地址。这里放到/var/www/lin-cms-vue目录中。

                                    步骤

                                    根目录新建deploy目录,创建index.js文件。

                                    'use strict'
                                    +// 引入scp2模块
                                    +var client = require('scp2');
                                    +const ora = require('ora')
                                    +const chalk = require('chalk')
                                    +const spinner = ora('正在发布到生产服务器...')
                                    +spinner.start()
                                    +client.scp('dist/', {
                                    +    "host": "",
                                    +    "username": "",
                                    +    "password": "",
                                    +    "port": "22",
                                    +    "path": "/var/www/lin-cms-vue"
                                    +}, function (err) {
                                    +    spinner.stop()
                                    +    if (!err) {
                                    +        console.log("npm run build-scp2: scp2工具上传完毕,远端服务路径:/var/www/lin-cms-vue")
                                    +    } else {
                                    +        console.log("err", err)
                                    +    }
                                    +})
                                    +

                                    快速发布,需要安装 scp2

                                    cnpm install scp2
                                    +

                                    package.json中增加

                                      "scripts": {
                                    +    "deploy": "yarn build:production && node ./deploy",
                                    +}
                                    +
                                    yarn deploy
                                    +

                                    nginx 配置

                                    • vue 使用history的配置
                                    server {
                                    +    listen 8080;
                                    +    root /var/www/lin-cms-vue;
                                    +
                                    +   charset utf-8;
                                    +   location / {
                                    +       try_files $uri $uri/ /index.html; 
                                    +
                                    +     }
                                    +        
                                    +    error_page   500 502 503 504  /50x.html;
                                    +    location = /50x.html {
                                    +        root   html;
                                    +    }
                                    +
                                    +}
                                    +

                                    配置项

                                    1. 配置 api 地址: 打开配置文件 src/config/index.js 配置 baseUrl ,本地开发阶段配置本地虚拟域名(https://localhost:5001/),线上部署生产域名。

                                    2. 用户名:super 密码 123456

                                      上次更新: 12/27/2019, 11:24:45 PM
                                      + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..eaa53e4 --- /dev/null +++ b/index.html @@ -0,0 +1,52 @@ + + + + + + + 简介 | IGeekFan的文档 + + + + + + + + +

                                      简介

                                      项目使用vuepress,其可专注于文档构建

                                      文档源码

                                      https://github.com/luoyunchong/vuepress-docs

                                      vuepress

                                      该采用vuepress搭建,内置md,可以采用vue语法,vue作者出品

                                      完整文档

                                      LinCMS

                                      Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架,前后端分离的完整解决方案。

                                      与本项目的关系:本项目和Lin-CMS的文档的样式效果是一样的,所以文档构建中包含“林间有风团队” 出品,意思是指UI主题来自其团队。

                                      如何构建运行

                                      前提

                                      • node.js
                                      • yarn或npm
                                      • vuepress

                                      最好是安装yarn https://yarnpkg.com/lang/zh-hans/docs/install/#windows-stable

                                      安装依赖包,开发运行

                                      PS D:\code\github\vuepress-docs>yarn install
                                      +PS D:\code\github\vuepress-docs>yarn dev
                                      +

                                      如果不能正常运行,就删除 yarn.lock、node_modules文件夹,再重新执行上面的命令

                                      生成发布包

                                      PS D:\code\github\vuepress-docs>yarn build 
                                      +

                                      发布

                                      发布至github pages 中的gh-pages分支

                                      PS D:\code\github\vuepress-docs>.\deploy.ps1
                                      +

                                      .sh 也不懂,关键我本地是windows,不能正常执行,git bash 也许可以

                                      package.json介绍

                                      package.json有这些命令

                                        "scripts": {
                                      +    "dev": "node bin/vuepress dev docs",
                                      +    "build": "node bin/vuepress build docs",
                                      +    "lint": "eslint --fix --ext .js,.vue bin/ lib/ test/",
                                      +    "deploy-gh": "yarn build && bash scripts/deploy-gh.sh",
                                      +    "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s",
                                      +    "release": "bash scripts/release.sh",
                                      +    "test": "node test/prepare.js && jest --config test/jest.config.js"
                                      +  },
                                      +

                                      所以我们可以 yarn dev或yarn build +其他的,暂时还不会跑

                                      bash无法推送 +ssh: connect to host github.com port 22: No route to host +fatal: Could not read from remote repository.

                                      yarn deploy-gh
                                      +
                                        上次更新: 10/8/2019, 1:41:22 PM
                                        + + + diff --git a/docs/.vuepress/public/left-logo.png b/left-logo.png similarity index 100% rename from docs/.vuepress/public/left-logo.png rename to left-logo.png diff --git a/lib/app/.temp/enhanceApp.js b/lib/app/.temp/enhanceApp.js deleted file mode 100644 index 03c095d..0000000 --- a/lib/app/.temp/enhanceApp.js +++ /dev/null @@ -1 +0,0 @@ -export default function () {} \ No newline at end of file diff --git a/lib/app/.temp/style.styl b/lib/app/.temp/style.styl deleted file mode 100644 index e69de29..0000000 diff --git a/lib/app/.temp/themeEnhanceApp.js b/lib/app/.temp/themeEnhanceApp.js deleted file mode 100644 index 03c095d..0000000 --- a/lib/app/.temp/themeEnhanceApp.js +++ /dev/null @@ -1 +0,0 @@ -export default function () {} \ No newline at end of file diff --git a/lib/app/SWUpdateEvent.js b/lib/app/SWUpdateEvent.js deleted file mode 100644 index fe6ab31..0000000 --- a/lib/app/SWUpdateEvent.js +++ /dev/null @@ -1,43 +0,0 @@ -export default class SWUpdateEvent { - constructor (registration) { - Object.defineProperty(this, 'registration', { - value: registration, - configurable: true, - writable: true - }) - } - - /** - * Check if the new service worker exists or not. - */ - update () { - return this.registration.update() - } - - /** - * Activate new service worker to work 'location.reload()' with new data. - */ - skipWaiting () { - const worker = this.registration.waiting - if (!worker) { - return Promise.resolve() - } - - console.log('[vuepress:sw] Doing worker.skipWaiting().') - return new Promise((resolve, reject) => { - const channel = new MessageChannel() - - channel.port1.onmessage = (event) => { - console.log('[vuepress:sw] Done worker.skipWaiting().') - if (event.data.error) { - reject(event.data.error) - } else { - resolve(event.data) - } - } - - worker.postMessage({ type: 'skip-waiting' }, [channel.port2]) - }) - } -} - diff --git a/lib/app/app.js b/lib/app/app.js deleted file mode 100644 index fc717ea..0000000 --- a/lib/app/app.js +++ /dev/null @@ -1,128 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import dataMixin from './dataMixin' -import store from './store' -import { routes } from '@temp/routes' -import { siteData } from '@temp/siteData' -import enhanceApp from '@temp/enhanceApp' -import themeEnhanceApp from '@temp/themeEnhanceApp' - -// generated from user config -import('@temp/style.styl') - -// built-in components -import Content from './components/Content' -import OutboundLink from './components/OutboundLink.vue' -import ClientOnly from './components/ClientOnly' -import RightMenu from './components/RightMenu' -import Border from './components/Border' -import BorderContent from './components/BorderContent' -import Tag from './components/Tag' -import BorderCenter from './components/BorderCenter' -import Tip from './components/Tip' -import ImgWrapper from './components/ImgWrapper' -// suggest dev server restart on base change -if (module.hot) { - const prevBase = siteData.base - module.hot.accept('./.temp/siteData', () => { - if (siteData.base !== prevBase) { - window.alert( - `[vuepress] Site base has changed. ` + - `Please restart dev server to ensure correct asset paths.` - ) - } - }) -} - -Vue.config.productionTip = false -Vue.use(Router) -// mixin for exposing $site and $page -Vue.mixin(dataMixin(siteData)) -// component for rendering markdown content and setting title etc. -Vue.component('Content', Content) -Vue.component('RightMenu', RightMenu) -Vue.component('Border', Border) -Vue.component('BorderContent', BorderContent) -Vue.component('Tag', Tag) -Vue.component('Tip', Tip) -Vue.component('ImgWrapper', ImgWrapper) -Vue.component('BorderCenter', BorderCenter) -Vue.component('OutboundLink', OutboundLink) -Vue.component('Badge', () => import('./components/Badge.vue')) -// component for client-only content -Vue.component('ClientOnly', ClientOnly) -Vue.component('MyButton', () => import('./components/MyButton.vue')) -Vue.component('H2Icon', () => import('./components/H2Icon.vue')) -Vue.component('Blue', () => import('./components/Blue.vue')) - -// global helper for adding base path to absolute urls -Vue.prototype.$withBase = function (path) { - const base = this.$site.base - if (path.charAt(0) === '/') { - return base + path.slice(1) - } else { - return path - } -} - -export function createApp () { - const router = new Router({ - base: siteData.base, - mode: 'history', - fallback: false, - routes, - scrollBehavior: (to, from, saved) => { - if (saved) { - return saved - } else if (to.hash) { - if (store.disableScrollBehavior) { - return false - } - return { - selector: to.hash - } - } else { - return { x: 0, y: 0 } - } - } - }) - - // redirect /foo to /foo/ - router.beforeEach((to, from, next) => { - // 不直接跳转到首页的话,左上角的logo会加载不出来 - // if (to.path === '/') { - // setTimeout(function () { - // router.push({ - // path: '/start.html' - // }) - // }, 20) - // } - if (!/(\/|\.html)$/.test(to.path)) { - next( - Object.assign({}, to, { - path: to.path + '/' - }) - ) - } else { - next() - } - }) - - const options = {} - - themeEnhanceApp({ Vue, options, router, siteData }) - enhanceApp({ Vue, options, router, siteData }) - - const app = new Vue( - Object.assign(options, { - router, - render (h) { - return h('div', { attrs: { id: 'app' }}, [ - h('router-view', { ref: 'layout' }) - ]) - } - }) - ) - - return { app, router } -} diff --git a/lib/app/clientEntry.js b/lib/app/clientEntry.js deleted file mode 100644 index 7b634e7..0000000 --- a/lib/app/clientEntry.js +++ /dev/null @@ -1,74 +0,0 @@ -/* global BASE_URL, GA_ID, ga, SW_ENABLED, VUEPRESS_VERSION, LAST_COMMIT_HASH*/ - -import { createApp } from './app' -import SWUpdateEvent from './SWUpdateEvent' -import { register } from 'register-service-worker' - -const { app, router } = createApp() - -window.__VUEPRESS_VERSION__ = { - version: VUEPRESS_VERSION, - hash: LAST_COMMIT_HASH -} - -// Google analytics integration -if (process.env.NODE_ENV === 'production' && GA_ID) { - (function (i, s, o, g, r, a, m) { - i['GoogleAnalyticsObject'] = r - i[r] = i[r] || function () { - (i[r].q = i[r].q || []).push(arguments) - } - i[r].l = 1 * new Date() - a = s.createElement(o) - m = s.getElementsByTagName(o)[0] - a.async = 1 - a.src = g - m.parentNode.insertBefore(a, m) - })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga') - - ga('create', GA_ID, 'auto') - ga('send', 'pageview') - - router.afterEach(function (to) { - ga('set', 'page', to.fullPath) - ga('send', 'pageview') - }) -} - -router.onReady(() => { - app.$mount('#app') - - // Register service worker - if (process.env.NODE_ENV === 'production' && - SW_ENABLED && - window.location.protocol === 'https:') { - register(`${BASE_URL}service-worker.js`, { - ready () { - console.log('[vuepress:sw] Service worker is active.') - app.$refs.layout.$emit('sw-ready') - }, - cached (registration) { - console.log('[vuepress:sw] Content has been cached for offline use.') - app.$refs.layout.$emit('sw-cached', new SWUpdateEvent(registration)) - }, - updated (registration) { - console.log('[vuepress:sw] Content updated.') - app.$refs.layout.$emit('sw-updated', new SWUpdateEvent(registration)) - }, - offline () { - console.log('[vuepress:sw] No internet connection found. App is running in offline mode.') - app.$refs.layout.$emit('sw-offline') - }, - error (err) { - console.error('[vuepress:sw] Error during service worker registration:', err) - app.$refs.layout.$emit('sw-error', err) - if (GA_ID) { - ga('send', 'exception', { - exDescription: err.message, - exFatal: false - }) - } - } - }) - } -}) diff --git a/lib/app/components/Badge.vue b/lib/app/components/Badge.vue deleted file mode 100644 index 17e6ba6..0000000 --- a/lib/app/components/Badge.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - diff --git a/lib/app/components/Blue.vue b/lib/app/components/Blue.vue deleted file mode 100644 index 5db8126..0000000 --- a/lib/app/components/Blue.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/lib/app/components/Border.vue b/lib/app/components/Border.vue deleted file mode 100644 index 4fa80c4..0000000 --- a/lib/app/components/Border.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/lib/app/components/BorderCenter.vue b/lib/app/components/BorderCenter.vue deleted file mode 100644 index a08a674..0000000 --- a/lib/app/components/BorderCenter.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/lib/app/components/BorderContent.vue b/lib/app/components/BorderContent.vue deleted file mode 100644 index d437656..0000000 --- a/lib/app/components/BorderContent.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/lib/app/components/ClientOnly.js b/lib/app/components/ClientOnly.js deleted file mode 100644 index c786d1a..0000000 --- a/lib/app/components/ClientOnly.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - functional: true, - render (h, { parent, children }) { - if (parent._isMounted) { - return children - } else { - parent.$once('hook:mounted', () => { - parent.$forceUpdate() - }) - } - } -} diff --git a/lib/app/components/Content.js b/lib/app/components/Content.js deleted file mode 100644 index 4662819..0000000 --- a/lib/app/components/Content.js +++ /dev/null @@ -1,17 +0,0 @@ -export default { - functional: true, - - props: { - custom: { - type: Boolean, - default: true - } - }, - - render (h, { parent, props, data }) { - return h(parent.$page.key, { - class: [props.custom ? 'custom' : '', data.class, data.staticClass], - style: data.style - }) - } -} diff --git a/lib/app/components/H2Icon.vue b/lib/app/components/H2Icon.vue deleted file mode 100644 index b7ec07a..0000000 --- a/lib/app/components/H2Icon.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/lib/app/components/ImgWrapper.vue b/lib/app/components/ImgWrapper.vue deleted file mode 100644 index 70a32f1..0000000 --- a/lib/app/components/ImgWrapper.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/lib/app/components/MyButton.vue b/lib/app/components/MyButton.vue deleted file mode 100644 index 1d8ff8a..0000000 --- a/lib/app/components/MyButton.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/lib/app/components/OutboundLink.vue b/lib/app/components/OutboundLink.vue deleted file mode 100644 index 3ccae27..0000000 --- a/lib/app/components/OutboundLink.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/lib/app/components/RightMenu.vue b/lib/app/components/RightMenu.vue deleted file mode 100644 index d38a63f..0000000 --- a/lib/app/components/RightMenu.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - diff --git a/lib/app/components/Tag.vue b/lib/app/components/Tag.vue deleted file mode 100644 index 10191f8..0000000 --- a/lib/app/components/Tag.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/lib/app/components/Tip.vue b/lib/app/components/Tip.vue deleted file mode 100644 index 5d6b498..0000000 --- a/lib/app/components/Tip.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/lib/app/dataMixin.js b/lib/app/dataMixin.js deleted file mode 100644 index fd003d9..0000000 --- a/lib/app/dataMixin.js +++ /dev/null @@ -1,90 +0,0 @@ -import Vue from 'vue' -import { findPageForPath } from './util' - -export default function dataMixin (siteData) { - prepare(siteData) - const store = new Vue({ - data: { siteData } - }) - - if (module.hot) { - module.hot.accept('./.temp/siteData', () => { - prepare(siteData) - store.siteData = siteData - }) - } - - return { - computed: { - $site () { - return store.siteData - }, - $localeConfig () { - const { locales = {}} = this.$site - let targetLang - let defaultLang - for (const path in locales) { - if (path === '/') { - defaultLang = locales[path] - } else if (this.$page.path.indexOf(path) === 0) { - targetLang = locales[path] - } - } - return targetLang || defaultLang || {} - }, - $siteTitle () { - return this.$localeConfig.title || this.$site.title || '' - }, - $title () { - const page = this.$page - const siteTitle = this.$siteTitle - const selfTitle = page.frontmatter.home ? null : ( - page.frontmatter.title || // explicit title - page.title // inferred title - ) - return siteTitle - ? selfTitle - ? (selfTitle + ' | ' + siteTitle) - : siteTitle - : selfTitle || 'VuePress' - }, - $description () { - // #565 hoist description from meta - if (this.$page.frontmatter.meta) { - const descriptionMeta = this.$page.frontmatter.meta.filter(item => item.name === 'description')[0] - if (descriptionMeta) return descriptionMeta.content - } - return this.$page.frontmatter.description || this.$localeConfig.description || this.$site.description || '' - }, - $lang () { - return this.$page.frontmatter.lang || this.$localeConfig.lang || 'en-US' - }, - $localePath () { - return this.$localeConfig.path || '/' - }, - $themeLocaleConfig () { - return (this.$site.themeConfig.locales || {})[this.$localePath] || {} - }, - $page () { - return findPageForPath( - this.$site.pages, - this.$route.path - ) - } - } - } -} - -function prepare (siteData) { - siteData.pages.forEach(page => { - if (!page.frontmatter) { - page.frontmatter = {} - } - }) - if (siteData.locales) { - Object.keys(siteData.locales).forEach(path => { - siteData.locales[path].path = path - }) - } - Object.freeze(siteData) -} diff --git a/lib/app/icons/icon1.png b/lib/app/icons/icon1.png deleted file mode 100644 index c996e08..0000000 Binary files a/lib/app/icons/icon1.png and /dev/null differ diff --git a/lib/app/icons/icon2.png b/lib/app/icons/icon2.png deleted file mode 100644 index 86cdfca..0000000 Binary files a/lib/app/icons/icon2.png and /dev/null differ diff --git a/lib/app/icons/icon3.png b/lib/app/icons/icon3.png deleted file mode 100644 index e0b39d9..0000000 Binary files a/lib/app/icons/icon3.png and /dev/null differ diff --git a/lib/app/icons/icon4.png b/lib/app/icons/icon4.png deleted file mode 100644 index 1d29a88..0000000 Binary files a/lib/app/icons/icon4.png and /dev/null differ diff --git a/lib/app/icons/retract.png b/lib/app/icons/retract.png deleted file mode 100644 index 8c02a43..0000000 Binary files a/lib/app/icons/retract.png and /dev/null differ diff --git a/lib/app/icons/spread.png b/lib/app/icons/spread.png deleted file mode 100644 index af08318..0000000 Binary files a/lib/app/icons/spread.png and /dev/null differ diff --git a/lib/app/icons/tip.png b/lib/app/icons/tip.png deleted file mode 100644 index 7a315f8..0000000 Binary files a/lib/app/icons/tip.png and /dev/null differ diff --git a/lib/app/index.dev.html b/lib/app/index.dev.html deleted file mode 100644 index c8e197b..0000000 --- a/lib/app/index.dev.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - -
                                        - - diff --git a/lib/app/index.ssr.html b/lib/app/index.ssr.html deleted file mode 100644 index 55d4f9e..0000000 --- a/lib/app/index.ssr.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - {{ title }} - - - {{{ userHeadTags }}} - {{{ pageMeta }}} - {{{ renderResourceHints() }}} - {{{ renderStyles() }}} - - - - {{{ renderScripts() }}} - - diff --git a/lib/app/root-mixins/activeHeaderLinks.js b/lib/app/root-mixins/activeHeaderLinks.js deleted file mode 100644 index 6cad69d..0000000 --- a/lib/app/root-mixins/activeHeaderLinks.js +++ /dev/null @@ -1,47 +0,0 @@ -import store from '@app/store' -import throttle from 'lodash.throttle' - -export default { - mounted () { - window.addEventListener('scroll', this.onScroll) - }, - methods: { - onScroll: throttle(function () { - this.setActiveHash() - }, 300), - setActiveHash () { - const sidebarLinks = [].slice.call(document.querySelectorAll('.sidebar-link')) - const anchors = [].slice.call(document.querySelectorAll('.header-anchor')) - .filter(anchor => sidebarLinks.some(sidebarLink => sidebarLink.hash === anchor.hash)) - - const scrollTop = Math.max( - window.pageYOffset, - document.documentElement.scrollTop, - document.body.scrollTop - ) - - for (let i = 0; i < anchors.length; i++) { - const anchor = anchors[i] - const nextAnchor = anchors[i + 1] - - const isActive = i === 0 && scrollTop === 0 || - (scrollTop >= anchor.parentElement.offsetTop + 10 && - (!nextAnchor || scrollTop < nextAnchor.parentElement.offsetTop - 10)) - - if (isActive && decodeURIComponent(this.$route.hash) !== decodeURIComponent(anchor.hash)) { - store.disableScrollBehavior = true - this.$router.replace(decodeURIComponent(anchor.hash), () => { - // execute after scrollBehavior handler. - this.$nextTick(() => { - store.disableScrollBehavior = false - }) - }) - return - } - } - } - }, - beforeDestroy () { - window.removeEventListener('scroll', this.onScroll) - } -} diff --git a/lib/app/root-mixins/index.js b/lib/app/root-mixins/index.js deleted file mode 100644 index fd966f3..0000000 --- a/lib/app/root-mixins/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import updateMeta from './updateMeta' -import activeHeaderLinks from '@activeHeaderLinks' - -export default [ - updateMeta, // required - activeHeaderLinks // optional -] diff --git a/lib/app/root-mixins/updateMeta.js b/lib/app/root-mixins/updateMeta.js deleted file mode 100644 index ff2703a..0000000 --- a/lib/app/root-mixins/updateMeta.js +++ /dev/null @@ -1,59 +0,0 @@ -export default { - created () { - if (this.$ssrContext) { - this.$ssrContext.title = this.$title - this.$ssrContext.lang = this.$lang - this.$ssrContext.description = this.$page.description || this.$description - } - }, - - mounted () { - // update title / meta tags - this.currentMetaTags = new Set() - - const updateMeta = () => { - document.title = this.$title - document.documentElement.lang = this.$lang - const userMeta = this.$page.frontmatter.meta || [] - const meta = userMeta.slice(0) - const useGlobalDescription = userMeta.filter(m => m.name === 'description').length === 0 - - // #665 Avoid duplicate description meta at runtime. - if (useGlobalDescription) { - meta.push({ name: 'description', content: this.$description }) - } - - // Including description meta coming from SSR. - const descriptionMetas = document.querySelectorAll('meta[name="description"]') - if (descriptionMetas.length) { - descriptionMetas.forEach(m => this.currentMetaTags.add(m)) - } - - this.currentMetaTags = new Set(updateMetaTags(meta, this.currentMetaTags)) - } - this.$watch('$page', updateMeta) - updateMeta() - }, - - beforeDestroy () { - updateMetaTags(null, this.currentMetaTags) - } -} - -function updateMetaTags (meta, current) { - if (current) { - [...current].forEach(c => { - document.head.removeChild(c) - }) - } - if (meta) { - return meta.map(m => { - const tag = document.createElement('meta') - Object.keys(m).forEach(key => { - tag.setAttribute(key, m[key]) - }) - document.head.appendChild(tag) - return tag - }) - } -} diff --git a/lib/app/serverEntry.js b/lib/app/serverEntry.js deleted file mode 100644 index 715fc95..0000000 --- a/lib/app/serverEntry.js +++ /dev/null @@ -1,14 +0,0 @@ -import { createApp } from './app' - -export default context => new Promise((resolve, reject) => { - const { app, router } = createApp() - const { url } = context - const { fullPath } = router.resolve(url).route - - if (fullPath !== url) { - return reject({ url: fullPath }) - } - - router.push(url) - router.onReady(() => resolve(app)) -}) diff --git a/lib/app/store.js b/lib/app/store.js deleted file mode 100644 index 115fe0b..0000000 --- a/lib/app/store.js +++ /dev/null @@ -1,7 +0,0 @@ -// It is not yet time to use Vuex to manage the global state -// singleton object as a global store. -const state = { - disableScrollBehavior: false -} - -export default state diff --git a/lib/app/util.js b/lib/app/util.js deleted file mode 100644 index c111722..0000000 --- a/lib/app/util.js +++ /dev/null @@ -1,19 +0,0 @@ -export function injectMixins (options, mixins) { - if (!options.mixins) { - options.mixins = [] - } - options.mixins.push(...mixins) -} - -export function findPageForPath (pages, path) { - for (let i = 0; i < pages.length; i++) { - const page = pages[i] - if (page.path === path) { - return page - } - } - return { - path: '', - frontmatter: {} - } -} diff --git a/lib/build.js b/lib/build.js deleted file mode 100644 index 3900cf8..0000000 --- a/lib/build.js +++ /dev/null @@ -1,200 +0,0 @@ -module.exports = async function build (sourceDir, cliOptions = {}) { - process.env.NODE_ENV = 'production' - - const fs = require('fs-extra') - const path = require('path') - const chalk = require('chalk') - const webpack = require('webpack') - const readline = require('readline') - const escape = require('escape-html') - - const logger = require('./util/logger') - const prepare = require('./prepare') - const createClientConfig = require('./webpack/createClientConfig') - const createServerConfig = require('./webpack/createServerConfig') - const { createBundleRenderer } = require('vue-server-renderer') - const { normalizeHeadTag, applyUserWebpackConfig } = require('./util') - - logger.wait('\nExtracting site metadata...') - const options = await prepare(sourceDir) - if (cliOptions.outDir) { - options.outDir = cliOptions.outDir - } - - const { outDir } = options - if (path.resolve() === outDir) { - return console.error(logger.error(chalk.red('Unexpected option: outDir cannot be set to the current working directory.\n'), false)) - } - await fs.remove(outDir) - - let clientConfig = createClientConfig(options, cliOptions).toConfig() - let serverConfig = createServerConfig(options, cliOptions).toConfig() - - // apply user config... - const userConfig = options.siteConfig.configureWebpack - if (userConfig) { - clientConfig = applyUserWebpackConfig(userConfig, clientConfig, false) - serverConfig = applyUserWebpackConfig(userConfig, serverConfig, true) - } - - // compile! - const stats = await compile([clientConfig, serverConfig]) - - const serverBundle = require(path.resolve(outDir, 'manifest/server.json')) - const clientManifest = require(path.resolve(outDir, 'manifest/client.json')) - - // remove manifests after loading them. - await fs.remove(path.resolve(outDir, 'manifest')) - - // find and remove empty style chunk caused by - // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/85 - // TODO remove when it's fixed - await workaroundEmptyStyleChunk() - - // create server renderer using built manifests - const renderer = createBundleRenderer(serverBundle, { - clientManifest, - runInNewContext: false, - inject: false, - shouldPrefetch: options.siteConfig.shouldPrefetch || (() => true), - template: await fs.readFile(path.resolve(__dirname, 'app/index.ssr.html'), 'utf-8') - }) - - // pre-render head tags from user config - const userHeadTags = (options.siteConfig.head || []) - .map(renderHeadTag) - .join('\n ') - - // render pages - logger.wait('Rendering static HTML...') - for (const page of options.siteData.pages) { - await renderPage(page) - } - - // if the user does not have a custom 404.md, generate the theme's default - if (!options.siteData.pages.some(p => p.path === '/404.html')) { - await renderPage({ path: '/404.html' }) - } - - readline.clearLine(process.stdout, 0) - readline.cursorTo(process.stdout, 0) - - if (options.siteConfig.serviceWorker) { - logger.wait('\nGenerating service worker...') - const wbb = require('workbox-build') - await wbb.generateSW({ - swDest: path.resolve(outDir, 'service-worker.js'), - globDirectory: outDir, - globPatterns: ['**\/*.{js,css,html,png,jpg,jpeg,gif,svg,woff,woff2,eot,ttf,otf}'] - }) - await fs.writeFile( - path.resolve(outDir, 'service-worker.js'), - await fs.readFile(path.resolve(__dirname, 'service-worker/skip-waiting.js'), 'utf8'), - { flag: 'a' } - ) - } - - // DONE. - const relativeDir = path.relative(process.cwd(), outDir) - logger.success(`\n${chalk.green('Success!')} Generated static files in ${chalk.cyan(relativeDir)}.\n`) - - // --- helpers --- - - function compile (config) { - return new Promise((resolve, reject) => { - webpack(config, (err, stats) => { - if (err) { - return reject(err) - } - if (stats.hasErrors()) { - stats.toJson().errors.forEach(err => { - console.error(err) - }) - reject(new Error(`Failed to compile with errors.`)) - return - } - if (cliOptions.debug && stats.hasWarnings()) { - stats.toJson().warnings.forEach(warning => { - console.warn(warning) - }) - } - resolve(stats.toJson({ modules: false })) - }) - }) - } - - function renderHeadTag (tag) { - const { tagName, attributes, innerHTML, closeTag } = normalizeHeadTag(tag) - return `<${tagName}${renderAttrs(attributes)}>${innerHTML}${closeTag ? `` : ``}` - } - - function renderAttrs (attrs = {}) { - const keys = Object.keys(attrs) - if (keys.length) { - return ' ' + keys.map(name => `${name}="${escape(attrs[name])}"`).join(' ') - } else { - return '' - } - } - - async function renderPage (page) { - const pagePath = page.path - readline.clearLine(process.stdout, 0) - readline.cursorTo(process.stdout, 0) - process.stdout.write(`Rendering page: ${pagePath}`) - - // #565 Avoid duplicate description meta at SSR. - const meta = (page.frontmatter && page.frontmatter.meta || []).filter(item => item.name !== 'description') - const pageMeta = renderPageMeta(meta) - - const context = { - url: pagePath, - userHeadTags, - pageMeta, - title: 'VuePress', - lang: 'zh-CN', - description: '' - } - - let html - try { - html = await renderer.renderToString(context) - } catch (e) { - console.error(logger.error(chalk.red(`Error rendering ${pagePath}:`), false)) - throw e - } - const filename = decodeURIComponent(pagePath.replace(/\/$/, '/index.html').replace(/^\//, '')) - const filePath = path.resolve(outDir, filename) - await fs.ensureDir(path.dirname(filePath)) - await fs.writeFile(filePath, html) - } - - function renderPageMeta (meta) { - if (!meta) return '' - return meta.map(m => { - let res = ` { - res += ` ${key}="${escape(m[key])}"` - }) - return res + `>` - }).join('') - } - - async function workaroundEmptyStyleChunk () { - const styleChunk = stats.children[0].assets.find(a => { - return /styles\.\w{8}\.js$/.test(a.name) - }) - if (!styleChunk) return - const styleChunkPath = path.resolve(outDir, styleChunk.name) - const styleChunkContent = await fs.readFile(styleChunkPath, 'utf-8') - await fs.remove(styleChunkPath) - // prepend it to app.js. - // this is necessary for the webpack runtime to work properly. - const appChunk = stats.children[0].assets.find(a => { - return /app\.\w{8}\.js$/.test(a.name) - }) - const appChunkPath = path.resolve(outDir, appChunk.name) - const appChunkContent = await fs.readFile(appChunkPath, 'utf-8') - await fs.writeFile(appChunkPath, styleChunkContent + appChunkContent) - } -} diff --git a/lib/default-theme/AlgoliaSearchBox.vue b/lib/default-theme/AlgoliaSearchBox.vue deleted file mode 100644 index 0334ae0..0000000 --- a/lib/default-theme/AlgoliaSearchBox.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - diff --git a/lib/default-theme/Comments.vue b/lib/default-theme/Comments.vue deleted file mode 100644 index a4b2d5b..0000000 --- a/lib/default-theme/Comments.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - diff --git a/lib/default-theme/DropdownLink.vue b/lib/default-theme/DropdownLink.vue deleted file mode 100644 index cc77d7c..0000000 --- a/lib/default-theme/DropdownLink.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - - - diff --git a/lib/default-theme/DropdownTransition.vue b/lib/default-theme/DropdownTransition.vue deleted file mode 100644 index 8c711a1..0000000 --- a/lib/default-theme/DropdownTransition.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/lib/default-theme/Home.vue b/lib/default-theme/Home.vue deleted file mode 100644 index 69ac0e1..0000000 --- a/lib/default-theme/Home.vue +++ /dev/null @@ -1,161 +0,0 @@ - - - - - diff --git a/lib/default-theme/Layout.vue b/lib/default-theme/Layout.vue deleted file mode 100644 index e709c5a..0000000 --- a/lib/default-theme/Layout.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - diff --git a/lib/default-theme/NavLink.vue b/lib/default-theme/NavLink.vue deleted file mode 100644 index d9fa488..0000000 --- a/lib/default-theme/NavLink.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - diff --git a/lib/default-theme/NavLinks.vue b/lib/default-theme/NavLinks.vue deleted file mode 100644 index a88cd69..0000000 --- a/lib/default-theme/NavLinks.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - - - diff --git a/lib/default-theme/Navbar.vue b/lib/default-theme/Navbar.vue deleted file mode 100644 index 7b95a41..0000000 --- a/lib/default-theme/Navbar.vue +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - diff --git a/lib/default-theme/NotFound.vue b/lib/default-theme/NotFound.vue deleted file mode 100644 index 6aefe79..0000000 --- a/lib/default-theme/NotFound.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/lib/default-theme/Page.vue b/lib/default-theme/Page.vue deleted file mode 100644 index 4f4bd64..0000000 --- a/lib/default-theme/Page.vue +++ /dev/null @@ -1,233 +0,0 @@ - - - - - diff --git a/lib/default-theme/SWUpdatePopup.vue b/lib/default-theme/SWUpdatePopup.vue deleted file mode 100644 index b224db3..0000000 --- a/lib/default-theme/SWUpdatePopup.vue +++ /dev/null @@ -1,85 +0,0 @@ - - - - - diff --git a/lib/default-theme/SearchBox.vue b/lib/default-theme/SearchBox.vue deleted file mode 100644 index 6d7c458..0000000 --- a/lib/default-theme/SearchBox.vue +++ /dev/null @@ -1,233 +0,0 @@ - - - - - diff --git a/lib/default-theme/Sidebar.vue b/lib/default-theme/Sidebar.vue deleted file mode 100644 index 49ee635..0000000 --- a/lib/default-theme/Sidebar.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/lib/default-theme/SidebarButton.vue b/lib/default-theme/SidebarButton.vue deleted file mode 100644 index a6164ee..0000000 --- a/lib/default-theme/SidebarButton.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/lib/default-theme/SidebarGroup.vue b/lib/default-theme/SidebarGroup.vue deleted file mode 100644 index 12c94b8..0000000 --- a/lib/default-theme/SidebarGroup.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/lib/default-theme/SidebarLink.vue b/lib/default-theme/SidebarLink.vue deleted file mode 100644 index d968a5f..0000000 --- a/lib/default-theme/SidebarLink.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - diff --git a/lib/default-theme/bottom-logo.png b/lib/default-theme/bottom-logo.png deleted file mode 100644 index 71f5b11..0000000 Binary files a/lib/default-theme/bottom-logo.png and /dev/null differ diff --git a/lib/default-theme/styles/arrow.styl b/lib/default-theme/styles/arrow.styl deleted file mode 100644 index 68bbd53..0000000 --- a/lib/default-theme/styles/arrow.styl +++ /dev/null @@ -1,32 +0,0 @@ -@require './config' -.arrow - display inline-block - width 6px - height 6px - &.up - border-left 4px solid transparent - border-right 4px solid transparent - border-bottom 6px solid $arrowBgColor - &.down - border-top 1px solid #3683D6 - border-right 1px solid #3683D6 - transition all 0.3s - transform rotate(-45deg) - margin-bottom -2px - margin-left 10px - position absolute - left 85% - top 45% - &.right - border-top 1px solid #656565 - border-right 1px solid #656565 - transform rotate(135deg) - margin-left 10px - transition all 0.3s - position absolute - left 85% - top 35% - &.left - border-top 4px solid transparent - border-bottom 4px solid transparent - border-right 6px solid $arrowBgColor diff --git a/lib/default-theme/styles/code.styl b/lib/default-theme/styles/code.styl deleted file mode 100644 index 6b2f39d..0000000 --- a/lib/default-theme/styles/code.styl +++ /dev/null @@ -1,124 +0,0 @@ -/* -@require './config' -.content - code - color #3683D6 - padding 0.15rem 0.5rem - margin 0 - background-color #E4F1FF - border-radius 4px -.content - pre, pre[class*='language-'] - line-height 1.4 - padding 1.25rem 1.5rem - margin 40px 0 - background-color $codeBgColor - border-radius 4px - overflow auto - code - // color #3683D6 - color #333 - padding 0 - background-color transparent - border-radius 4px -div[class*='language-'] - position relative - // background-color #F5F7F8 - background-color #E9F0F8 - border-radius 4px - .highlight-lines - user-select none - padding-top 1.3rem - position absolute - top 0 - left 0 - width 100% - line-height 1.4 - .highlighted - background-color rgba(206, 151, 151, 66%) - pre, pre[class*='language-'] - background transparent - position relative - z-index 1 - &::before - position absolute - z-index 3 - top 1.3em - right 2em - font-size 0.75rem - font-weight 600 - color rgba(219,73,132, 0.8) - &:not(.line-numbers-mode) - .line-numbers-wrapper - display none - &.line-numbers-mode - .highlight-lines .highlighted - position relative - &:before - content ' ' - position absolute - z-index 3 - left 0 - top 0 - display block - width $lineNumbersWrapperWidth - height 100% - background-color rgba(0, 0, 0, 66%) - pre - padding-left ($lineNumbersWrapperWidth + 1) rem - vertical-align middle - .line-numbers-wrapper - position absolute - top 0 - width $lineNumbersWrapperWidth - text-align center - color rgba(255, 255, 255, 0.3) - padding 1.25rem 0 - line-height 1.4 - br - user-select none - .line-number - position relative - z-index 4 - user-select none - font-size 0.85em - &::after - content '' - position absolute - z-index 2 - top 0 - left 0 - width $lineNumbersWrapperWidth - height 100% - border-radius 6px 0 0 6px - border-right 1px solid rgba(0, 0, 0, 66%) - background-color $codeBgColor -for lang in $codeLang - div{'[class~="language-' + lang + '"]'} - &:before - content '' + lang -div[class~='language-javascript'] - &:before - content 'js' -div[class~='language-typescript'] - &:before - content 'ts' -div[class~='language-markup'] - &:before - content 'html' -div[class~='language-markdown'] - &:before - content 'md' -div[class~='language-json']:before - content 'json' -div[class~='language-ruby']:before - content 'rb' -div[class~='language-python']:before - content 'py' -div[class~='language-bash']:before - content 'sh' -div[class~='language-wxss']:before - content 'wxss' -div[class~='language-wxml']:before - content 'wxml' - */ \ No newline at end of file diff --git a/lib/default-theme/styles/config.styl b/lib/default-theme/styles/config.styl deleted file mode 100644 index 5668cfe..0000000 --- a/lib/default-theme/styles/config.styl +++ /dev/null @@ -1,28 +0,0 @@ -// colors -$accentColor = #3683d6 -$textColor = #2c3e50 -$borderColor = #eaecef -$codeBgColor = #282c34 -$arrowBgColor = #ccc -// layout -$navbarHeight = 4rem -$sidebarWidth = 250px -$contentWidth = 740px -// responsive breakpoints -$MQNarrow = 1060px -$MQMobile = 920px -$MQMobileNarrow = 419px -// code -$lineNumbersWrapperWidth = 3.5rem -$codeLang = js ts html md vue css sass scss less stylus go java c sh yaml py -@import 'https://github.com/~@temp/override.styl' - -::-webkit-scrollbar-track { border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0); } -::-webkit-scrollbar-thumb { background-color: rgba(0,0,0,0.05); border-radius: 10px; -webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,.1); } -::-webkit-scrollbar-thumb { background-color: rgba(0,0,0,0.2); border-radius: 10px; -webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,.1); } -//::-webkit-scrollbar { width: 16px; height: 16px; } -::-webkit-scrollbar-track, -::-webkit-scrollbar-thumb { border-radius: 999px; border: 5px solid transparent; } -::-webkit-scrollbar-track { box-shadow: 1px 1px 5px rgba(0,0,0,.2) inset; } -::-webkit-scrollbar-thumb { min-height: 20px; background-clip: content-box; box-shadow: 0 0 0 5px rgba(0,0,0,.2) inset; } -::-webkit-scrollbar-corner { background: transparent; } \ No newline at end of file diff --git a/lib/default-theme/styles/custom-blocks.styl b/lib/default-theme/styles/custom-blocks.styl deleted file mode 100644 index 89c8d4d..0000000 --- a/lib/default-theme/styles/custom-blocks.styl +++ /dev/null @@ -1,28 +0,0 @@ -.custom-block - .custom-block-title - font-weight 600 - margin-bottom -0.4rem - &.tip, &.warning, &.danger - padding 0.1rem 1.5rem - border-left-width 0.5rem - border-left-style solid - margin 1rem 0 - &.tip - background-color #EFF7FF - border-color #3683D6 - &.warning - background-color rgba(255, 229, 100, 0.3) - border-color darken(#ffe564, 35%) - color darken(#ffe564, 70%) - .custom-block-title - color darken(#ffe564, 50%) - a - color $textColor - &.danger - background-color #ffe6e6 - border-color darken(red, 20%) - color darken(red, 70%) - .custom-block-title - color darken(red, 40%) - a - color $textColor diff --git a/lib/default-theme/styles/mobile.styl b/lib/default-theme/styles/mobile.styl deleted file mode 100644 index b35e59c..0000000 --- a/lib/default-theme/styles/mobile.styl +++ /dev/null @@ -1,37 +0,0 @@ -@require './config' - -$mobileSidebarWidth = $sidebarWidth * 0.82 - -// narrow desktop / iPad -@media (max-width: $MQNarrow) - .sidebar - font-size 15px - width $mobileSidebarWidth - .page - padding-left $mobileSidebarWidth - -// wide mobile -@media (max-width: $MQMobile) - .sidebar - top 0 - padding-top $navbarHeight - transform translateX(-100%) - transition transform .2s ease - .page - padding-left 0 - .theme-container - &.sidebar-open - .sidebar - transform translateX(0) - &.no-navbar - .sidebar - padding-top: 0 - -// narrow mobile -@media (max-width: $MQMobileNarrow) - h1 - font-size 1.9rem - .content - div[class*="language-"] - margin 0.85rem -1.5rem - border-radius 0 diff --git a/lib/default-theme/styles/nprogress.styl b/lib/default-theme/styles/nprogress.styl deleted file mode 100644 index f186a67..0000000 --- a/lib/default-theme/styles/nprogress.styl +++ /dev/null @@ -1,48 +0,0 @@ -#nprogress - pointer-events none - .bar - background $accentColor - position fixed - z-index 1031 - top 0 - left 0 - width 100% - height 2px - .peg - display block - position absolute - right 0px - width 100px - height 100% - box-shadow 0 0 10px $accentColor, 0 0 5px $accentColor - opacity 1.0 - transform rotate(3deg) translate(0px, -4px) - .spinner - display block - position fixed - z-index 1031 - top 15px - right 15px - .spinner-icon - width 18px - height 18px - box-sizing border-box - border solid 2px transparent - border-top-color $accentColor - border-left-color $accentColor - border-radius 50% - animation nprogress-spinner 400ms linear infinite - -.nprogress-custom-parent - overflow hidden - position relative - -.nprogress-custom-parent #nprogress .spinner, -.nprogress-custom-parent #nprogress .bar - position absolute - -@keyframes nprogress-spinner - 0% - transform rotate(0deg) - 100% - transform rotate(360deg) diff --git a/lib/default-theme/styles/theme.styl b/lib/default-theme/styles/theme.styl deleted file mode 100644 index 0232de2..0000000 --- a/lib/default-theme/styles/theme.styl +++ /dev/null @@ -1,188 +0,0 @@ -@require './config' -@require './nprogress' -@require './code' -@require './custom-blocks' -@require './arrow' -@require './wrapper' -@require './toc' -html, body - padding 0 - margin 0 -body - font-family Avenir, 'Chinese Quote', PingFang SC, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif - -webkit-font-smoothing antialiased - -moz-osx-font-smoothing grayscale - font-size 14px - font-weight Regular - color $textColor -h1 - font-size 28px !important -h2 - font-size 24px !important -h3 - font-size 20px !important -h4 - font-size 16px !important -.page - padding-left $sidebarWidth -.navbar - position fixed - z-index 20 - top 0 - left 0 - right 0 - height $navbarHeight - background-color #fff - box-sizing border-box - border-bottom 1px solid $borderColor -.sidebar-mask - position fixed - z-index 9 - top 0 - left 0 - width 100vw - height 100vh - display none -.sidebar - font-size 15px - background-color #fff - width $sidebarWidth - position fixed - z-index 10 - margin 0 - top $navbarHeight - left 0 - bottom 0 - box-sizing border-box - border-right 1px solid $borderColor - overflow-y auto -.content:not(.custom) - margin 0 auto - padding 2rem 2.5rem - @extend $wrapper - > *:first-child - margin-top $navbarHeight - a:hover - text-decoration underline - p.demo - padding 1rem 1.5rem - border 1px solid #ddd - border-radius 4px - img - max-width 100% -.content.custom - padding 0 - margin 0 - img - max-width 100% -a - font-weight 500 - color $accentColor - text-decoration none -p a code - font-weight 400 - color $accentColor -kbd - background #eee - border solid 0.15rem #ddd - border-bottom solid 0.25rem #ddd - border-radius 0.15rem - padding 0 0.15em -blockquote - font-size 1rem - color #999 - border-left 0.25rem solid #dfe2e5 - margin-left 0 - padding-left 1rem -ul, ol - padding-left 1.2em -ul > li > ul - color #8C98AE -strong - font-weight 600 -h1, h2, h3, h4, h5, h6 - font-weight 600 - line-height 1.25 - .content:not(.custom) > & - margin-top 0.5rem - $navbarHeight - padding-top ($navbarHeight + 1rem) - margin-bottom 0 - &:first-child - margin-top -1.5rem - margin-bottom 1rem - + p, + pre, + .custom-block - margin-top 2rem - &:hover .header-anchor - opacity 1 -h1 - font-size 2.2rem -h2 - font-size 1.65rem - padding-bottom 0.3rem -h3 - font-size 1.35rem -a.header-anchor - font-size 0.85em - float left - margin-left -0.87em - padding-right 0.23em - margin-top 0.125em - opacity 0 - &:hover - text-decoration none -code, kbd, .line-number - font-family source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace -p, ul, ol - line-height 2 -hr - border 0 - border-top 1px solid $borderColor -table - border-collapse collapse - margin 40px 0 - display table - width 100% - max-width 100% - color #45526b - border 1px solid #DEE2E6 !important -thead - background #E8F0F9 - text-align left - tr - height 60px - th - padding-left 0.8rem -tr - &:nth-child(1) - border-bottom 1px solid transparent - &:nth-child(2n) - background-color #F8F9FA -td - border none - padding 0.6em 1em - height 30px -th:not(:last-child) - border none -td - color #596C8E -.custom-layout - padding-top $navbarHeight -.theme-container - &.sidebar-open - .sidebar-mask - display block - &.no-navbar - .content:not(.custom) > h1, h2, h3, h4, h5, h6 - margin-top 1.5rem - padding-top 0 - .sidebar - top 0 - .custom-layout - padding-top 0 -@media (min-width: ($MQMobile + 1px)) - .theme-container.no-sidebar - .sidebar - display none - .page - padding-left 0 -@require './mobile.styl' diff --git a/lib/default-theme/styles/toc.styl b/lib/default-theme/styles/toc.styl deleted file mode 100644 index d3e7106..0000000 --- a/lib/default-theme/styles/toc.styl +++ /dev/null @@ -1,3 +0,0 @@ -.table-of-contents - .badge - vertical-align middle diff --git a/lib/default-theme/styles/wrapper.styl b/lib/default-theme/styles/wrapper.styl deleted file mode 100644 index fb6ad96..0000000 --- a/lib/default-theme/styles/wrapper.styl +++ /dev/null @@ -1,8 +0,0 @@ -$wrapper - max-width 900px - margin 0 auto - padding 2rem 4rem - @media (max-width: $MQNarrow) - padding 2rem - @media (max-width: $MQMobileNarrow) - padding 1.5rem diff --git a/lib/default-theme/util.js b/lib/default-theme/util.js deleted file mode 100644 index dd21331..0000000 --- a/lib/default-theme/util.js +++ /dev/null @@ -1,217 +0,0 @@ -export const hashRE = /#.*$/ -export const extRE = /\.(md|html)$/ -export const endingSlashRE = /\/$/ -export const outboundRE = /^(https?:|mailto:|tel:)/ - -export function normalize (path) { - return decodeURI(path) - .replace(hashRE, '') - .replace(extRE, '') -} - -export function getHash (path) { - const match = path.match(hashRE) - if (match) { - return match[0] - } -} - -export function isExternal (path) { - return outboundRE.test(path) -} - -export function isMailto (path) { - return /^mailto:/.test(path) -} - -export function isTel (path) { - return /^tel:/.test(path) -} - -export function ensureExt (path) { - if (isExternal(path)) { - return path - } - const hashMatch = path.match(hashRE) - const hash = hashMatch ? hashMatch[0] : '' - const normalized = normalize(path) - - if (endingSlashRE.test(normalized)) { - return path - } - return normalized + '.html' + hash -} - -export function isActive (route, path) { - const routeHash = route.hash - const linkHash = getHash(path) - if (linkHash && routeHash !== linkHash) { - return false - } - const routePath = normalize(route.path) - const pagePath = normalize(path) - return routePath === pagePath -} - -export function resolvePage (pages, rawPath, base) { - if (base) { - rawPath = resolvePath(rawPath, base) - } - const path = normalize(rawPath) - for (let i = 0; i < pages.length; i++) { - if (normalize(pages[i].path) === path) { - return Object.assign({}, pages[i], { - type: 'page', - path: ensureExt(rawPath) - }) - } - } - console.error(`[vuepress] No matching page found for sidebar item "${rawPath}"`) - return {} -} - -function resolvePath (relative, base, append) { - const firstChar = relative.charAt(0) - if (firstChar === '/') { - return relative - } - - if (firstChar === '?' || firstChar === '#') { - return base + relative - } - - const stack = base.split('/') - - // remove trailing segment if: - // - not appending - // - appending to trailing slash (last segment is empty) - if (!append || !stack[stack.length - 1]) { - stack.pop() - } - - // resolve relative path - const segments = relative.replace(/^\//, '').split('/') - for (let i = 0; i < segments.length; i++) { - const segment = segments[i] - if (segment === '..') { - stack.pop() - } else if (segment !== '.') { - stack.push(segment) - } - } - - // ensure leading slash - if (stack[0] !== '') { - stack.unshift('') - } - - return stack.join('/') -} - -export function resolveSidebarItems (page, route, site, localePath) { - const { pages, themeConfig } = site - - const localeConfig = localePath && themeConfig.locales - ? themeConfig.locales[localePath] || themeConfig - : themeConfig - - const pageSidebarConfig = page.frontmatter.sidebar || localeConfig.sidebar || themeConfig.sidebar - if (pageSidebarConfig === 'auto') { - return resolveHeaders(page) - } - - const sidebarConfig = localeConfig.sidebar || themeConfig.sidebar - if (!sidebarConfig) { - return [] - } else { - const { base, config } = resolveMatchingConfig(route, sidebarConfig) - return config - ? config.map(item => resolveItem(item, pages, base)) - : [] - } -} - -function resolveHeaders (page) { - const headers = groupHeaders(page.headers || []) - return [{ - type: 'group', - collapsable: false, - title: page.title, - children: headers.map(h => ({ - type: 'auto', - title: h.title, - basePath: page.path, - path: page.path + '#' + h.slug, - children: h.children || [] - })) - }] -} - -export function groupHeaders (headers) { - // group h3s under h2 - headers = headers.map(h => Object.assign({}, h)) - let lastH2 - headers.forEach(h => { - if (h.level === 2) { - lastH2 = h - } else if (lastH2) { - (lastH2.children || (lastH2.children = [])).push(h) - } - }) - return headers.filter(h => h.level === 2) -} - -export function resolveNavLinkItem (linkItem) { - return Object.assign(linkItem, { - type: linkItem.items && linkItem.items.length ? 'links' : 'link' - }) -} - -export function resolveMatchingConfig (route, config) { - if (Array.isArray(config)) { - return { - base: '/', - config: config - } - } - for (const base in config) { - if (ensureEndingSlash(route.path).indexOf(base) === 0) { - return { - base, - config: config[base] - } - } - } - return {} -} - -function ensureEndingSlash (path) { - return /(\.html|\/)$/.test(path) - ? path - : path + '/' -} - -function resolveItem (item, pages, base, isNested) { - if (typeof item === 'string') { - return resolvePage(pages, item, base) - } else if (Array.isArray(item)) { - return Object.assign(resolvePage(pages, item[0], base), { - title: item[1] - }) - } else { - if (isNested) { - console.error( - '[vuepress] Nested sidebar groups are not supported. ' + - 'Consider using navbar + categories instead.' - ) - } - const children = item.children || [] - return { - type: 'group', - title: item.title, - children: children.map(child => resolveItem(child, pages, base, true)), - collapsable: item.collapsable !== false, - path: item.path - } - } -} diff --git a/lib/dev.js b/lib/dev.js deleted file mode 100644 index ba909d9..0000000 --- a/lib/dev.js +++ /dev/null @@ -1,149 +0,0 @@ -module.exports = async function dev (sourceDir, cliOptions = {}) { - const fs = require('fs') - const path = require('path') - const chalk = require('chalk') - const webpack = require('webpack') - const chokidar = require('chokidar') - const serve = require('webpack-serve') - const convert = require('koa-connect') - const mount = require('koa-mount') - const range = require('koa-range') - const serveStatic = require('koa-static') - const history = require('connect-history-api-fallback') - - const prepare = require('./prepare') - const logger = require('./util/logger') - const HeadPlugin = require('./webpack/HeadPlugin') - const DevLogPlugin = require('./webpack/DevLogPlugin') - const createClientConfig = require('./webpack/createClientConfig') - const { applyUserWebpackConfig } = require('./util') - const { frontmatterEmitter } = require('./webpack/markdownLoader') - - logger.wait('\nExtracting site metadata...') - const options = await prepare(sourceDir) - - // setup watchers to update options and dynamically generated files - const update = () => { - prepare(sourceDir).catch(err => { - console.error(logger.error(chalk.red(err.stack), false)) - }) - } - - // watch add/remove of files - const pagesWatcher = chokidar.watch([ - '**/*.md', - '.vuepress/components/**/*.vue' - ], { - cwd: sourceDir, - ignored: '.vuepress/**/*.md', - ignoreInitial: true - }) - pagesWatcher.on('add', update) - pagesWatcher.on('unlink', update) - pagesWatcher.on('addDir', update) - pagesWatcher.on('unlinkDir', update) - - // watch config file - const configWatcher = chokidar.watch([ - '.vuepress/config.js', - '.vuepress/config.yml', - '.vuepress/config.toml' - ], { - cwd: sourceDir, - ignoreInitial: true - }) - configWatcher.on('change', update) - - // also listen for frontmatter changes from markdown files - frontmatterEmitter.on('update', update) - - // resolve webpack config - let config = createClientConfig(options, cliOptions) - - config - .plugin('html') - // using a fork of html-webpack-plugin to avoid it requiring webpack - // internals from an incompatible version. - .use(require('vuepress-html-webpack-plugin'), [{ - template: path.resolve(__dirname, 'app/index.dev.html') - }]) - - config - .plugin('site-data') - .use(HeadPlugin, [{ - tags: options.siteConfig.head || [] - }]) - - const port = await resolvePort(cliOptions.port || options.siteConfig.port) - const { host, displayHost } = await resolveHost(cliOptions.host || options.siteConfig.host) - - config - .plugin('vuepress-log') - .use(DevLogPlugin, [{ - port, - displayHost, - publicPath: options.publicPath - }]) - - config = config.toConfig() - const userConfig = options.siteConfig.configureWebpack - if (userConfig) { - config = applyUserWebpackConfig(userConfig, config, false /* isServer */) - } - - const compiler = webpack(config) - - const nonExistentDir = path.resolve(__dirname, 'non-existent') - await serve({ - // avoid project cwd from being served. Otherwise if the user has index.html - // in cwd it would break the server - content: [nonExistentDir], - compiler, - host, - dev: { logLevel: 'warn' }, - hot: { - port: port + 1, - logLevel: 'error' - }, - logLevel: 'error', - port, - add: app => { - const userPublic = path.resolve(sourceDir, '.vuepress/public') - - // enable range request - app.use(range) - - // respect base when serving static files... - if (fs.existsSync(userPublic)) { - app.use(mount(options.publicPath, serveStatic(userPublic))) - } - - app.use(convert(history({ - rewrites: [ - { from: /\.html$/, to: '/' } - ] - }))) - } - }) -} - -function resolveHost (host) { - // webpack-serve hot updates doesn't work properly over 0.0.0.0 on Windows, - // but localhost does not allow visiting over network :/ - const defaultHost = process.platform === 'win32' ? 'localhost' : '0.0.0.0' - host = host || defaultHost - const displayHost = host === defaultHost && process.platform !== 'win32' - ? 'localhost' - : host - return { - displayHost, - host - } -} - -async function resolvePort (port) { - const portfinder = require('portfinder') - portfinder.basePort = parseInt(port) || 8080 - port = await portfinder.getPortPromise() - return port -} diff --git a/lib/eject.js b/lib/eject.js deleted file mode 100644 index e96b00f..0000000 --- a/lib/eject.js +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs-extra') -const path = require('path') -const chalk = require('chalk') -const logger = require('./util/logger') - -module.exports = async (dir) => { - const source = path.resolve(__dirname, 'default-theme') - const target = path.resolve(dir, '.vuepress/theme') - await fs.copy(source, target) - // remove the import to default theme override - const styleConfig = path.resolve(target, 'styles/config.styl') - const content = await fs.readFile(styleConfig, 'utf-8') - const transformed = content.split('\n').slice(0, -2).join('\n') - await fs.writeFile(styleConfig, transformed) - logger.success(`\nCopied default theme into ${chalk.cyan(target)}.\n`) -} diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 8e4d4a1..0000000 --- a/lib/index.js +++ /dev/null @@ -1,4 +0,0 @@ -exports.dev = require('./dev') -exports.build = require('./build') -exports.eject = require('./eject') -Object.assign(exports, require('./util')) diff --git a/lib/markdown/component.js b/lib/markdown/component.js deleted file mode 100644 index 1aab66e..0000000 --- a/lib/markdown/component.js +++ /dev/null @@ -1,81 +0,0 @@ -// Replacing the default htmlBlock rule to allow using custom components at -// root level - -const blockNames = require('markdown-it/lib/common/html_blocks') -const HTML_OPEN_CLOSE_TAG_RE = require('markdown-it/lib/common/html_re').HTML_OPEN_CLOSE_TAG_RE - -// An array of opening and corresponding closing sequences for html tags, -// last argument defines whether it can terminate a paragraph or not -const HTML_SEQUENCES = [ - [/^<(script|pre|style)(?=(\s|>|$))/i, /<\/(script|pre|style)>/i, true], - [/^/, true], - [/^<\?/, /\?>/, true], - [/^/, true], - [/^/, true], - // PascalCase Components - [/^<[A-Z]/, />/, true], - // custom elements with hyphens - [/^<\w+\-/, />/, true], - [new RegExp('^|$))', 'i'), /^$/, true], - [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\s*$'), /^$/, false] -] - -module.exports = md => { - md.block.ruler.at('html_block', htmlBlock) -} - -function htmlBlock (state, startLine, endLine, silent) { - let i, nextLine, lineText - let pos = state.bMarks[startLine] + state.tShift[startLine] - let max = state.eMarks[startLine] - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false } - - if (!state.md.options.html) { return false } - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false } - - lineText = state.src.slice(pos, max) - - for (i = 0; i < HTML_SEQUENCES.length; i++) { - if (HTML_SEQUENCES[i][0].test(lineText)) { break } - } - - if (i === HTML_SEQUENCES.length) { - console.log(lineText) - return false - } - - if (silent) { - // true if this sequence can be a terminator, false otherwise - return HTML_SEQUENCES[i][2] - } - - nextLine = startLine + 1 - - // If we are here - we detected HTML block. - // Let's roll down till block end. - if (!HTML_SEQUENCES[i][1].test(lineText)) { - for (; nextLine < endLine; nextLine++) { - if (state.sCount[nextLine] < state.blkIndent) { break } - - pos = state.bMarks[nextLine] + state.tShift[nextLine] - max = state.eMarks[nextLine] - lineText = state.src.slice(pos, max) - - if (HTML_SEQUENCES[i][1].test(lineText)) { - if (lineText.length !== 0) { nextLine++ } - break - } - } - } - - state.line = nextLine - - const token = state.push('html_block', '', 0) - token.map = [startLine, nextLine] - token.content = state.getLines(startLine, nextLine, state.blkIndent, true) - - return true -} diff --git a/lib/markdown/containers.js b/lib/markdown/containers.js deleted file mode 100644 index 215c453..0000000 --- a/lib/markdown/containers.js +++ /dev/null @@ -1,28 +0,0 @@ -const container = require('markdown-it-container') - -module.exports = md => { - md - .use(...createContainer('tip', 'TIP')) - .use(...createContainer('warning', 'WARNING')) - .use(...createContainer('danger', 'WARNING')) - // explicitly escape Vue syntax - .use(container, 'v-pre', { - render: (tokens, idx) => tokens[idx].nesting === 1 - ? `
                                        \n` - : `
                                        \n` - }) -} - -function createContainer (klass, defaultTitle) { - return [container, klass, { - render (tokens, idx) { - const token = tokens[idx] - const info = token.info.trim().slice(klass.length).trim() - if (token.nesting === 1) { - return `

                                        ${info || defaultTitle}

                                        \n` - } else { - return `
                                        \n` - } - } - }] -} diff --git a/lib/markdown/highlight.js b/lib/markdown/highlight.js deleted file mode 100644 index 206d4b4..0000000 --- a/lib/markdown/highlight.js +++ /dev/null @@ -1,50 +0,0 @@ -const chalk = require('chalk') -const prism = require('prismjs') -const loadLanguages = require('prismjs/components/index') -const escapeHtml = require('escape-html') -const logger = require('../util/logger') - -// required to make embedded highlighting work... -loadLanguages(['markup', 'css', 'javascript']) - -function wrap (code, lang) { - if (lang === 'text') { - code = escapeHtml(code) - } - return `
                                        ${code}
                                        ` -} - -module.exports = (str, lang) => { - if (!lang) { - return wrap(str, 'text') - } - lang = lang.toLowerCase() - const rawLang = lang - if (lang === 'vue' || lang === 'html' || lang === 'wxml') { - lang = 'markup' - } - if (lang === 'md') { - lang = 'markdown' - } - if (lang === 'ts') { - lang = 'typescript' - } - if (lang === 'py') { - lang = 'python' - } - if (lang === 'wxss') { - lang = 'css' - } - if (!prism.languages[lang]) { - try { - loadLanguages([lang]) - } catch (e) { - logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`)) - } - } - if (prism.languages[lang]) { - const code = prism.highlight(str, prism.languages[lang], lang) - return wrap(code, rawLang) - } - return wrap(str, 'text') -} diff --git a/lib/markdown/highlightLines.js b/lib/markdown/highlightLines.js deleted file mode 100644 index dd83343..0000000 --- a/lib/markdown/highlightLines.js +++ /dev/null @@ -1,49 +0,0 @@ -// Modified from https://github.com/egoist/markdown-it-highlight-lines - -const RE = /{([\d,-]+)}/ -const wrapperRE = /^
                                        /
                                        -
                                        -module.exports = md => {
                                        -  const fence = md.renderer.rules.fence
                                        -  md.renderer.rules.fence = (...args) => {
                                        -    const [tokens, idx, options] = args
                                        -    const token = tokens[idx]
                                        -
                                        -    const rawInfo = token.info
                                        -    if (!rawInfo || !RE.test(rawInfo)) {
                                        -      return fence(...args)
                                        -    }
                                        -
                                        -    const langName = rawInfo.replace(RE, '').trim()
                                        -    // ensure the next plugin get the correct lang.
                                        -    token.info = langName
                                        -
                                        -    const lineNumbers = RE.exec(rawInfo)[1]
                                        -      .split(',')
                                        -      .map(v => v.split('-').map(v => parseInt(v, 10)))
                                        -
                                        -    const code = options.highlight
                                        -      ? options.highlight(token.content, langName)
                                        -      : token.content
                                        -
                                        -    const rawCode = code.replace(wrapperRE, '')
                                        -    const highlightLinesCode = rawCode.split('\n').map((split, index) => {
                                        -      const lineNumber = index + 1
                                        -      const inRange = lineNumbers.some(([start, end]) => {
                                        -        if (start && end) {
                                        -          return lineNumber >= start && lineNumber <= end
                                        -        }
                                        -        return lineNumber === start
                                        -      })
                                        -      if (inRange) {
                                        -        return `
                                         
                                        ` - } - return '
                                        ' - }).join('') - - const highlightLinesWrapperCode = - `
                                        ${highlightLinesCode}
                                        ` - - return highlightLinesWrapperCode + code - } -} diff --git a/lib/markdown/hoist.js b/lib/markdown/hoist.js deleted file mode 100644 index a638339..0000000 --- a/lib/markdown/hoist.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = md => { - const RE = /^<(script|style)(?=(\s|>|$))/i - - md.renderer.rules.html_block = (tokens, idx) => { - const content = tokens[idx].content - const hoistedTags = md.__data.hoistedTags || (md.__data.hoistedTags = []) - if (RE.test(content.trim())) { - hoistedTags.push(content) - return '' - } else { - return content - } - } -} diff --git a/lib/markdown/index.js b/lib/markdown/index.js deleted file mode 100644 index f4942f6..0000000 --- a/lib/markdown/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const highlight = require('./highlight') -const highlightLines = require('./highlightLines') -const preWrapper = require('./preWrapper') -const lineNumbers = require('./lineNumbers') -const component = require('./component') -const hoistScriptStyle = require('./hoist') -const convertRouterLink = require('./link') -const containers = require('./containers') -const snippet = require('./snippet') -const emoji = require('markdown-it-emoji') -const anchor = require('markdown-it-anchor') -const toc = require('markdown-it-table-of-contents') -const _slugify = require('./slugify') -const { parseHeaders } = require('../util/parseHeaders') - -module.exports = ({ markdown = {}} = {}) => { - // allow user config slugify - const slugify = markdown.slugify || _slugify - - const md = require('markdown-it')({ - html: true, - highlight - }) - // custom plugins - .use(component) - .use(highlightLines) - .use(preWrapper) - .use(snippet) - .use(convertRouterLink, Object.assign({ - target: '_blank', - rel: 'noopener noreferrer' - }, markdown.externalLinks)) - .use(hoistScriptStyle) - .use(containers) - - // 3rd party plugins - .use(emoji) - .use(anchor, Object.assign({ - slugify, - permalink: true, - permalinkBefore: true, - permalinkSymbol: '#' - }, markdown.anchor)) - .use(toc, Object.assign({ - slugify, - includeLevel: [2, 3], - format: parseHeaders - }, markdown.toc)) - - // apply user config - if (markdown.config) { - markdown.config(md) - } - - if (markdown.lineNumbers) { - md.use(lineNumbers) - } - - module.exports.dataReturnable(md) - - // expose slugify - md.slugify = slugify - - return md -} - -module.exports.dataReturnable = function dataReturnable (md) { - // override render to allow custom plugins return data - const render = md.render - md.render = (...args) => { - md.__data = {} - const html = render.call(md, ...args) - return { - html, - data: md.__data - } - } -} diff --git a/lib/markdown/lineNumbers.js b/lib/markdown/lineNumbers.js deleted file mode 100644 index bc95d2b..0000000 --- a/lib/markdown/lineNumbers.js +++ /dev/null @@ -1,26 +0,0 @@ -// markdown-it plugin for generating line numbers. -// It depends on preWrapper plugin. - -module.exports = md => { - const fence = md.renderer.rules.fence - md.renderer.rules.fence = (...args) => { - const rawCode = fence(...args) - const code = rawCode.slice( - rawCode.indexOf(''), - rawCode.indexOf('') - ) - - const lines = code.split('\n') - const lineNumbersCode = [...Array(lines.length - 1)] - .map((line, index) => `${index + 1}
                                        `).join('') - - const lineNumbersWrapperCode = - `
                                        ${lineNumbersCode}
                                        ` - - const finalCode = rawCode - .replace('', `${lineNumbersWrapperCode}`) - .replace('extra-class', 'line-numbers-mode') - - return finalCode - } -} diff --git a/lib/markdown/link.js b/lib/markdown/link.js deleted file mode 100644 index bbe9550..0000000 --- a/lib/markdown/link.js +++ /dev/null @@ -1,91 +0,0 @@ -// markdown-it plugin for: -// 1. adding target="_blank" to external links -// 2. converting internal links to - -const indexRE = /(.*)(index|readme).md(#?.*)$/i - -module.exports = (md, externalAttrs) => { - let hasOpenRouterLink = false - let hasOpenExternalLink = false - - md.renderer.rules.link_open = (tokens, idx, options, env, self) => { - const token = tokens[idx] - const hrefIndex = token.attrIndex('href') - if (hrefIndex >= 0) { - const link = token.attrs[hrefIndex] - const href = link[1] - const isExternal = /^https?:/.test(href) - const isSourceLink = /(\/|\.md|\.html)(#.*)?$/.test(href) - if (isExternal) { - Object.entries(externalAttrs).forEach(([key, val]) => { - token.attrSet(key, val) - }) - if (/_blank/i.test(externalAttrs['target'])) { - hasOpenExternalLink = true - } - } else if (isSourceLink) { - hasOpenRouterLink = true - tokens[idx] = toRouterLink(token, link) - } - } - return self.renderToken(tokens, idx, options) - } - - function toRouterLink (token, link) { - link[0] = 'to' - let to = link[1] - - // convert link to filename and export it for existence check - const links = md.__data.links || (md.__data.links = []) - links.push(to) - - const indexMatch = to.match(indexRE) - if (indexMatch) { - const [, path, , hash] = indexMatch - to = path + hash - } else { - to = to - .replace(/\.md$/, '.html') - .replace(/\.md(#.*)$/, '.html$1') - } - - // relative path usage. - if (!to.startsWith('/')) { - to = ensureBeginningDotSlash(to) - } - - // markdown-it encodes the uri - link[1] = decodeURI(to) - - // export the router links for testing - const routerLinks = md.__data.routerLinks || (md.__data.routerLinks = []) - routerLinks.push(to) - - return Object.assign({}, token, { - tag: 'router-link' - }) - } - - md.renderer.rules.link_close = (tokens, idx, options, env, self) => { - const token = tokens[idx] - if (hasOpenRouterLink) { - token.tag = 'router-link' - hasOpenRouterLink = false - } - if (hasOpenExternalLink) { - hasOpenExternalLink = false - // add OutBoundLink to the beforeend of this link if it opens in _blank. - return '' + self.renderToken(tokens, idx, options) - } - return self.renderToken(tokens, idx, options) - } -} - -const beginningSlashRE = /^\.\// - -function ensureBeginningDotSlash (path) { - if (beginningSlashRE.test(path)) { - return path - } - return './' + path -} diff --git a/lib/markdown/preWrapper.js b/lib/markdown/preWrapper.js deleted file mode 100644 index 8f1b1d7..0000000 --- a/lib/markdown/preWrapper.js +++ /dev/null @@ -1,19 +0,0 @@ -// markdown-it plugin for wrapping
                                         ... 
                                        . -// -// If your plugin was chained before preWrapper, you can add additional eleemnt directly. -// If your plugin was chained after preWrapper, you can use these slots: -// 1. -// 2. -// 3. -// 4. - -module.exports = md => { - const fence = md.renderer.rules.fence - md.renderer.rules.fence = (...args) => { - const [tokens, idx] = args - const token = tokens[idx] - const rawCode = fence(...args) - return `
                                        ` + - `${rawCode}
                                        ` - } -} diff --git a/lib/markdown/slugify.js b/lib/markdown/slugify.js deleted file mode 100644 index 47a9d6e..0000000 --- a/lib/markdown/slugify.js +++ /dev/null @@ -1,22 +0,0 @@ -// string.js slugify drops non ascii chars so we have to -// use a custom implementation here -const removeDiacritics = require('diacritics').remove -// eslint-disable-next-line no-control-regex -const rControl = /[\u0000-\u001f]/g -const rSpecial = /[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.?/]+/g - -module.exports = function slugify (str) { - return removeDiacritics(str) - // Remove control characters - .replace(rControl, '') - // Replace special characters - .replace(rSpecial, '-') - // Remove continous separators - .replace(/\-{2,}/g, '-') - // Remove prefixing and trailing separtors - .replace(/^\-+|\-+$/g, '') - // ensure it doesn't start with a number (#121) - .replace(/^(\d)/, '_$1') - // lowercase - .toLowerCase() -} diff --git a/lib/markdown/snippet.js b/lib/markdown/snippet.js deleted file mode 100644 index a677e12..0000000 --- a/lib/markdown/snippet.js +++ /dev/null @@ -1,43 +0,0 @@ -const fs = require('fs') - -module.exports = function snippet (md, options = {}) { - const root = options.root || process.cwd() - function parser (state, startLine, endLine, silent) { - const CH = '<'.charCodeAt(0) - const pos = state.bMarks[startLine] + state.tShift[startLine] - const max = state.eMarks[startLine] - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false - } - - for (let i = 0; i < 3; ++i) { - const ch = state.src.charCodeAt(pos + i) - if (ch !== CH || pos + i >= max) return false - } - - if (silent) { - return true - } - - const start = pos + 3 - const end = state.skipSpacesBack(max, pos) - const rawPath = state.src.slice(start, end).trim().replace(/^@/, root) - const filename = rawPath.split(/[{:\s]/).shift() - const content = fs.existsSync(filename) ? fs.readFileSync(filename).toString() : 'Not found: ' + filename - const meta = rawPath.replace(filename, '') - - state.line = startLine + 1 - - const token = state.push('fence', 'code', 0) - token.info = filename.split('.').pop() + meta - token.content = content - token.markup = '```' - token.map = [startLine, startLine + 1] - - return true - } - - md.block.ruler.before('fence', 'snippet', parser) -} diff --git a/lib/noop.js b/lib/noop.js deleted file mode 100644 index 4ba52ba..0000000 --- a/lib/noop.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/lib/prepare/codegen.js b/lib/prepare/codegen.js deleted file mode 100644 index 52e8535..0000000 --- a/lib/prepare/codegen.js +++ /dev/null @@ -1,74 +0,0 @@ -const path = require('path') -const { fileToComponentName, resolveComponents } = require('./util') - -exports.genRoutesFile = async function ({ - siteData: { pages }, - sourceDir, - pageFiles -}) { - function genRoute ({ path: pagePath, key: componentName }, index) { - const file = pageFiles[index] - const filePath = path.resolve(sourceDir, file) - let code = ` - { - name: ${JSON.stringify(componentName)}, - path: ${JSON.stringify(pagePath)}, - component: ThemeLayout, - beforeEnter: (to, from, next) => { - import(${JSON.stringify(filePath)}).then(comp => { - Vue.component(${JSON.stringify(componentName)}, comp.default) - next() - }) - } - }` - - const dncodedPath = decodeURIComponent(pagePath) - if (dncodedPath !== pagePath) { - code += `, - { - path: ${JSON.stringify(dncodedPath)}, - redirect: ${JSON.stringify(pagePath)} - }` - } - - if (/\/$/.test(pagePath)) { - code += `, - { - path: ${JSON.stringify(pagePath + 'index.html')}, - redirect: ${JSON.stringify(pagePath)} - }` - } - - return code - } - - const notFoundRoute = `, - { - path: '*', - component: ThemeNotFound - }` - - return ( - `import ThemeLayout from '@themeLayout'\n` + - `import ThemeNotFound from '@themeNotFound'\n` + - `import { injectMixins } from '@app/util'\n` + - `import rootMixins from '@app/root-mixins'\n\n` + - `injectMixins(ThemeLayout, rootMixins)\n` + - `injectMixins(ThemeNotFound, rootMixins)\n\n` + - `export const routes = [${pages.map(genRoute).join(',')}${notFoundRoute}\n]` - ) -} - -exports.genComponentRegistrationFile = async function ({ sourceDir }) { - function genImport (file) { - const name = fileToComponentName(file) - const baseDir = path.resolve(sourceDir, '.vuepress/components') - const absolutePath = path.resolve(baseDir, file) - const code = `Vue.component(${JSON.stringify(name)}, () => import(${JSON.stringify(absolutePath)}))` - return code - } - - const components = (await resolveComponents(sourceDir)) || [] - return `import Vue from 'vue'\n` + components.map(genImport).join('\n') -} - diff --git a/lib/prepare/index.js b/lib/prepare/index.js deleted file mode 100644 index 7561f79..0000000 --- a/lib/prepare/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const path = require('path') -const fs = require('fs-extra') -const resolveOptions = require('./resolveOptions') -const { genRoutesFile, genComponentRegistrationFile } = require('./codegen') -const { writeTemp, writeEnhanceTemp } = require('./util') -const logger = require('../util/logger') -const chalk = require('chalk') - -module.exports = async function prepare (sourceDir) { - // 1. load options - const options = await resolveOptions(sourceDir) - - // 2. generate routes & user components registration code - const routesCode = await genRoutesFile(options) - const componentCode = await genComponentRegistrationFile(options) - - await writeTemp('routes.js', [ - componentCode, - routesCode - ].join('\n')) - - // 3. generate siteData - const dataCode = `export const siteData = ${JSON.stringify(options.siteData, null, 2)}` - await writeTemp('siteData.js', dataCode) - - // 4. handle user override - const overridePath = path.resolve(sourceDir, '.vuepress/override.styl').replace(/[\\]+/g, '/') - const hasUserOverride = fs.existsSync(overridePath) - await writeTemp('override.styl', hasUserOverride ? `@import(${JSON.stringify(overridePath)})` : ``) - - const stylePath = path.resolve(sourceDir, '.vuepress/style.styl').replace(/[\\]+/g, '/') - const hasUserStyle = fs.existsSync(stylePath) - await writeTemp('style.styl', hasUserStyle ? `@import(${JSON.stringify(stylePath)})` : ``) - - // Temporary tip, will be removed at next release. - if (hasUserOverride && !hasUserStyle) { - logger.tip( - `${chalk.magenta('override.styl')} has been split into 2 APIs, we recommend you upgrade to continue.\n` + - ` See: ${chalk.magenta('https://vuepress.vuejs.org/default-theme-config/#simple-css-override')}` - ) - } - - // 5. handle enhanceApp.js - const enhanceAppPath = path.resolve(sourceDir, '.vuepress/enhanceApp.js') - await writeEnhanceTemp('enhanceApp.js', enhanceAppPath) - - // 6. handle the theme enhanceApp.js - await writeEnhanceTemp('themeEnhanceApp.js', options.themeEnhanceAppPath) - - return options -} diff --git a/lib/prepare/loadConfig.js b/lib/prepare/loadConfig.js deleted file mode 100644 index aa913ba..0000000 --- a/lib/prepare/loadConfig.js +++ /dev/null @@ -1,56 +0,0 @@ -const fs = require('fs-extra') -const path = require('path') -const yamlParser = require('js-yaml') -const tomlParser = require('toml') - -module.exports = function loadConfig (vuepressDir, bustCache = true) { - const configPath = path.resolve(vuepressDir, 'config.js') - const configYmlPath = path.resolve(vuepressDir, 'config.yml') - const configTomlPath = path.resolve(vuepressDir, 'config.toml') - - if (bustCache) { - delete require.cache[configPath] - } - - // resolve siteConfig - let siteConfig = {} - if (fs.existsSync(configYmlPath)) { - siteConfig = parseConfig(configYmlPath) - } else if (fs.existsSync(configTomlPath)) { - siteConfig = parseConfig(configTomlPath) - } else if (fs.existsSync(configPath)) { - siteConfig = require(configPath) - } - - return siteConfig -} - -function parseConfig (file) { - const content = fs.readFileSync(file, 'utf-8') - const [extension] = /.\w+$/.exec(file) - let data - - switch (extension) { - case '.yml': - case '.yaml': - data = yamlParser.safeLoad(content) - break - - case '.toml': - data = tomlParser.parse(content) - // reformat to match config since TOML does not allow different data type - // https://github.com/toml-lang/toml#array - const format = [] - if (data.head) { - Object.keys(data.head).forEach(meta => { - data.head[meta].forEach(values => { - format.push([meta, values]) - }) - }) - } - data.head = format - break - } - - return data || {} -} diff --git a/lib/prepare/resolveOptions.js b/lib/prepare/resolveOptions.js deleted file mode 100644 index 9b97ca8..0000000 --- a/lib/prepare/resolveOptions.js +++ /dev/null @@ -1,194 +0,0 @@ -const fs = require('fs-extra') -const path = require('path') -const globby = require('globby') -const createMarkdown = require('../markdown') -const loadConfig = require('./loadConfig') -const { encodePath, fileToPath, sort, getGitLastUpdatedTimeStamp } = require('./util') -const { - inferTitle, - extractHeaders, - parseFrontmatter -} = require('../util/index') - -module.exports = async function resolveOptions (sourceDir) { - const vuepressDir = path.resolve(sourceDir, '.vuepress') - const siteConfig = loadConfig(vuepressDir) - - // normalize head tag urls for base - const base = siteConfig.base || '/' - if (base !== '/' && siteConfig.head) { - siteConfig.head.forEach(tag => { - const attrs = tag[1] - if (attrs) { - for (const name in attrs) { - if (name === 'src' || name === 'href') { - const value = attrs[name] - if (value.charAt(0) === '/') { - attrs[name] = base + value.slice(1) - } - } - } - } - }) - } - - // resolve outDir - const outDir = siteConfig.dest - ? path.resolve(siteConfig.dest) - : path.resolve(sourceDir, '.vuepress/dist') - - // resolve theme - const useDefaultTheme = ( - !siteConfig.theme && - !fs.existsSync(path.resolve(vuepressDir, 'theme')) - ) - const defaultThemePath = path.resolve(__dirname, '../default-theme') - let themePath = null - let themeLayoutPath = null - let themeNotFoundPath = null - let themeEnhanceAppPath = null - - if (useDefaultTheme) { - // use default theme - themePath = defaultThemePath - themeLayoutPath = path.resolve(defaultThemePath, 'Layout.vue') - themeNotFoundPath = path.resolve(defaultThemePath, 'NotFound.vue') - } else { - // resolve theme Layout - if (siteConfig.theme) { - // use external theme - try { - themeLayoutPath = require.resolve(`vuepress-theme-${siteConfig.theme}/Layout.vue`, { - paths: [ - path.resolve(__dirname, '../../node_modules'), - path.resolve(sourceDir) - ] - }) - themePath = path.dirname(themeLayoutPath) - } catch (e) { - throw new Error(`[vuepress] Failed to load custom theme "${ - siteConfig.theme - }". File vuepress-theme-${siteConfig.theme}/Layout.vue does not exist.`) - } - } else { - // use custom theme - themePath = path.resolve(vuepressDir, 'theme') - themeLayoutPath = path.resolve(themePath, 'Layout.vue') - if (!fs.existsSync(themeLayoutPath)) { - throw new Error(`[vuepress] Cannot resolve Layout.vue file in .vuepress/theme.`) - } - } - - // resolve theme NotFound - themeNotFoundPath = path.resolve(themePath, 'NotFound.vue') - if (!fs.existsSync(themeNotFoundPath)) { - themeNotFoundPath = path.resolve(defaultThemePath, 'NotFound.vue') - } - - // resolve theme enhanceApp - themeEnhanceAppPath = path.resolve(themePath, 'enhanceApp.js') - if (!fs.existsSync(themeEnhanceAppPath)) { - themeEnhanceAppPath = null - } - } - - // resolve theme config - const themeConfig = siteConfig.themeConfig || {} - - // resolve algolia - const isAlgoliaSearch = ( - themeConfig.algolia || - Object.keys(siteConfig.locales && themeConfig.locales || {}) - .some(base => themeConfig.locales[base].algolia) - ) - - // resolve markdown - const markdown = createMarkdown(siteConfig) - - // resolve pageFiles - const patterns = ['**/*.md', '!.vuepress', '!node_modules'] - if (siteConfig.dest) { - // #654 exclude dest folder when dest dir was set in - // sourceDir but not in '.vuepress' - const outDirRelative = path.relative(sourceDir, outDir) - if (!outDirRelative.includes('..')) { - patterns.push('!' + outDirRelative) - } - } - const pageFiles = sort(await globby(patterns, { cwd: sourceDir })) - - // resolve lastUpdated - const shouldResolveLastUpdated = ( - themeConfig.lastUpdated || - Object.keys(siteConfig.locales && themeConfig.locales || {}) - .some(base => themeConfig.locales[base].lastUpdated) - ) - - // resolve pagesData - const pagesData = await Promise.all(pageFiles.map(async (file) => { - const filepath = path.resolve(sourceDir, file) - const key = 'v-' + Math.random().toString(16).slice(2) - const data = { - key, - path: encodePath(fileToPath(file)) - } - - if (shouldResolveLastUpdated) { - data.lastUpdated = getGitLastUpdatedTimeStamp(filepath) - } - - // extract yaml frontmatter - const content = await fs.readFile(filepath, 'utf-8') - const frontmatter = parseFrontmatter(content) - // infer title - const title = inferTitle(frontmatter) - if (title) { - data.title = title - } - const headers = extractHeaders( - frontmatter.content, - ['h2', 'h3'], - markdown - ) - if (headers.length) { - data.headers = headers - } - if (Object.keys(frontmatter.data).length) { - data.frontmatter = frontmatter.data - } - if (frontmatter.excerpt) { - const { html } = markdown.render(frontmatter.excerpt) - data.excerpt = html - } - return data - })) - - // resolve site data - const siteData = { - title: siteConfig.title || '', - description: siteConfig.description || '', - base, - pages: pagesData, - themeConfig, - locales: siteConfig.locales - } - - const options = { - siteConfig, - siteData, - sourceDir, - outDir, - publicPath: base, - pageFiles, - pagesData, - themePath, - themeLayoutPath, - themeNotFoundPath, - themeEnhanceAppPath, - useDefaultTheme, - isAlgoliaSearch, - markdown - } - - return options -} diff --git a/lib/prepare/util.js b/lib/prepare/util.js deleted file mode 100644 index efa96cc..0000000 --- a/lib/prepare/util.js +++ /dev/null @@ -1,80 +0,0 @@ -const path = require('path') -const spawn = require('cross-spawn') -const fs = require('fs-extra') -const globby = require('globby') - -const tempPath = path.resolve(__dirname, '../app/.temp') -fs.ensureDirSync(tempPath) - -const tempCache = new Map() -exports.writeTemp = async function (file, content) { - // cache write to avoid hitting the dist if it didn't change - const cached = tempCache.get(file) - if (cached !== content) { - await fs.writeFile(path.join(tempPath, file), content) - tempCache.set(file, content) - } -} - -exports.writeEnhanceTemp = async function (destName, srcPath) { - await exports.writeTemp( - destName, - fs.existsSync(srcPath) - ? `export { default } from ${JSON.stringify(srcPath)}` - : `export default function () {}` - ) -} - -const indexRE = /(^|.*\/)(index|readme)\.md$/i -const extRE = /\.(vue|md)$/ - -exports.fileToPath = function (file) { - if (exports.isIndexFile(file)) { - // README.md -> / - // foo/README.md -> /foo/ - return file.replace(indexRE, '/$1') - } else { - // foo.md -> /foo.html - // foo/bar.md -> /foo/bar.html - return `/${file.replace(extRE, '').replace(/\\/g, '/')}.html` - } -} - -exports.fileToComponentName = function (file) { - let normalizedName = file - .replace(/\/|\\/g, '-') - .replace(extRE, '') - if (exports.isIndexFile(file)) { - normalizedName = normalizedName.replace(/readme$/i, 'index') - } - const pagePrefix = /\.md$/.test(file) ? `page-` : `` - return `${pagePrefix}${normalizedName}` -} - -exports.isIndexFile = function (file) { - return indexRE.test(file) -} - -exports.resolveComponents = async function (sourceDir) { - const componentDir = path.resolve(sourceDir, '.vuepress/components') - if (!fs.existsSync(componentDir)) { - return - } - return exports.sort(await globby(['**/*.vue'], { cwd: componentDir })) -} - -exports.sort = function (arr) { - return arr.sort((a, b) => { - if (a < b) return -1 - if (a > b) return 1 - return 0 - }) -} - -exports.encodePath = function (userpath) { - return userpath.split('/').map(item => encodeURIComponent(item)).join('/') -} - -exports.getGitLastUpdatedTimeStamp = function (filepath) { - return parseInt(spawn.sync('git', ['log', '-1', '--format=%ct', filepath]).stdout.toString('utf-8')) * 1000 -} diff --git a/lib/service-worker/skip-waiting.js b/lib/service-worker/skip-waiting.js deleted file mode 100644 index 54fd8d3..0000000 --- a/lib/service-worker/skip-waiting.js +++ /dev/null @@ -1,12 +0,0 @@ -addEventListener('message', event => { - const replyPort = event.ports[0] - const message = event.data - if (replyPort && message && message.type === 'skip-waiting') { - event.waitUntil( - self.skipWaiting().then( - () => replyPort.postMessage({ error: null }), - error => replyPort.postMessage({ error }) - ) - ) - } -}) diff --git a/lib/util/index.js b/lib/util/index.js deleted file mode 100644 index 8918ee3..0000000 --- a/lib/util/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { deeplyParseHeaders } = require('./parseHeaders') - -exports.normalizeHeadTag = function (tag) { - if (typeof tag === 'string') { - tag = [tag] - } - const tagName = tag[0] - return { - tagName, - attributes: tag[1] || {}, - innerHTML: tag[2] || '', - closeTag: !(tagName === 'meta' || tagName === 'link') - } -} - -exports.applyUserWebpackConfig = function (userConfig, config, isServer) { - const merge = require('webpack-merge') - if (typeof userConfig === 'object') { - return merge(config, userConfig) - } - if (typeof userConfig === 'function') { - const res = userConfig(config, isServer) - if (res && typeof res === 'object') { - return merge(config, res) - } - } - return config -} - -exports.inferTitle = function (frontmatter) { - if (frontmatter.data.home) { - return 'Home' - } - if (frontmatter.data.title) { - return deeplyParseHeaders(frontmatter.data.title) - } - const match = frontmatter.content.trim().match(/^#+\s+(.*)/) - if (match) { - return deeplyParseHeaders(match[1]) - } -} - -exports.parseFrontmatter = function (content) { - const matter = require('gray-matter') - const toml = require('toml') - - return matter(content, { - excerpt_separator: '', - engines: { - toml: toml.parse.bind(toml), - excerpt: false - } - }) -} - -const LRU = require('lru-cache') -const cache = LRU({ max: 1000 }) - -exports.extractHeaders = function (content, include = [], md) { - const key = content + include.join(',') - const hit = cache.get(key) - if (hit) { - return hit - } - - const tokens = md.parse(content, {}) - - const res = [] - tokens.forEach((t, i) => { - if (t.type === 'heading_open' && include.includes(t.tag)) { - const title = tokens[i + 1].content - const slug = t.attrs.find(([name]) => name === 'id')[1] - res.push({ - level: parseInt(t.tag.slice(1), 10), - title: deeplyParseHeaders(title), - slug: slug || md.slugify(title) - }) - } - }) - - cache.set(key, res) - return res -} diff --git a/lib/util/logger.js b/lib/util/logger.js deleted file mode 100644 index 9fd1a9a..0000000 --- a/lib/util/logger.js +++ /dev/null @@ -1,48 +0,0 @@ -const chalk = require('chalk') - -const logger = {} - -const logTypes = { - success: { - color: 'green', - label: 'DONE' - }, - error: { - color: 'red', - label: 'FAIL' - }, - warn: { - color: 'yellow', - label: 'WARN' - }, - tip: { - color: 'cyan', - label: 'TIP' - }, - wait: { - color: 'blue', - label: 'WAIT' - } -} - -const getLoggerFn = (color, label) => (msg, log = true) => { - let newLine = false - if (msg.startsWith('\n')) { - if (log) msg = msg.slice(1) - newLine = true - } - msg = chalk.reset.inverse.bold[color](` ${label} `) + ' ' + msg - if (log) { - console.log(newLine ? '\n' + msg : msg) - } else { - return msg - } -} - -for (const type in logTypes) { - const { color, label } = logTypes[type] - logger[type] = getLoggerFn(color, label) -} - -module.exports = logger -module.exports.getLoggerFn = getLoggerFn diff --git a/lib/util/parseHeaders.js b/lib/util/parseHeaders.js deleted file mode 100644 index 0274054..0000000 --- a/lib/util/parseHeaders.js +++ /dev/null @@ -1,56 +0,0 @@ -// Since VuePress needs to extract the header from the markdown source -// file and display it in the sidebar or title (#238), this file simply -// removes some unnecessary elements to make header displays well at -// sidebar or title. -// -// But header's parsing in the markdown content is done by the markdown -// loader based on markdown-it. markdown-it parser will will always keep -// HTML in headers, so in VuePress, after being parsed by the markdiwn -// loader, the raw HTML in headers will finally be parsed by Vue-loader. -// so that we can write HTML/Vue in the header. One exception is the HTML -// wrapped by (markdown token: '`') tag. - -const { compose } = require('./shared') - -const parseEmojis = str => { - const emojiData = require('markdown-it-emoji/lib/data/full.json') - return String(str).replace(/:(.+?):/g, (placeholder, key) => emojiData[key] || placeholder) -} - -const unescapeHtml = html => String(html) - .replace(/"/g, '"') - .replace(/'/g, '\'') - .replace(/:/g, ':') - .replace(/</g, '<') - .replace(/>/g, '>') - -const removeMarkdownTokens = str => String(str) - .replace(/\[(.*)\]\(.*\)/, '$1') // []() - .replace(/(`|\*{1,3}|_)(.*?[^\\])\1/g, '$2') // `{t}` | *{t}* | **{t}** | ***{t}*** | _{t}_ - .replace(/(\\)(\*|_|`)/g, '$2') // remove escape char '\' - -const trim = str => str.trim() - -// This method remove the raw HTML but reserve the HTML wrapped by ``. -// e.g. -// Input: " b", Output: "b" -// Input: "`` b", Output: "`` b" -exports.removeNonCodeWrappedHTML = (str) => { - return String(str).replace(/(^|[^><`])<.*>([^><`]|$)/g, '$1$2') -} - -// Unescape html, parse emojis and remove some md tokens. -exports.parseHeaders = compose( - unescapeHtml, - parseEmojis, - removeMarkdownTokens, - trim -) - -// Also clean the html that isn't wrapped by code. -// Because we want to support using VUE components in headers. -// e.g. https://vuepress.vuejs.org/guide/using-vue.html#badge -exports.deeplyParseHeaders = compose( - exports.removeNonCodeWrappedHTML, - exports.parseHeaders, -) diff --git a/lib/util/shared.js b/lib/util/shared.js deleted file mode 100644 index 023f63b..0000000 --- a/lib/util/shared.js +++ /dev/null @@ -1,7 +0,0 @@ -exports.compose = (...processors) => { - if (processors.length === 0) return input => input - if (processors.length === 1) return processors[0] - return processors.reduce((prev, next) => { - return (...args) => next(prev(...args)) - }) -} diff --git a/lib/webpack/ClientPlugin.js b/lib/webpack/ClientPlugin.js deleted file mode 100644 index 8202847..0000000 --- a/lib/webpack/ClientPlugin.js +++ /dev/null @@ -1,87 +0,0 @@ -// Temporarily hacked dev build - -var isJS = function (file) { return /\.js(\?[^.]+)?$/.test(file) } - -var isCSS = function (file) { return /\.css(\?[^.]+)?$/.test(file) } - -var onEmit = function (compiler, name, hook) { - if (compiler.hooks) { - // Webpack >= 4.0.0 - compiler.hooks.emit.tapAsync(name, hook) - } else { - // Webpack < 4.0.0 - compiler.plugin('emit', hook) - } -} - -var hash = require('hash-sum') -var uniq = require('lodash.uniq') -var VueSSRClientPlugin = function VueSSRClientPlugin (options) { - if (options === void 0) options = {} - - this.options = Object.assign({ - filename: 'vue-ssr-client-manifest.json' - }, options) -} - -VueSSRClientPlugin.prototype.apply = function apply (compiler) { - var this$1 = this - - onEmit(compiler, 'vue-client-plugin', function (compilation, cb) { - var stats = compilation.getStats().toJson() - - var allFiles = uniq(stats.assets - .map(function (a) { return a.name })) - // Avoid preloading / injecting the style chunk - .filter(file => !/styles\.\w{8}\.js$/.test(file)) - - var initialFiles = uniq(Object.keys(stats.entrypoints) - .map(function (name) { return stats.entrypoints[name].assets }) - .reduce(function (assets, all) { return all.concat(assets) }, []) - .filter(function (file) { return isJS(file) || isCSS(file) })) - // Avoid preloading / injecting the style chunk - .filter(file => !/styles\.\w{8}\.js$/.test(file)) - - var asyncFiles = allFiles - .filter(function (file) { return isJS(file) || isCSS(file) }) - .filter(function (file) { return initialFiles.indexOf(file) < 0 }) - - var manifest = { - publicPath: stats.publicPath, - all: allFiles, - initial: initialFiles, - async: asyncFiles, - modules: { /* [identifier: string]: Array */ } - } - - var assetModules = stats.modules.filter(function (m) { return m.assets.length }) - var fileToIndex = function (file) { return manifest.all.indexOf(file) } - stats.modules.forEach(function (m) { - // ignore modules duplicated in multiple chunks - if (m.chunks.length === 1) { - var cid = m.chunks[0] - var chunk = stats.chunks.find(function (c) { return c.id === cid }) - if (!chunk || !chunk.files) { - return - } - var id = m.identifier.replace(/\s\w+$/, '') // remove appended hash - var files = manifest.modules[hash(id)] = chunk.files.map(fileToIndex) - // find all asset modules associated with the same chunk - assetModules.forEach(function (m) { - if (m.chunks.some(function (id) { return id === cid })) { - files.push.apply(files, m.assets.map(fileToIndex)) - } - }) - } - }) - - var json = JSON.stringify(manifest, null, 2) - compilation.assets[this$1.options.filename] = { - source: function () { return json }, - size: function () { return json.length } - } - cb() - }) -} - -module.exports = VueSSRClientPlugin diff --git a/lib/webpack/DevLogPlugin.js b/lib/webpack/DevLogPlugin.js deleted file mode 100644 index 8fd18d4..0000000 --- a/lib/webpack/DevLogPlugin.js +++ /dev/null @@ -1,38 +0,0 @@ -const chalk = require('chalk') -const logger = require('../util/logger') - -module.exports = class DevLogPlugin { - constructor (options) { - this.options = options - } - - apply (compiler) { - let isFirst = true - compiler.hooks.done.tap('vuepress-log', stats => { - clearScreen() - - const { displayHost, port, publicPath } = this.options - const time = new Date().toTimeString().match(/^[\d:]+/)[0] - const displayUrl = `http://${displayHost}:${port}${publicPath}` - - logger.success( - `\n${chalk.gray(`[${time}]`)} Build ${chalk.italic(stats.hash.slice(0, 6))} ` + - `finished in ${stats.endTime - stats.startTime} ms! ` + - ( - isFirst - ? '' - : `${chalk.gray(`(${displayUrl})`)}` - ) - ) - if (isFirst) { - isFirst = false - console.log(`\n${chalk.gray('>')} VuePress dev server listening at ${chalk.cyan(displayUrl)}`) - } - }) - compiler.hooks.invalid.tap('vuepress-log', clearScreen) - } -} - -function clearScreen () { - process.stdout.write('\x1Bc') -} diff --git a/lib/webpack/HeadPlugin.js b/lib/webpack/HeadPlugin.js deleted file mode 100644 index 2ccb46e..0000000 --- a/lib/webpack/HeadPlugin.js +++ /dev/null @@ -1,22 +0,0 @@ -const { normalizeHeadTag } = require('../util') - -module.exports = class SiteDataPlugin { - constructor ({ tags }) { - this.tags = tags - } - - apply (compiler) { - compiler.hooks.compilation.tap('vuepress-site-data', compilation => { - compilation.hooks.htmlWebpackPluginAlterAssetTags.tapAsync('vuepress-site-data', (data, cb) => { - try { - this.tags.forEach(tag => { - data.head.push(normalizeHeadTag(tag)) - }) - } catch (e) { - return cb(e) - } - cb(null, data) - }) - }) - } -} diff --git a/lib/webpack/createBaseConfig.js b/lib/webpack/createBaseConfig.js deleted file mode 100644 index bff0e5a..0000000 --- a/lib/webpack/createBaseConfig.js +++ /dev/null @@ -1,342 +0,0 @@ -const path = require('path') -module.exports = function createBaseConfig ( - { - siteConfig, - siteData, - sourceDir, - outDir, - publicPath, - themePath, - themeLayoutPath, - themeNotFoundPath, - isAlgoliaSearch, - markdown - }, - { debug } = {}, - isServer -) { - const Config = require('webpack-chain') - const { VueLoaderPlugin } = require('vue-loader') - const CSSExtractPlugin = require('mini-css-extract-plugin') - - const isProd = process.env.NODE_ENV === 'production' - const inlineLimit = 10000 - - const config = new Config() - - config - .mode(isProd && !debug ? 'production' : 'development') - .output.path(outDir) - .filename( - isProd ? 'assets/js/[name].[chunkhash:8].js' : 'assets/js/[name].js' - ) - .publicPath(isProd ? publicPath : '/') - - if (debug) { - config.devtool('source-map') - } else if (!isProd) { - config.devtool('cheap-module-eval-source-map') - } - - config.resolve - .set('symlinks', true) - .alias.set('@theme', themePath) - .set('@themeLayout', themeLayoutPath) - .set('@themeNotFound', themeNotFoundPath) - .set('@source', sourceDir) - .set('@app', path.resolve(__dirname, '../app')) - .set('@temp', path.resolve(__dirname, '../app/.temp')) - .set('@default-theme', path.resolve(__dirname, '../default-theme')) - .set( - '@AlgoliaSearchBox', - isAlgoliaSearch - ? path.resolve(__dirname, '../default-theme/AlgoliaSearchBox.vue') - : path.resolve(__dirname, './noopModule.js') - ) - .end() - .extensions.merge(['.js', '.jsx', '.vue', '.json', '.styl']) - .end() - .modules // prioritize our own - .add(path.resolve(__dirname, '../../node_modules')) - .add(path.resolve(__dirname, '../../../')) - .add('node_modules') - - // Load extra root mixins on demand. - const { activeHeaderLinks = true } = siteData.themeConfig - const rootMixinsLoadingConfig = { activeHeaderLinks } - for (const mixinName in rootMixinsLoadingConfig) { - const enabled = rootMixinsLoadingConfig[mixinName] - config.resolve.alias.set( - `@${mixinName}`, - enabled - ? path.resolve(__dirname, `../app/root-mixins/${mixinName}.js`) - : path.resolve(__dirname, './noopModule.js') - ) - } - - config.resolveLoader - .set('symlinks', true) - .modules // prioritize our own - .add(path.resolve(__dirname, '../../node_modules')) - .add(path.resolve(__dirname, '../../../')) - .add('node_modules') - - config.module.noParse(/^(vue|vue-router|vuex|vuex-router-sync)$/) - - const cacheDirectory = path.resolve( - __dirname, - '../../node_modules/.cache/vuepress' - ) - const cacheIdentifier = JSON.stringify({ - vuepress: require('../../package.json').version, - 'cache-loader': require('cache-loader').version, - 'vue-loader': require('vue-loader').version, - isProd, - isServer, - config: - (siteConfig.markdown ? JSON.stringify(siteConfig.markdown) : '') + - (siteConfig.chainWebpack || '').toString() + - (siteConfig.configureWebpack || '').toString() - }) - - function applyVuePipeline (rule) { - rule - .use('cache-loader') - .loader('cache-loader') - .options({ - cacheDirectory, - cacheIdentifier - }) - - rule - .use('vue-loader') - .loader('vue-loader') - .options({ - compilerOptions: { - preserveWhitespace: true - }, - cacheDirectory, - cacheIdentifier - }) - } - - const vueRule = config.module.rule('vue').test(/\.vue$/) - - applyVuePipeline(vueRule) - - const mdRule = config.module.rule('markdown').test(/\.md$/) - - applyVuePipeline(mdRule) - - mdRule - .use('markdown-loader') - .loader(require.resolve('./markdownLoader')) - .options({ sourceDir, markdown }) - - config.module - .rule('pug') - .test(/\.pug$/) - .use('pug-plain-loader') - .loader('pug-plain-loader') - .end() - - if (!siteConfig.evergreen) { - const libDir = path.join(__dirname, '..') - config.module - .rule('js') - .test(/\.js$/) - .exclude.add(filepath => { - // Always transpile lib directory - if (filepath.startsWith(libDir)) { - return false - } - // always transpile js in vue files - if (/\.vue\.js$/.test(filepath)) { - return false - } - // Don't transpile node_modules - return /node_modules/.test(filepath) - }) - .end() - .use('cache-loader') - .loader('cache-loader') - .options({ - cacheDirectory, - cacheIdentifier - }) - .end() - .use('babel-loader') - .loader('babel-loader') - .options({ - // do not pick local project babel config - babelrc: false, - presets: [require.resolve('@vue/babel-preset-app')] - }) - } - - config.module - .rule('images') - .test(/\.(png|jpe?g|gif)(\?.*)?$/) - .use('url-loader') - .loader('url-loader') - .options({ - limit: inlineLimit, - name: `assets/img/[name].[hash:8].[ext]` - }) - - // do not base64-inline SVGs. - // https://github.com/facebookincubator/create-react-app/pull/1180 - config.module - .rule('svg') - .test(/\.(svg)(\?.*)?$/) - .use('file-loader') - .loader('file-loader') - .options({ - name: `assets/img/[name].[hash:8].[ext]` - }) - - config.module - .rule('media') - .test(/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/) - .use('url-loader') - .loader('url-loader') - .options({ - limit: inlineLimit, - name: `assets/media/[name].[hash:8].[ext]` - }) - - config.module - .rule('fonts') - .test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i) - .use('url-loader') - .loader('url-loader') - .options({ - limit: inlineLimit, - name: `assets/fonts/[name].[hash:8].[ext]` - }) - - function createCSSRule (lang, test, loader, options) { - const baseRule = config.module.rule(lang).test(test) - const modulesRule = baseRule.oneOf('modules').resourceQuery(/module/) - const normalRule = baseRule.oneOf('normal') - - applyLoaders(modulesRule, true) - applyLoaders(normalRule, false) - - function applyLoaders (rule, modules) { - if (!isServer) { - if (isProd) { - rule.use('extract-css-loader').loader(CSSExtractPlugin.loader) - } else { - rule.use('vue-style-loader').loader('vue-style-loader') - } - } - - rule - .use('css-loader') - .loader(isServer ? 'css-loader/locals' : 'css-loader') - .options({ - modules, - localIdentName: `[local]_[hash:base64:8]`, - importLoaders: 1, - sourceMap: !isProd - }) - - rule - .use('postcss-loader') - .loader('postcss-loader') - .options( - Object.assign( - { - plugins: [require('autoprefixer')], - sourceMap: !isProd - }, - siteConfig.postcss - ) - ) - // rule.use('px2rem-loader') - // .loader('px2rem-loader') - // .options({ - // remUnit: 16 - // }) - if (loader) { - rule - .use(loader) - .loader(loader) - .options(options) - } - } - } - - createCSSRule('css', /\.css$/) - createCSSRule('postcss', /\.p(ost)?css$/) - createCSSRule('scss', /\.scss$/, 'sass-loader', siteConfig.scss) - createCSSRule( - 'sass', - /\.sass$/, - 'sass-loader', - Object.assign({ indentedSyntax: true }, siteConfig.sass) - ) - createCSSRule('less', /\.less$/, 'less-loader', siteConfig.less) - createCSSRule( - 'stylus', - /\.styl(us)?$/, - 'stylus-loader', - Object.assign( - { - preferPathResolver: 'webpack' - }, - siteConfig.stylus - ) - ) - - config.plugin('vue-loader').use(VueLoaderPlugin) - - if (isProd && !isServer) { - config.plugin('extract-css').use(CSSExtractPlugin, [ - { - filename: 'assets/css/styles.[chunkhash:8].css' - } - ]) - - // ensure all css are extracted together. - // since most of the CSS will be from the theme and very little - // CSS will be from async chunks - config.optimization.splitChunks({ - cacheGroups: { - styles: { - name: 'styles', - // necessary to ensure async chunks are also extracted - test: m => /css-extract/.test(m.type), - chunks: 'all', - enforce: true - } - } - }) - } - - // inject constants - config.plugin('injections').use(require('webpack/lib/DefinePlugin'), [ - { - BASE_URL: JSON.stringify(siteConfig.base || '/'), - GA_ID: siteConfig.ga ? JSON.stringify(siteConfig.ga) : false, - SW_ENABLED: !!siteConfig.serviceWorker, - VUEPRESS_VERSION: JSON.stringify(require('../../package.json').version), - LAST_COMMIT_HASH: JSON.stringify(getLastCommitHash()) - } - ]) - - return config -} - -function getLastCommitHash () { - const spawn = require('cross-spawn') - let hash - try { - hash = spawn - .sync('git', ['log', '-1', '--format=%h']) - .stdout.toString('utf-8') - .trim() - } catch (error) {} - return hash -} diff --git a/lib/webpack/createClientConfig.js b/lib/webpack/createClientConfig.js deleted file mode 100644 index 8c27663..0000000 --- a/lib/webpack/createClientConfig.js +++ /dev/null @@ -1,69 +0,0 @@ -module.exports = function createClientConfig (options, cliOptions) { - const path = require('path') - const WebpackBar = require('webpackbar') - const createBaseConfig = require('./createBaseConfig') - - const config = createBaseConfig(options, cliOptions) - - config - .entry('app') - .add(path.resolve(__dirname, '../app/clientEntry.js')) - - config.node - .merge({ - // prevent webpack from injecting useless setImmediate polyfill because Vue - // source contains it (although only uses it if it's native). - setImmediate: false, - global: false, - process: false, - // prevent webpack from injecting mocks to Node native modules - // that does not make sense for the client - dgram: 'empty', - fs: 'empty', - net: 'empty', - tls: 'empty', - child_process: 'empty' - }) - - // generate client manifest only during build - if (process.env.NODE_ENV === 'production') { - // This is a temp build of vue-server-renderer/client-plugin. - // TODO Switch back to original after problems are resolved. - // Fixes two things: - // 1. Include CSS in preload files - // 2. filter out useless styles.xxxxx.js chunk from mini-css-extract-plugin - // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/85 - config - .plugin('ssr-client') - .use(require('./ClientPlugin'), [{ - filename: 'manifest/client.json' - }]) - - config - .plugin('optimize-css') - .use(require('optimize-css-assets-webpack-plugin'), [{ - canPrint: false, - cssProcessorOptions: { - safe: true, - autoprefixer: { disable: true }, - mergeLonghand: false - } - }]) - } - - if (!cliOptions.debug) { - config - .plugin('bar') - .use(WebpackBar, [{ - name: 'Client', - color: '#41b883', - compiledIn: false - }]) - } - - if (options.siteConfig.chainWebpack) { - options.siteConfig.chainWebpack(config, false /* isServer */) - } - - return config -} diff --git a/lib/webpack/createServerConfig.js b/lib/webpack/createServerConfig.js deleted file mode 100644 index e9f0983..0000000 --- a/lib/webpack/createServerConfig.js +++ /dev/null @@ -1,58 +0,0 @@ -module.exports = function createServerConfig (options, cliOptions) { - const fs = require('fs') - const path = require('path') - const WebpackBar = require('webpackbar') - const createBaseConfig = require('./createBaseConfig') - const VueSSRServerPlugin = require('vue-server-renderer/server-plugin') - const CopyPlugin = require('copy-webpack-plugin') - - const config = createBaseConfig(options, cliOptions, true /* isServer */) - const { sourceDir, outDir } = options - - config - .target('node') - .externals([/^vue|vue-router$/]) - .devtool('source-map') - - // no need to minimize server build - config.optimization.minimize(false) - - config - .entry('app') - .add(path.resolve(__dirname, '../app/serverEntry.js')) - - config.output - .filename('server-bundle.js') - .libraryTarget('commonjs2') - - config - .plugin('ssr-server') - .use(VueSSRServerPlugin, [{ - filename: 'manifest/server.json' - }]) - - const publicDir = path.resolve(sourceDir, '.vuepress/public') - if (fs.existsSync(publicDir)) { - config - .plugin('copy') - .use(CopyPlugin, [[ - { from: publicDir, to: outDir } - ]]) - } - - if (!cliOptions.debug) { - config - .plugin('bar') - .use(WebpackBar, [{ - name: 'Server', - color: 'blue', - compiledIn: false - }]) - } - - if (options.siteConfig.chainWebpack) { - options.siteConfig.chainWebpack(config, true /* isServer */) - } - - return config -} diff --git a/lib/webpack/markdownLoader.js b/lib/webpack/markdownLoader.js deleted file mode 100644 index 3c49b74..0000000 --- a/lib/webpack/markdownLoader.js +++ /dev/null @@ -1,101 +0,0 @@ -const fs = require('fs') -const path = require('path') -const hash = require('hash-sum') -const { EventEmitter } = require('events') -const { getOptions } = require('loader-utils') -const { inferTitle, extractHeaders, parseFrontmatter } = require('../util') -const LRU = require('lru-cache') - -const cache = LRU({ max: 1000 }) -const devCache = LRU({ max: 1000 }) - -module.exports = function (src) { - const isProd = process.env.NODE_ENV === 'production' - const isServer = this.target === 'node' - const { markdown, sourceDir } = getOptions(this) - - // we implement a manual cache here because this loader is chained before - // vue-loader, and will be applied on the same file multiple times when - // selecting the individual blocks. - const file = this.resourcePath - const key = hash(file + src) - const cached = cache.get(key) - if (cached && (isProd || /\?vue/.test(this.resourceQuery))) { - return cached - } - - const frontmatter = parseFrontmatter(src) - const content = frontmatter.content - - if (!isProd && !isServer) { - const inferredTitle = inferTitle(frontmatter) - const headers = extractHeaders(content, ['h2', 'h3'], markdown) - delete frontmatter.content - - // diff frontmatter and title, since they are not going to be part of the - // returned component, changes in frontmatter do not trigger proper updates - const cachedData = devCache.get(file) - if (cachedData && ( - cachedData.inferredTitle !== inferredTitle || - JSON.stringify(cachedData.frontmatter) !== JSON.stringify(frontmatter) || - headersChanged(cachedData.headers, headers) - )) { - // frontmatter changed... need to do a full reload - module.exports.frontmatterEmitter.emit('update') - } - - devCache.set(file, { - headers, - frontmatter, - inferredTitle - }) - } - - // the render method has been augmented to allow plugins to - // register data during render - const { html, data: { hoistedTags, links }} = markdown.render(content) - - // check if relative links are valid - links && links.forEach(link => { - link = decodeURIComponent(link) - const shortname = link - .replace(/#.*$/, '') - .replace(/\.html$/, '.md') - const filename = shortname - .replace(/\/$/, '/README.md') - .replace(/^\//, sourceDir + '/') - const altname = shortname - .replace(/\/$/, '/index.md') - .replace(/^\//, sourceDir + '/') - const dir = path.dirname(this.resourcePath) - const file = path.resolve(dir, filename) - const altfile = altname !== filename ? path.resolve(dir, altname) : null - if (!fs.existsSync(file) && (!altfile || !fs.existsSync(altfile))) { - this.emitWarning( - new Error( - `\nFile for relative link "${link}" does not exist.\n` + - `(Resolved file: ${file})\n` - ) - ) - } - }) - - const res = ( - `\n` + - (hoistedTags || []).join('\n') - ) - cache.set(key, res) - return res -} - -function headersChanged (a, b) { - if (a.length !== b.length) return true - return a.some((h, i) => ( - h.title !== b[i].title || - h.level !== b[i].level - )) -} - -module.exports.frontmatterEmitter = new EventEmitter() diff --git a/lib/webpack/noopModule.js b/lib/webpack/noopModule.js deleted file mode 100644 index b1c6ea4..0000000 --- a/lib/webpack/noopModule.js +++ /dev/null @@ -1 +0,0 @@ -export default {} diff --git a/docs/.vuepress/public/logo.png b/logo.png similarity index 100% rename from docs/.vuepress/public/logo.png rename to logo.png diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a83c81c..0000000 --- a/package-lock.json +++ /dev/null @@ -1,16698 +0,0 @@ -{ - "name": "vuepress", - "version": "0.14.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz", - "integrity": "sha512-W7IeG4MoVf4oUvWfHUx9VG9if3E0xSUDf1urrnNYtC2ow1dz2ptvQ6YsJfyVXDuPTFXz66jkHhzMW7a5Eld7TA==", - "requires": { - "@babel/highlight": "7.0.0-beta.47" - } - }, - "@babel/core": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.47.tgz", - "integrity": "sha512-7EIuAX0UVnCgZ0E9tz9rFK0gd+aovwMA9bul+dnkmBQYLrJdas2EHMUSmaK67i1cyZpvgVvXhHtXJxC7wo3rlQ==", - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/generator": "7.0.0-beta.47", - "@babel/helpers": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "convert-source-map": "^1.1.0", - "debug": "^3.1.0", - "json5": "^0.5.0", - "lodash": "^4.17.5", - "micromatch": "^2.3.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.47.tgz", - "integrity": "sha512-fJP+9X+gqgTTZzTqrKJHwebPwt6S/e/4YuyRyKyWHAIirGgUwjRoZgbFci24wwGYMJW7nlkCSwWG7QvCVsG0eg==", - "requires": { - "@babel/types": "7.0.0-beta.47", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.47.tgz", - "integrity": "sha512-Pjxb/PrxyKWc7jcAXlawvNAQMxxY+tSSNC5wxJstJjpO10mocmGzBOqNYjxdvVhMb3d0BEPQ8mR+D65fFpZ+TA==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.47.tgz", - "integrity": "sha512-nv8d6TcDBb1CJMQzwab/e0rqyqoP9d2AQBjr4GdSiVRpJX4aiLEiLBm2XprdEb/sVIRmmBnVxPXJaHDsS/K2fw==", - "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-call-delegate": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.47.tgz", - "integrity": "sha512-Rx9TRmCCEP0pWau9gfR6ubcbbX3nVc4ImNY143ftC70jrKdSv5rS20yz2cmCilDzhexwGZQ3PFwOLKe3C/5aEg==", - "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-define-map": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.47.tgz", - "integrity": "sha512-pLB9RY7GZKcc/frzgfDY/HwdqxWPe60qMAvNUef1V1bDZ8i4AUgxAANgltFzj61t100WGhqaS0xGkALD+9VA+g==", - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.47.tgz", - "integrity": "sha512-1mwk27zmhSuMUcVWxw5ZKiPYfuWXviZNqgA4OvFBloPf9R+dKDhNgP2uUrkHh68ltVVc3Bup1nsbd/2KM5AxEw==", - "requires": { - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz", - "integrity": "sha512-0LSvt95XCYaOrDA5K68KkTyldKXizDwBnKACdYzQszp1GdbtzmSeGwFU5Ecw86fU6bkYXtDvkFTOQwk/WQSJPw==", - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz", - "integrity": "sha512-63j0i3YUW8CO//uQc3ACffJdIlYcIlysuHjMF0yzQhqKoQ/CUPv0hf3nBwdRGjiWrr3JcL6++NF4XmXdwSU+fA==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.47.tgz", - "integrity": "sha512-5BcKFhyzrsInlrfO/tGoe6khUuJzGfROD7oozF/5MWsKo/c3gVJfQ5y83lZ4XoTKJt/x4PQlLU0aHd/SJpYONA==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-gpipslnZw2hcVGADUtqQII9KF8FPpRZsVUXwKP/0EnWwtujRFSVL+u2Fh+VXODRAxFmTLo6eGcOr/Vfan0MqYw==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.47.tgz", - "integrity": "sha512-Rk43Ty+a6npu9znK22IqFlseStRGWxEHi2cjmLbbi63VGiseofdUtIJI65F9MTCuMTXAX7VbY/ghef1Jp5qpvw==", - "requires": { - "@babel/types": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.47.tgz", - "integrity": "sha512-CziMe30ZunAhe6j05oNOFOg7im1lcv3dYuMxrwBYVe9YdP4NHPU7a1wrDBUhaPmyqTIZDwGnFne7k1KP79SeGQ==", - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-simple-access": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.47.tgz", - "integrity": "sha512-NhnGhjwrhzGas4A/PoBDEtEPCGJHrzhaT6qGmo1hmkA2orG4UNi7KENC38DhJII0n2oUrKUuzTwgCvxKOTiHbw==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", - "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==" - }, - "@babel/helper-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-dafidvVkjJP5AIWkJspV+7RGj1jeNts0qYvlmVzqAGb6BmQzEldJr6ZPzrmlpW/AW1YJGdw7br2yiwvlCRqDvQ==", - "requires": { - "lodash": "^4.17.5" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.47.tgz", - "integrity": "sha512-Nmj3lUHQscD160asav2bZ3sMIjGwGY9r6Vrriy9TqH7bmaClKUKUs5Twv0htFWfOKNFLEeY/MaqiAXylr1GS2w==", - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-wrap-function": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-replace-supers": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.47.tgz", - "integrity": "sha512-yf2JAD1+xNTjavqazqknRgPfd6MbGfvfIcAkxWsPURynAwOMSs4zThED8ImT2d5a97rGPysRJcq1jNh2L0WYxg==", - "requires": { - "@babel/helper-member-expression-to-functions": "7.0.0-beta.47", - "@babel/helper-optimise-call-expression": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-simple-access": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.47.tgz", - "integrity": "sha512-sd2t3QDKjd+hHkJKaC2AX39l6oIil1N548oMZAtV5YHlVGoWWkAVGnPMxRg7ICEjIftCU3ZI6UeaogyEhF8t7Q==", - "requires": { - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz", - "integrity": "sha512-jx8GmxryT6Qy4+24W6M6TnVL9T8bxqdyg5UKHjxBdw0Y2Sano1n0WphUS2seuOugn04W2ZQLqGc0ut8nGe/taA==", - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-wrap-function": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.47.tgz", - "integrity": "sha512-SAasvh80Mz5q9x15dqH6z8jpM0WTBmxQSNZATSwJwhmWdme6r2gxpufIMr8LwQIJHmXmgNLmvh0zdWSbE/PR4Q==", - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helpers": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.47.tgz", - "integrity": "sha512-uWk7gIua2COEWLwZGxfF5Wq1bgXOt1V6xzWxqeFznrA6F1TUPiAhkK5zORiZEa5RAILp6Mswsn3xFjDyCpp3rQ==", - "requires": { - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.47.tgz", - "integrity": "sha512-d505K3Hth1eg0b2swfEF7oFMw3J9M8ceFg0s6dhCSxOOF+07WDvJ0HKT/YbK/Jk9wn8Wyr6HIRAUPKJ9Wfv8Rg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-TQMLYVIqQ0MqVS1Z7jsuv3HlEetLo/7EnDY9mGBZ4c4/WLD/mu+tFuLiK2/2QH5wgi5viRfJGs/+L5TaDzxWng==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.47", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-6yuCiF+ZZHPLgAa+0a6/teNeAMsWqY6AVtZA4NhCWnwP4OH0JrRaY7rwvFCJSqNGurf8rF65W9IucM/l0+HOCg==", - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47", - "@babel/plugin-syntax-class-properties": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.47.tgz", - "integrity": "sha512-sI+cO1okrlOyV4I63HDXf/SFsCr492HLjzNsMsd7Lk9WrViA+eQIboIiI9wHicozdgD1WrpZGJTjz7Z3xwl2Qw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-decorators": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.47.tgz", - "integrity": "sha512-tTYnPZzCrOm8NK+7lRi4LGxPaw6lErDsozNInM/FWOXGe7s2EpQnTa40S7/gLLNGvpNshYHdykJtKgfiar9qkA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-function-sent": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.47.tgz", - "integrity": "sha512-253O7PlXtV1LjJkRSMCzG7L16JaQE62AWFVUbbd/8LZI7evyGE5pP90d4R7V+ir/Ra17tL+nk9GfUpEKG7KT4A==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-wrap-function": "7.0.0-beta.47", - "@babel/plugin-syntax-function-sent": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.47.tgz", - "integrity": "sha512-WSS8EVGwHF1g0nQ7IFjiCtBOSyONLqVA3yOriJR1oJS+0HVjfvbee5XwfwsIvdtEIh6YKEnHik5yh54qu7C/PQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-ujUjQUyTxUWHfixRD7Y5Nm8VCgHSf6YgbM37LEnojKp5lPahZO42qJfDty+Kh0tEanpI5H8BLPkJbFSzx6TNEw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.47.tgz", - "integrity": "sha512-XMZavW6uior8KD4BeMavxF3PGrwVpIFlZk/GJQGkd3lOeOHil8nhHDuTWvsbsJptKFWMPkhGR18boNdxgmxyFQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-throw-expressions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.47.tgz", - "integrity": "sha512-BGJ96kIVi9NlojyZkpJNkdkxABt+VQT6hLQfILpNfFBJUzdOnZbVecXJUmoTAzg56Wse29XbY9bpNmocdNmtFQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-TCQqSmPrgVB0Txr6WzCpxJyLuVTb9KoT0+oECKELtF717bvHOI4woR7o8D8DFkXzVQeb7Kqfu5w05gsvPq591g==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "^4.1.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.47.tgz", - "integrity": "sha512-LCNGYTLpQAsvTmVmT/I2pz7dIh3Bu+9BLxqL7b3QfplsMQxNsoBBMend33Arb4EtPt5dX7KeeVof8tL0trDRRA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-vLoAuLSjHSenX3TQmri6ttQWZp3rEtGcRp4LgYEBQ012fN5h+KmcssvkCAqm6V6ozS5KzUWpBlZ6t7YhZG6oBw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.47.tgz", - "integrity": "sha512-Lv10BM3C+0Ki53lI7T9xZsSsgzQqfoQZq4pZj0F6tkK54E5BBSFfUxGavRE43CFXHbK0Hd9uMqmpGWPGtCvgAw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.47.tgz", - "integrity": "sha512-J2y7RAH2NwQ+ahJahj2eS1PqS2NWNWTDaEibqrE55VTJU7nPL8AhthRwIQfQkCH+8UIeL/T3Jh1iHIRkvJ6dXA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.47.tgz", - "integrity": "sha512-mCNj425dtBdO95z1jMKoW0H3nZnTy9tjsdIuLw94uS+y97hvmFkFQtffqH+WIwEGxGBWq1Pn0OGfk3E8GfkhgQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-function-sent": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.47.tgz", - "integrity": "sha512-S/jMyfNd+a/MbtUCvQ3wDC/Wt9Cftj/Q59bVROOX79DrWpKE9VL/kEeiIJzCNKetvDesUdDH+4xcXt3D0/5Rog==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.47.tgz", - "integrity": "sha512-ISVXJZw9Q2Q0pwcXNv3nfA1p9Ia0clDMTtYxlqIGE5/3WaIQoHkkeaOYsckBKiIIL0hfU+GEjL1g5hRBYPlMUA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.47.tgz", - "integrity": "sha512-5scuJzIYZY8M+A1ra8mcKANIwB5TtsRD6Aw94xZxfvnjhhVMFR5RYE9HshVlBrZVY+r3cJDNIQLJMC/fGJHImA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.47.tgz", - "integrity": "sha512-qAGv7jHtZWNWy4n23OzKLrVk+xfaEO4LYRK3zCMyudXRfB3FPaer6NJNjU5rebvJzC4wB2EVb2nPwVENNNh2jQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-UOGQCmzvNlZMQOuys7xPiTa2EjTT3xHuhUghcdJnYikqGV43obpIIaP+VDCWPvIT8g0QDIvmRWx5UefvkWXN+w==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.47.tgz", - "integrity": "sha512-Dmq+REMR95Syg+VjV3bh63DD/tDxdraNQ4ErAOXFobfSCDbfov9YGkqSJ4K61LHTQwinQ0+dIUlgdFL2kbedIw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-throw-expressions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.47.tgz", - "integrity": "sha512-v9DcO3cmp0maysKG7MMjHqHeGTY0/UY4cOuPckIZK3HHmUtQliSLeAw6eaLXGRUv4ZgaqX/T3dbi8YH7YeK4YQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-xiU+7RJAsqx+iZqWSQQWBu9ZDTruWimkg4puDSdRVfEwgZQdOtiU2LuO0+xGFyitJPHkKuje0WvK1tFu1dmxCw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.47.tgz", - "integrity": "sha512-/TXK3v6ipvmhMO81Y2Vjc7RYROkS2PcmRc+kvmU3CWA7r5I73KWg10UEW/fpWqCuoTCHHHXu1ZcZ5u+nduJeFw==", - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-8KPxKyE6kb9VRbHwQ8XKsg/IPlxHaOMRyg2WfyV5C4dCmXbRdHDJy4hZKB3o4rGxjggmC/Bx8Fh51/P7UNtTcA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.47.tgz", - "integrity": "sha512-V/u3Zdy40KjVQeyYUaQnCGiHQbRNJoc6IEtNDERltuW9vYPHS1n6YGc+EHKi8JVYT4kE6UHOjD+BrbCCV4kjRw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.47.tgz", - "integrity": "sha512-hzW/jL6TPBMHJXeXwzuxMN0PFAfjVD0UzATHrFSejY5A7SvhWWrv1cZ3K0/SzCXJ9LpMdxCNiREvVjeD/Tyx2g==", - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-define-map": "7.0.0-beta.47", - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-optimise-call-expression": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-V78qyzmjj4aq/tjpkMFbV5gPtrx7xdclW1Rn6vV9hIwMSMbtstYEXF4msy614MofvYj6gYbPbNfyhXFIUvz/xw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.47.tgz", - "integrity": "sha512-3AaXC9H7qPybJbSs/QMhhj9EZF9MYrb/HRytwki1tckaYifqCJquENIZxDAYmwsWIGIHiq34WqwPRMIsz/b5uQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-ofB5GwipMoaOH3Qyr5g5FpXWePhIAaD4zMDOoAHDYBPuLWxzAME8YQCa0S3HJf3eTu/HTN/c/G1gDwDB8Z/gKQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "^4.1.3" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.47.tgz", - "integrity": "sha512-r3xNVYTLVasjqTowIr6s+27oc5n7A5TKbB0/4u9FHjF7ONTWaggO8UFbbj07DOJ4Ll2RkigrZA8/D+w2nJ+XlA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-vyGG3kLIXpMuaPL485aqowdWFrxCxXtbzMXy9p1QTK5Q/+9UHpK9XoAVJZGknnsm091m0Ss7spo8uHaxbzYVog==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.47.tgz", - "integrity": "sha512-tfH5OMzV9fWLYJTzWDhoRJKr8kvBZWH26jiCgM0ayNq75ES/X947MqMNAgBjJdTAVEV2kOyks2ItgNAJT4rOUw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.47.tgz", - "integrity": "sha512-/5I/f8NCouugsRT6ORB1UjCP3N+Rgv/OB6SzmaeIUEpYYPM6D7WQ+4BaRYXQn4eqtOJmTgxDXYa8FgYtoeqP9A==", - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.47.tgz", - "integrity": "sha512-PxBw+52qWypwR76YfS2FlW4wZfp61SjIyt3OSPZeWnf0zVQWNVrlRRunJ7lBYudDYvyMwStAE/VynZ0fHtPgng==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.47.tgz", - "integrity": "sha512-zW84YqQ5Kt8+t5pYrnFhjWQP2w2wq6Nxz9pozxpnvXP+lhqyJPqNdWM1lcVApORpWL1BF7BlgP08yk+5MVRfGA==", - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.47.tgz", - "integrity": "sha512-MYoLyexybBJ9ODWWMsMFzxAQey68RzhQNPjfNAYPhPPB3X160EZ5qOjWxRS2rYNvuYAxs6guy5OdrDpESqFSrQ==", - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-simple-access": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.47.tgz", - "integrity": "sha512-bMQy3/jEZRpoUg7RdOouphBO8+7Sfjl7XrO84PtgBx4ck+ZPc4xOlBQyr2rkmsJNmmGLi42nnMI1cZZJT3LVnQ==", - "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.47.tgz", - "integrity": "sha512-rG7KioAFCLxZ33wNBqUoxPhtXOmVEvnZNIy9wv0fSbNIQr8lO1avZ7SeBL3OZduNvLocqrESt9Xhh1nzb/zOvA==", - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.47.tgz", - "integrity": "sha512-2IRZtdoPXJn7KSwrmp0xtLTZ0PnhlQxhcTZ0XZ5wfFXmsZ9vi6AK4whIZ2IXI/c2qrYK9FEYLwR5QRfL5Qe6eQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.47.tgz", - "integrity": "sha512-JN6ox2rH1xe6hlsd6/7d2kPjZSA97wH4oOdNOSaNqaFGEFuaP/Je4+ojHMgyHKU2nx9QHNBCTxHEj+ko+Ij6HQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.47.tgz", - "integrity": "sha512-UzQG8draO+30Y8eNEREuGBfmEHLL7WFxOjmTBbaTrbdOrm/znCUThqcuNz8cyn2nrZbln7M/loQ3stjf9Pt9fQ==", - "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.47", - "@babel/helper-get-function-arity": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.47.tgz", - "integrity": "sha512-JEPIiJyqYRfjOYUTZguLkb2HTwudReqLyOljpOXnJ/1ymwsiof4D6ul611DGlMxJMZJGQ6TBi59iY9GoJ6j4Iw==", - "requires": { - "regenerator-transform": "^0.12.3" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.47.tgz", - "integrity": "sha512-RhnhjYsOxmKDGa1ePM5RQWFBYe1PnEZAhXTNEeIwtw1jluEoLL+PCTZDbt/aAcAkZvqwIWccjkNM/FwKTd5Sxw==", - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-+o7/yb0Nrk4Gg/tnBgfBf+G1uGZbtkSluUnj8RyD37ajpDlWmysDjFEHSfktKcuD8YHeGz2M9AYNGcClk1fr/g==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-LFAozFdfT4bE2AQw2BnjzLufTX4GBsTUHUGRhT8XNoDYuGnV+7k9Yj6JU3/7csJc9u6W91PArYgoO+D56CMw6Q==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-+Rc6NihGoXcwAqAxbiumvzOYxRR0aUg1ZExfyHnI5QnQf0sf4xAfgT/YpGvEgLd5Ci0rka+IWSj54PhzZkhuTg==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.47.tgz", - "integrity": "sha512-ORfrfN/gQoRuI+xf+kOa2i/yvXfedFRgH+KtgoIrpUQom7OhexxzD280x80LMCIkdaVGzYhvlC3kdJkFMWAfUg==", - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.47.tgz", - "integrity": "sha512-PhPy5NUY5MT++fEr7/sxN1/ERSM2siHSbGgdkbqgDlyvf1NlU1HeqyfomHJEFE1Y4PX0hj+XmtjSAali/6XqYA==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-44nWn421tMVZ/A4+1uppzoAO7nrlwWzefMr9JUi5G+tXl0DLEtWy+F7L6zCVw19C4OAOA6WlolVro5CEs6g6AQ==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "^4.1.3" - } - }, - "@babel/preset-env": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.47.tgz", - "integrity": "sha512-ZFUgKdQDqw2H5TCMaWq6iDDO9+16RZPdDfOuoPID8Agm8I2MBlrqTI1MKWwqgEHICdZIOXkVszAMuuDTBwdzHA==", - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.47", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.47", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.47", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.47", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.47", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.47", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.47", - "@babel/plugin-transform-classes": "7.0.0-beta.47", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.47", - "@babel/plugin-transform-destructuring": "7.0.0-beta.47", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.47", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.47", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.47", - "@babel/plugin-transform-for-of": "7.0.0-beta.47", - "@babel/plugin-transform-function-name": "7.0.0-beta.47", - "@babel/plugin-transform-literals": "7.0.0-beta.47", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.47", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.47", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.47", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.47", - "@babel/plugin-transform-new-target": "7.0.0-beta.47", - "@babel/plugin-transform-object-super": "7.0.0-beta.47", - "@babel/plugin-transform-parameters": "7.0.0-beta.47", - "@babel/plugin-transform-regenerator": "7.0.0-beta.47", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.47", - "@babel/plugin-transform-spread": "7.0.0-beta.47", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.47", - "@babel/plugin-transform-template-literals": "7.0.0-beta.47", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.47", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.47", - "browserslist": "^3.0.0", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "@babel/preset-stage-2": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.47.tgz", - "integrity": "sha512-IabxIY3AAAHRy3GCGJQ3KBfRMR59OZJSMLke24Kwpwlvk09WEP5ERReRbfmUGJeEPeZK3rAt0oZBdF83Ri+C5Q==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-proposal-decorators": "7.0.0-beta.47", - "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.47", - "@babel/plugin-proposal-function-sent": "7.0.0-beta.47", - "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.47", - "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.47", - "@babel/preset-stage-3": "7.0.0-beta.47" - } - }, - "@babel/preset-stage-3": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.47.tgz", - "integrity": "sha512-JOOsIaC3sbcBPbRpELUij3xLE8ObIr7TjanKTExlMwc/Hvz0YG3/ioXmDbphvR9L2cb9a+QNIdjAyOebqDyaFw==", - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.47", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.47", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.47", - "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.47", - "@babel/plugin-syntax-import-meta": "7.0.0-beta.47" - } - }, - "@babel/runtime": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.47.tgz", - "integrity": "sha512-3IaakAC5B4bHJ0aCUKVw0pt+GruavdgWDFbf7TfKh7ZJ8yQuUp7af7MNwf3e+jH8776cjqYmMO1JNDDAE9WfrA==", - "requires": { - "core-js": "^2.5.3", - "regenerator-runtime": "^0.11.1" - } - }, - "@babel/template": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.47.tgz", - "integrity": "sha512-mAzrOCLwOb4jAobHi0kTwIkoamP1Do28c6zxvrDXjYSJFZHz6KGuzMaT0AV7ZCq7M3si7QypVVMVX2bE6IsuOg==", - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "lodash": "^4.17.5" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.47.tgz", - "integrity": "sha512-kYGGs//OnUnei+9TTldxlgf7llprj7VUeDKtG50+g+0k1g0yZyrkEgbyFheYFdnudR8IDEHOEXVsUuY82r5Aiw==", - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/generator": "7.0.0-beta.47", - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" - } - }, - "@babel/types": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.47.tgz", - "integrity": "sha512-MOP5pOosg7JETrVGg8OQyzmUmbyoSopT5j2HlblHsto89mPz3cmxzn1IA4UNUmnWKgeticSwfhS+Gdy25IIlBQ==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", - "dev": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@shellscape/koa-send": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@shellscape/koa-send/-/koa-send-4.1.3.tgz", - "integrity": "sha512-akNxJetq2ak8aj7U6ys+EYXfWY4k8keleDZJbHWvpuVDj0/PUbbOuPkeBYaie7C6d5fRNLK+0M1Puu8ywTlj3w==", - "requires": { - "debug": "^2.6.3", - "http-errors": "^1.6.1", - "mz": "^2.6.0", - "resolve-path": "^1.3.3" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "@shellscape/koa-static": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@shellscape/koa-static/-/koa-static-4.0.5.tgz", - "integrity": "sha512-0T2g2NtaO2zhbqR8EBACIGtBy+haodKb8PuJ17RGDXAJwhjkgghUKLrLEnm05zuiwupfYm2APIax6D2TwLoflA==", - "requires": { - "@shellscape/koa-send": "^4.1.0", - "debug": "^2.6.8" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "dev": true - }, - "@types/semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==", - "dev": true - }, - "@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", - "dev": true - }, - "@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "@vue/babel-preset-app": { - "version": "3.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.0.0-beta.11.tgz", - "integrity": "sha1-yLiJqnNGQFD5zT+dxiGVHYXCRQg=", - "requires": { - "@babel/plugin-syntax-jsx": "7.0.0-beta.47", - "@babel/plugin-transform-runtime": "7.0.0-beta.47", - "@babel/preset-env": "7.0.0-beta.47", - "@babel/preset-stage-2": "7.0.0-beta.47", - "@babel/runtime": "7.0.0-beta.47", - "babel-helper-vue-jsx-merge-props": "^2.0.3", - "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-transform-vue-jsx": "^4.0.1" - } - }, - "@vue/component-compiler-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.4.0.tgz", - "integrity": "sha512-LZyagnP+93GPiVHhu6HELEuHaSe83tfVrUgfl3ugwEc/k5yVbMu3OdaWrVqNo4hh1KK8o5fYOk2E/QpsfAxqiQ==", - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.7", - "postcss-selector-parser": "^5.0.0", - "prettier": "1.13.7", - "source-map": "^0.7.3", - "vue-template-es2015-compiler": "^1.6.0" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", - "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "@vue/test-utils": { - "version": "1.0.0-beta.28", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.28.tgz", - "integrity": "sha512-uVbFJG0g/H9hf2pgWUdhvQYItRGzQ44cMFf00wp0YEo85pxuvM9e3mx8QLQfx6R2CogxbK4CvV7qvkLblehXeQ==", - "dev": true, - "requires": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.4" - } - }, - "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", - "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==" - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", - "requires": { - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==" - }, - "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==" - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", - "requires": { - "@xtuc/long": "4.2.1" - } - }, - "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "@webpack-contrib/config-loader": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-contrib/config-loader/-/config-loader-1.2.1.tgz", - "integrity": "sha512-C7XsS6bXft0aRlyt7YCLg+fm97Mb3tWd+i5fVVlEl0NW5HKy8LoXVKj3mB7ECcEHNEEdHhgzg8gxP+Or8cMj8Q==", - "requires": { - "@webpack-contrib/schema-utils": "^1.0.0-beta.0", - "chalk": "^2.1.0", - "cosmiconfig": "^5.0.2", - "is-plain-obj": "^1.1.0", - "loud-rejection": "^1.6.0", - "merge-options": "^1.0.1", - "minimist": "^1.2.0", - "resolve": "^1.6.0", - "webpack-log": "^1.1.2" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - } - } - } - }, - "@webpack-contrib/schema-utils": { - "version": "1.0.0-beta.0", - "resolved": "https://registry.npmjs.org/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz", - "integrity": "sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg==", - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chalk": "^2.3.2", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "webpack-log": "^1.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "requires": { - "acorn": "^5.0.0" - } - }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", - "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", - "dev": true - } - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, - "add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", - "dev": true - }, - "agentkeepalive": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", - "integrity": "sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=" - }, - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" - }, - "algoliasearch": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.32.0.tgz", - "integrity": "sha512-C8oQnPTf0wPuyD2jSZwtBAPvz+lHOE7zRIPpgXGBuNt6ZNcC4omsbytG26318rT77a8h4759vmIp6n9p8iw4NA==", - "requires": { - "agentkeepalive": "^2.2.0", - "debug": "^2.6.8", - "envify": "^4.0.0", - "es6-promise": "^4.1.0", - "events": "^1.1.0", - "foreach": "^2.0.5", - "global": "^4.3.2", - "inherits": "^2.0.1", - "isarray": "^2.0.1", - "load-script": "^1.0.0", - "object-keys": "^1.0.11", - "querystring-es3": "^0.2.1", - "reduce": "^1.0.1", - "semver": "^5.1.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", - "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "app-root-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", - "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=" - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autocomplete.js": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.33.0.tgz", - "integrity": "sha512-J0F7BkPhYwXvfs8Skp6v2e2IHYv0SL8INyHYwb7nUpvKHr96g6zS8RNEFGEfEuO3ND+XUsesEMM59LlwQoLfoA==", - "requires": { - "immediate": "^3.2.3" - } - }, - "autoprefixer": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", - "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", - "requires": { - "browserslist": "^3.2.8", - "caniuse-lite": "^1.0.30000864", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^6.0.23", - "postcss-value-parser": "^3.2.3" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true - }, - "babel-eslint": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", - "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" - } - }, - "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" - } - }, - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } - } - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-vue-jsx-merge-props": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", - "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", - "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } - }, - "babel-loader": { - "version": "8.0.0-beta.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.3.tgz", - "integrity": "sha512-yvaAx7cBEjh+R2oGL2vIPmveO6daS5TYP2FSPq4b6CUYjU/ilD4HHyfLIa9KUj6OKBcR9fQcl1NvUOTWNaJ6mw==", - "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz", - "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-vue-jsx": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-4.0.1.tgz", - "integrity": "sha512-wbOz7ITB5cloLSjKUU1hWn8zhR+Dwah/RZiTiJY/CQliCwhowmzu6m7NEF+y5EJX/blDzGjRtZvC10Vdb3Q7vw==", - "requires": { - "esutils": "^2.0.2" - } - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", - "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" - }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - } - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "requires": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - } - }, - "cache-loader": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.5.tgz", - "integrity": "sha512-enWKEQ4kO3YreDFd7AtVRjtJBmNiqh/X9hVDReu0C4qm8gsGmySkwuWtdc+N5O+vq5FzxL1mIZc30NyXCB7o/Q==", - "requires": { - "loader-utils": "^1.1.0", - "mkdirp": "^0.5.1", - "neo-async": "^2.5.0", - "schema-utils": "^0.4.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "caniuse-db": { - "version": "1.0.30000926", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000926.tgz", - "integrity": "sha512-ajs1ieCm/kpu8w5lAC78bY0lxua7YoEwzOVwnr3VfUat7u1uZgyXQLqLMetbBCdmAcVmQrfFYKb5Od+QBxcRVg==" - }, - "caniuse-lite": { - "version": "1.0.30000926", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000926.tgz", - "integrity": "sha512-diMkEvxfFw09SkbErCLmw/1Fx1ZZe9xfWm4aeA2PUffB48x1tfZeMsK5j4BW7zN7Y4PdqmPVVdG2eYjE5IRTag==" - }, - "canvas-nest.js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/canvas-nest.js/-/canvas-nest.js-2.0.4.tgz", - "integrity": "sha512-Wgc+39fQBIP8fm9+Rq+Zt6+QLHZRsIKpaOQPL5KcWPlXTAalCKY4KCuklY7qzzZqBRF/t2APIrk+PuRw6ZlOog==", - "requires": { - "size-sensor": "^0.2.0" - } - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - }, - "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "requires": { - "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - } - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", - "optional": true, - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", - "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", - "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "requires": { - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - } - } - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" - }, - "consola": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/consola/-/consola-1.4.5.tgz", - "integrity": "sha512-movqq3MbyXbSf7cG/x+EbO3VjKQVZPB/zeB5+lN1TuBYh9BWDemLQca9P+a4xpO4lXva9rz+Bd8XyqlH136Lww==", - "requires": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "lodash": "^4.17.5", - "std-env": "^1.1.0" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "conventional-changelog": { - "version": "1.1.24", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz", - "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^1.6.6", - "conventional-changelog-atom": "^0.2.8", - "conventional-changelog-codemirror": "^0.3.8", - "conventional-changelog-core": "^2.0.11", - "conventional-changelog-ember": "^0.3.12", - "conventional-changelog-eslint": "^1.0.9", - "conventional-changelog-express": "^0.3.6", - "conventional-changelog-jquery": "^0.1.0", - "conventional-changelog-jscs": "^0.1.0", - "conventional-changelog-jshint": "^0.3.8", - "conventional-changelog-preset-loader": "^1.1.8" - } - }, - "conventional-changelog-angular": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", - "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", - "dev": true, - "requires": { - "compare-func": "^1.3.1", - "q": "^1.5.1" - } - }, - "conventional-changelog-atom": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz", - "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-cli": { - "version": "1.3.22", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz", - "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==", - "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog": "^1.1.24", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "tempfile": "^1.1.1" - }, - "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } - } - }, - "conventional-changelog-codemirror": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz", - "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-core": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz", - "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==", - "dev": true, - "requires": { - "conventional-changelog-writer": "^3.0.9", - "conventional-commits-parser": "^2.1.7", - "dateformat": "^3.0.0", - "get-pkg-repo": "^1.0.0", - "git-raw-commits": "^1.3.6", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^1.3.6", - "lodash": "^4.2.1", - "normalize-package-data": "^2.3.5", - "q": "^1.5.1", - "read-pkg": "^1.1.0", - "read-pkg-up": "^1.0.1", - "through2": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "conventional-changelog-ember": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz", - "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-eslint": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz", - "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-express": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz", - "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-jquery": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", - "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", - "dev": true, - "requires": { - "q": "^1.4.1" - } - }, - "conventional-changelog-jscs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", - "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", - "dev": true, - "requires": { - "q": "^1.4.1" - } - }, - "conventional-changelog-jshint": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz", - "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==", - "dev": true, - "requires": { - "compare-func": "^1.3.1", - "q": "^1.5.1" - } - }, - "conventional-changelog-preset-loader": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz", - "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==", - "dev": true - }, - "conventional-changelog-writer": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz", - "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==", - "dev": true, - "requires": { - "compare-func": "^1.3.1", - "conventional-commits-filter": "^1.1.6", - "dateformat": "^3.0.0", - "handlebars": "^4.0.2", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "semver": "^5.5.0", - "split": "^1.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } - } - }, - "conventional-commits-filter": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", - "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", - "dev": true, - "requires": { - "is-subset": "^0.1.1", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", - "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", - "trim-off-newlines": "^1.0.0" - }, - "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } - } - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "cookies": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.3.tgz", - "integrity": "sha512-+gixgxYSgQLTaTIilDHAdlNPZDENDQernEMiIcZpYYP14zgHsCt4Ce1FEjFtcp6GefhozebB6orvhAAWx/IS0A==", - "requires": { - "depd": "~1.1.2", - "keygrip": "~1.0.3" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - } - } - }, - "core-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", - "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "cssnano": "^3.10.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "object-assign": "^4.1.1", - "postcss": "^5.0.6", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha1-PvqHMj67hj5mls67AILUj/PW96E=" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "docsearch.js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.2.tgz", - "integrity": "sha512-qyQ+raZlHSkfdpFg8wJNhjiz9WsjdQkRGe2LiiKS6vIIsouNNole2Kg/9UvGoUIK9PLLl31uL3I4YDwnrXt5yQ==", - "requires": { - "algoliasearch": "^3.24.5", - "autocomplete.js": "0.33.0", - "hogan.js": "^3.0.2", - "request": "^2.87.0", - "stack-utils": "^1.0.1", - "to-factory": "^1.0.0", - "zepto": "^1.2.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-event-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", - "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", - "dev": true - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editorconfig": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz", - "integrity": "sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==", - "dev": true, - "requires": { - "@types/node": "^10.11.7", - "@types/semver": "^5.5.0", - "commander": "^2.19.0", - "lru-cache": "^4.1.3", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz", - "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==" - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "requires": { - "esprima": "^4.0.0", - "through": "~2.3.4" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-inject": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", - "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "eslint": { - "version": "4.19.1", - "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - } - } - }, - "eslint-plugin-jest": { - "version": "21.27.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-21.27.2.tgz", - "integrity": "sha512-0E4OIgBJVlAmf1KfYFtZ3gYxgUzC5Eb3Jzmrc9ikI1OY+/cM8Kh72Ti7KfpeHNeD3HJNf9SmEfmvQLIz44Hrhw==", - "dev": true - }, - "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", - "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", - "dev": true, - "requires": { - "vue-eslint-parser": "^2.0.3" - } - }, - "eslint-plugin-vue-libs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-3.0.0.tgz", - "integrity": "sha512-f3sZnuJ52zZzEEJXqJBU2G4MRozXIwom88srkpQoFgOqzq3RVl+hsg0Apto5OCIUYpccOWs6Qs8dYwKF9RZC5w==", - "dev": true, - "requires": { - "babel-eslint": "^8.2.3", - "eslint-plugin-vue": "^4.5.0" - } - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "3.5.4", - "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - }, - "events": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", - "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "extract-from-css": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", - "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", - "dev": true, - "requires": { - "css": "^2.1.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-glob": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.4.tgz", - "integrity": "sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-babel-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.1.0.tgz", - "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", - "dev": true, - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.0.tgz", - "integrity": "sha512-4Oh4eI3S9OueVV41AgJ1oLjpaJUhbJ7JDGOMhe0AFqoSejl5Q2nn3eGglAzRUKVKZE8jG5MNn66TjCJMAnpsWA==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "optional": true, - "requires": { - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "optional": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" - }, - "get-pkg-repo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", - "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "meow": "^3.3.0", - "normalize-package-data": "^2.3.0", - "parse-github-repo-url": "^1.3.0", - "through2": "^2.0.0" - }, - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - } - } - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "git-raw-commits": { - "version": "1.3.6", - "resolved": "http://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", - "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", - "dev": true, - "requires": { - "dargs": "^4.0.1", - "lodash.template": "^4.0.2", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true, - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "git-semver-tags": { - "version": "1.3.6", - "resolved": "http://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", - "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", - "dev": true, - "requires": { - "meow": "^4.0.0", - "semver": "^5.5.0" - }, - "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true, - "requires": { - "ini": "^1.3.2" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "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-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "^2.0.0" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" - }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "optional": true, - "requires": { - "delegate": "^3.1.2" - } - }, - "got": { - "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "gray-matter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.1.tgz", - "integrity": "sha512-p0MADBEBl1CohV7nRZ8sVinBexEe3CKVhh0A0QIHKpcbRoxB0VgeMpRPjW/HBHIPLAKrpIIIm5mZ6hKu3E+iQg==", - "requires": { - "js-yaml": "^3.11.0", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, - "hogan.js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", - "integrity": "sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=", - "requires": { - "mkdirp": "0.3.0", - "nopt": "1.0.10" - }, - "dependencies": { - "mkdirp": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" - } - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "requires": { - "domelementtype": "1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "http-assert": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.4.0.tgz", - "integrity": "sha512-tPVv62a6l3BbQoM/N5qo969l0OFxqpnQzNUPeYfTP6Spo4zkgWeDBD1D5thI7sDLg7jCCihXTLB0X8UtdyAy8A==", - "requires": { - "deep-equal": "~1.0.1", - "http-errors": "~1.7.1" - } - }, - "http-errors": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.1.tgz", - "integrity": "sha512-jWEUgtZWGSMba9I1N3gc1HmvpBUaNC9vDdA46yScAdp+C5rdEuKWUBLWTQpW9FwSWSbYYs++b6SDCxf9UEJzfw==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "requires": { - "postcss": "^6.0.1" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-generator-function": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", - "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "requires": { - "punycode": "2.x.x" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", - "dev": true, - "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - } - } - }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "javascript-state-machine": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/javascript-state-machine/-/javascript-state-machine-2.4.0.tgz", - "integrity": "sha1-2L4x7DjySsGhgy8LZy/DzV95yW4=" - }, - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=" - }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", - "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", - "dev": true, - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", - "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "dev": true, - "requires": { - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", - "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", - "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", - "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" - } - }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", - "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - } - }, - "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", - "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", - "dev": true, - "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" - } - }, - "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", - "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", - "dev": true, - "requires": { - "pretty-format": "^23.6.0" - } - }, - "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", - "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true - }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", - "dev": true - }, - "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", - "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", - "dev": true, - "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" - } - }, - "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", - "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", - "dev": true, - "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", - "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", - "dev": true - }, - "jest-serializer-vue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-1.0.0.tgz", - "integrity": "sha512-7w6mWpfOkFgFFEprjSSnnHLevWo0Fz+gUgKDDr/hxVD4Zi74ovCU1bauXXwSBzJuRPiDg6QcaTVUpVD6R1GJSA==", - "dev": true, - "requires": { - "pretty": "2.0.0" - } - }, - "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", - "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", - "dev": true, - "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", - "semver": "^5.5.0" - } - }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "dev": true, - "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" - } - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", - "dev": true, - "requires": { - "merge-stream": "^1.0.1" - } - }, - "joi": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", - "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", - "requires": { - "hoek": "4.x.x", - "isemail": "3.x.x", - "topo": "2.x.x" - } - }, - "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" - }, - "js-beautify": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.9.tgz", - "integrity": "sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==", - "dev": true, - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.2", - "glob": "^7.1.3", - "mkdirp": "~0.5.0", - "nopt": "~4.0.1" - }, - "dependencies": { - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keygrip": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", - "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==" - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", - "dev": true - }, - "koa": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.6.2.tgz", - "integrity": "sha512-KdnBFhTgh9ysMMoYe4J4fLvaKjT7mF3nRYV8MjxLzx6qywFNeptqi4xevyUltg1fZl2CFJ+HeLXuCGx07Yvl/A==", - "requires": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.7.1", - "debug": "~3.1.0", - "delegates": "^1.0.0", - "depd": "^1.1.2", - "destroy": "^1.0.4", - "error-inject": "^1.0.0", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^1.2.0", - "koa-is-json": "^1.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", - "requires": { - "any-promise": "^1.1.0" - } - }, - "koa-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/koa-connect/-/koa-connect-2.0.1.tgz", - "integrity": "sha512-MNaiK5og8aj4I+tx8l+jSW24QX7aaQyZemV821VPY+AOJ8XUbrrAj9AzrpZKDQp5jTmylAZW2sXhTz2+SRqZog==" - }, - "koa-convert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", - "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", - "requires": { - "co": "^4.6.0", - "koa-compose": "^3.0.0" - } - }, - "koa-is-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", - "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" - }, - "koa-mount": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/koa-mount/-/koa-mount-3.0.0.tgz", - "integrity": "sha1-CMqzuD0xRC7Yt+dcVLGr65IuwZc=", - "requires": { - "debug": "^2.6.1", - "koa-compose": "^3.2.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "koa-range": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/koa-range/-/koa-range-0.3.0.tgz", - "integrity": "sha1-NYjjSWRzqDmhvSZNKkKx2FvX/qw=", - "requires": { - "stream-slice": "^0.1.2" - } - }, - "koa-send": { - "version": "4.1.3", - "resolved": "http://registry.npmjs.org/koa-send/-/koa-send-4.1.3.tgz", - "integrity": "sha512-3UetMBdaXSiw24qM2Mx5mKmxLKw5ZTPRjACjfhK6Haca55RKm9hr/uHDrkrxhSl5/S1CKI/RivZVIopiatZuTA==", - "requires": { - "debug": "^2.6.3", - "http-errors": "^1.6.1", - "mz": "^2.6.0", - "resolve-path": "^1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "koa-static": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-4.0.3.tgz", - "integrity": "sha512-JGmxTuPWy4bH7bt6gD/OMWkhprawvRmzJSr8TWKmTL4N7+IMv3s0SedeQi5S4ilxM9Bo6ptkCyXj/7wf+VS5tg==", - "requires": { - "debug": "^3.1.0", - "koa-send": "^4.1.3" - } - }, - "koa-webpack": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/koa-webpack/-/koa-webpack-4.0.0.tgz", - "integrity": "sha512-P+j2TzeZAqFwscd/dlLykk/sxwr6wQ5Tp3FYDhqv1+y9aRIffTPnu2zK+1BhfM+Kyh8bepU1jFR420maE+Vajw==", - "requires": { - "app-root-path": "^2.0.1", - "merge-options": "^1.0.0", - "webpack-dev-middleware": "^3.0.0", - "webpack-hot-client": "^3.0.0", - "webpack-log": "^1.1.1" - } - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "requires": { - "package-json": "^4.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "leancloud-realtime": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/leancloud-realtime/-/leancloud-realtime-4.2.1.tgz", - "integrity": "sha512-3iFhTtp+a50Z+KaCe1TUM3M6o3tHUxwhd/uijSHfd+dYrOtPGhjXb+VOH5EGRHJcd1O8z2sE9MEKv7vdIaTNUw==", - "requires": { - "axios": "^0.18.0", - "babel-runtime": "^6.6.1", - "base64-arraybuffer": "^0.1.5", - "debug": "^3.1.0", - "eventemitter3": "^3.0.0", - "javascript-state-machine": "^2.3.5", - "lodash": "^4.17.10", - "protobufjs": "^5.0.1", - "uuid": "^3.0.0", - "ws": "^5.2.1" - }, - "dependencies": { - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" - } - } - }, - "leancloud-realtime-plugin-live-query": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/leancloud-realtime-plugin-live-query/-/leancloud-realtime-plugin-live-query-1.1.2.tgz", - "integrity": "sha512-p4Z1bVlRE/Xh2z12KIbnlGdKibYJXeO+pKAIPoC81pAWpelKcBzIqzLBjeO8LmChgriWBvEnaHFH2KrH4HVRpQ==" - }, - "leancloud-storage": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-3.11.1.tgz", - "integrity": "sha512-gFENGL7IJImv5yeurMp9+xnDMKP0U++P4qOSAUOjzFY1IyHUWsYHnsMpL9uxqG88Nen5qdnl/LfKitpeCY5egA==", - "requires": { - "debug": "^3.1.0", - "es6-promise": "4.2.3", - "eventemitter3": "^2.0.3", - "leancloud-realtime": "^4.2.0", - "leancloud-realtime-plugin-live-query": "^1.1.2", - "localstorage-memory": "^1.0.1", - "md5": "^2.0.0", - "superagent": "^3.3.1", - "underscore": "^1.8.3", - "uuid": "^3.3.2" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.3.tgz", - "integrity": "sha512-vLf5iali3jKqlJoo6SryDwe3nxCmiueNjbjLWDIpNbAcKnQXAsAdZk+pM17nSYp3AQMbTmAQVCQSeDLfA87SNA==" - } - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "linkify-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", - "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lint-staged": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.3.0.tgz", - "integrity": "sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "commander": "^2.14.1", - "cosmiconfig": "^5.0.2", - "debug": "^3.1.0", - "dedent": "^0.7.0", - "execa": "^0.9.0", - "find-parent-dir": "^0.3.0", - "is-glob": "^4.0.0", - "is-windows": "^1.0.2", - "jest-validate": "^23.5.0", - "listr": "^0.14.1", - "lodash": "^4.17.5", - "log-symbols": "^2.2.0", - "micromatch": "^3.1.8", - "npm-which": "^3.0.1", - "p-map": "^1.1.1", - "path-is-inside": "^1.0.2", - "pify": "^3.0.0", - "please-upgrade-node": "^3.0.2", - "staged-git-files": "1.1.1", - "string-argv": "^0.0.2", - "stringify-object": "^3.2.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "dependencies": { - "p-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", - "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", - "dev": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" - }, - "loader-runner": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", - "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==" - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "localstorage-memory": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/localstorage-memory/-/localstorage-memory-1.0.3.tgz", - "integrity": "sha512-t9P8WB6DcVttbw/W4PIE8HOqum8Qlvx5SjR6oInwR9Uia0EEmyUeBh7S+weKByW+l/f45Bj4L/dgZikGFDM6ng==" - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "requires": { - "lodash._reinterpolate": "~3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "requires": { - "lodash._reinterpolate": "~3.0.0" - } - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - } - } - }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.0.2.tgz", - "integrity": "sha512-AFM/woBI8QDJMS/9+MmsBMT5/AR+ImfOsunQZTZhzcTmna3rIzAzbOh5E0l6mlFM/i9666BpUtkqQ9bS7WApCg==" - }, - "markdown-it-container": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz", - "integrity": "sha1-ABm0P9Au7+zi8ZYKKJX7qBpARpU=" - }, - "markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=" - }, - "markdown-it-table-of-contents": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.3.tgz", - "integrity": "sha512-x/OdaRzLYxAjmB+jIVlXuE3nX7tZTLDQxm58RkgjTLyQ+I290jYQvPS9cJjVN6SM3U6K6CHKYNgUtPNZmLblYQ==" - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - } - }, - "merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", - "dev": true - }, - "merge-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", - "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", - "requires": { - "is-plain-obj": "^1.1" - } - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mini-css-extract-plugin": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz", - "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==", - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "http://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "optional": true - }, - "nanoassert": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", - "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" - }, - "nanobus": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/nanobus/-/nanobus-4.4.0.tgz", - "integrity": "sha512-Hv9USGyH8EsPy0o8pPWE7x3YRIfuZDgMBirzjU6XLebhiSK2g53JlfqgolD0c39ne6wXAfaBNcIAvYe22Bav+Q==", - "requires": { - "nanoassert": "^1.1.0", - "nanotiming": "^7.2.0", - "remove-array-items": "^1.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "nanoscheduler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/nanoscheduler/-/nanoscheduler-1.0.3.tgz", - "integrity": "sha512-jBbrF3qdU9321r8n9X7yu18DjP31Do2ItJm3mWrt90wJTrnDO+HXpoV7ftaUglAtjgj9s+OaCxGufbvx6pvbEQ==", - "requires": { - "nanoassert": "^1.1.0" - } - }, - "nanotiming": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/nanotiming/-/nanotiming-7.3.1.tgz", - "integrity": "sha512-l3lC7v/PfOuRWQa8vV29Jo6TG10wHtnthLElFXs4Te4Aas57Fo4n1Q8LH9n+NDh9riOzTVvb2QNBhTS4JUKNjw==", - "requires": { - "nanoassert": "^1.1.0", - "nanoscheduler": "^1.0.2" - } - }, - "natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-cache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.0.tgz", - "integrity": "sha512-obRu6/f7S024ysheAjoYFEEBqqDWv4LOMNJEuO8vMeEw2AT4z+NCzO4hlc2lhI4vATzbCQv6kke9FVdx0RbCOw==", - "dev": true, - "requires": { - "clone": "2.x", - "lodash": "4.x" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "node-notifier": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", - "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "npm-path": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", - "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", - "dev": true, - "requires": { - "which": "^1.2.10" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", - "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true, - "requires": { - "commander": "^2.9.0", - "npm-path": "^2.0.2", - "which": "^1.2.10" - } - }, - "nprogress": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz", - "integrity": "sha512-iOfMsuGMPbM/bZZ731gwtAXfXjIkR97BXqUXsPGIzBaQzpvqajsoIFlR+z+Q7FLcq2TmV4JFGo80d98ttfRzhA==", - "requires": { - "cssnano": "^3.10.0", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "pako": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", - "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-github-repo-url": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", - "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - }, - "please-upgrade-node": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", - "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "http://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "http://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "http://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "requires": { - "postcss": "^5.0.16" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "http://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", - "requires": { - "cosmiconfig": "^4.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", - "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^6.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^0.4.0" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "http://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "http://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "http://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", - "requires": { - "postcss": "^6.0.1" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "requires": { - "postcss": "^5.0.5" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "http://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "http://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "http://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "http://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "http://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "http://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "prettier": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", - "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==" - }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" - }, - "prismjs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz", - "integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==", - "requires": { - "clipboard": "^2.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" - }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "px2rem": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/px2rem/-/px2rem-0.5.0.tgz", - "integrity": "sha1-JLOmz3TRSttO13byB4cdmJPkEOI=", - "dev": true, - "requires": { - "chalk": "~0.5.1", - "commander": "~2.6.0", - "css": "~2.2.0", - "extend": "~3.0.0", - "fs-extra": "~0.16.3" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - } - }, - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", - "dev": true - }, - "fs-extra": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.16.5.tgz", - "integrity": "sha1-GtZh+myGyWCM0bSe/G/Og0k5p1A=", - "dev": true, - "requires": { - "graceful-fs": "^3.0.5", - "jsonfile": "^2.0.0", - "rimraf": "^2.2.8" - } - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.0" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.1" - } - }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - } - } - }, - "px2rem-loader": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/px2rem-loader/-/px2rem-loader-0.1.9.tgz", - "integrity": "sha512-3Ew8At5W/HHIIUe/KZk+FBRRb20KtgP1N1c/BnMlXk6LNkqrFmUIUF35GF/evzNdj/Q63iWJpkmn/c5qSMplRg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "px2rem": "^0.5.0" - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.1.tgz", - "integrity": "sha1-FPouX/H8VgcDoCDLtfuqtpFWWAQ=", - "requires": { - "object-keys": "~1.0.0" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.4.tgz", - "integrity": "sha512-p2I0fY+TbSLD2/VFTFb/ypEHxs3e3AjU0DzttdPqk2bSmDhfSh5E54b86Yc6XhUa5KykK1tgbvZ4Nr82oCJWkQ==", - "requires": { - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true - }, - "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "register-service-worker": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.5.2.tgz", - "integrity": "sha512-XNqSZHJsFGnvEGkg/2IrCp6G8Ya3qLj4mq0bSHil/dfdO82LOxGnMnJjAD9MYCvf/8cDCO8pL+1i65yzmP7rPQ==" - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "remove-array-items": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/remove-array-items/-/remove-array-items-1.1.1.tgz", - "integrity": "sha512-MXW/jtHyl5F1PZI7NbpS8SOtympdLuF20aoWJT5lELR1p/HJDd5nqW8Eu9uLh/hCRY3FgvrIT5AwDCgBODklcA==" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "renderkid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", - "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", - "requires": { - "css-select": "^1.1.0", - "dom-converter": "~0.2", - "htmlparser2": "~3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, - "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "resolve-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", - "requires": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - } - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "requires": { - "aproba": "^1.1.1" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "*" - } - }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "optional": true - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "^5.0.3" - } - }, - "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", - "dev": true - }, - "size-sensor": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/size-sensor/-/size-sensor-0.2.2.tgz", - "integrity": "sha512-dL/IdBhGDvCHlxQgxryqJNEnSWQz4xvKntsW028CgaJLBLSw8rpi7oUVSM4+xnaHbH+BFkXz6H5aMStfH8v2Pg==" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "requires": { - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" - }, - "staged-git-files": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", - "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "std-env": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-1.3.1.tgz", - "integrity": "sha512-KI2F2pPJpd3lHjng+QLezu0eq+QDtXcv1um016mhOPAJFHKL+09ykK5PUBWta2pZDC8BVV0VPya08A15bUXSLQ==", - "requires": { - "is-ci": "^1.1.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "stream-slice": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", - "integrity": "sha1-LcT04bk2+xPz6zmi3vGTJ5jQeks=" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string-argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", - "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", - "dev": true - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "requires": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" - } - }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - }, - "dependencies": { - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", - "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==" - }, - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "uuid": "^2.0.1" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, - "terser": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.0.tgz", - "integrity": "sha512-KQC1QNKbC/K1ZUjLIWsezW7wkTJuB4v9ptQQUNOzAPVHuVf2LrwEcB0I9t2HTEYUwAFVGiiS6wc+P4ClLDc5FQ==", - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.6" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", - "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "terser": "^3.8.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - } - } - }, - "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "time-fix-plugin": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/time-fix-plugin/-/time-fix-plugin-2.0.5.tgz", - "integrity": "sha512-veHRiEsQ50KSrfdhkZiFvZIjRoyfyfxpgskD+P7uVQAcNe6rIMLZ8vhjFRE2XrPqQdy+4CF+jXsWAlgVy9Bfcg==" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tiny-emitter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", - "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==", - "optional": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-factory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz", - "integrity": "sha1-hzivi9lxIK0dQEeXKtpVY7+UebE=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - } - } - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "toml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", - "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==" - }, - "topo": { - "version": "2.0.2", - "resolved": "http://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "requires": { - "hoek": "4.x.x" - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "requires": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uc.micro": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", - "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==" - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==" - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-join": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-3.0.0.tgz", - "integrity": "sha1-JugROs4ZXqMND8OBhuRUAPnOpnI=" - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "valine": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/valine/-/valine-1.3.4.tgz", - "integrity": "sha512-UNGP8Eo+X9aKa6OisuTkIEIQffXjKQjPw3YfZfw/WZXWQAbJZizWBkSjxkLyeQDo3B/q4qhXHPUClvGNOfEwdA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "vue": { - "version": "2.5.21", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.21.tgz", - "integrity": "sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ==" - }, - "vue-canvas-nest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vue-canvas-nest/-/vue-canvas-nest-2.0.0.tgz", - "integrity": "sha512-YUKwbDDEB36NlEvU/Et6S68LaP+RQatEQIJZuL1f0nGIp5h8r+WjsWmwAZK/pt2c7FeXvWWNmuHUcY+539EPbA==", - "requires": { - "canvas-nest.js": "2.0.3" - }, - "dependencies": { - "canvas-nest.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/canvas-nest.js/-/canvas-nest.js-2.0.3.tgz", - "integrity": "sha512-zL+AN9alP5fl/Ek2gZMpWS4Hoz5jMf1NonYPvdsU5SV++m8/b45EUnTje6GUs1998q6wGISYYRHiWho1JXGM6w==", - "requires": { - "size-sensor": "^0.2.0" - } - } - } - }, - "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "http://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } - } - }, - "vue-hot-reload-api": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.1.tgz", - "integrity": "sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ==" - }, - "vue-jest": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-2.6.0.tgz", - "integrity": "sha512-kVgKGcycJ1ce3tUc48JKFSSXsbRNy5QOCAcK9k1aYDRD0m6tTbbFm8Q8yGkfsXLyFeUsvO1OEgsCYxZeD5GL2g==", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "chalk": "^2.1.0", - "extract-from-css": "^0.4.4", - "find-babel-config": "^1.1.0", - "js-beautify": "^1.6.14", - "node-cache": "^4.1.1", - "object-assign": "^4.1.1", - "source-map": "^0.5.6", - "tsconfig": "^7.0.0", - "vue-template-es2015-compiler": "^1.6.0" - } - }, - "vue-loader": { - "version": "15.4.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.4.2.tgz", - "integrity": "sha512-nVV27GNIA9MeoD8yQ3dkUzwlAaAsWeYSWZHsu/K04KCD339lW0Jv2sJWsjj3721SP7sl2lYdPmjcHgkWQSp5bg==", - "requires": { - "@vue/component-compiler-utils": "^2.0.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-router": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz", - "integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg==" - }, - "vue-server-renderer": { - "version": "2.5.21", - "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.5.21.tgz", - "integrity": "sha512-bAkOYZ5DnmQKv3RboNbmCB4LReF2tIE20EgUeWrz/87aVkpMihf3FVK+8DT45nyN4k9iSQOhsyem49fq++cF8w==", - "requires": { - "chalk": "^1.1.3", - "hash-sum": "^1.0.2", - "he": "^1.1.0", - "lodash.template": "^4.4.0", - "lodash.uniq": "^4.5.0", - "resolve": "^1.2.0", - "serialize-javascript": "^1.3.0", - "source-map": "0.5.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-template-compiler": { - "version": "2.5.21", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz", - "integrity": "sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==", - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", - "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" - }, - "vuepress-html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==", - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "vuepress-theme-vue": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vuepress-theme-vue/-/vuepress-theme-vue-1.1.0.tgz", - "integrity": "sha512-oYbfWkeaQ6aUU8sl8fMzLnBnvsd23V0wkiqI0bR3Tq3mlI8EJu26PFOyyF7KvJu0qNo/lcL7CDSmX7ymUVpnvw==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "4.28.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz", - "integrity": "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - } - }, - "webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", - "requires": { - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "range-parser": "^1.0.3", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - } - } - }, - "webpack-hot-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-3.0.0.tgz", - "integrity": "sha512-6k91015hZ4Okkz8u6OzRgJygEL+3J3ay6HVZhWBF3tT2P0rZJ0mgca39dotJxngggUm3S8707c0vrcynn1IzEQ==", - "requires": { - "json-stringify-safe": "^5.0.1", - "loglevelnext": "^1.0.2", - "strip-ansi": "^4.0.0", - "uuid": "^3.1.0", - "webpack-log": "^1.1.1", - "ws": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" - } - } - } - }, - "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-merge": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.5.tgz", - "integrity": "sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ==", - "requires": { - "lodash": "^4.17.5" - } - }, - "webpack-serve": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/webpack-serve/-/webpack-serve-1.0.4.tgz", - "integrity": "sha512-WhI9PMY2YLFliZhDsQFE5Os/On5Py6DGZpeBJyDM8xl0cspxgvXmWFywACn2YWWDgowqIxRqveyGh2RwdFWTNQ==", - "requires": { - "@shellscape/koa-static": "^4.0.4", - "@webpack-contrib/config-loader": "^1.1.1", - "chalk": "^2.3.0", - "clipboardy": "^1.2.2", - "cosmiconfig": "^5.0.2", - "debug": "^3.1.0", - "find-up": "^2.1.0", - "get-port": "^3.2.0", - "import-local": "^1.0.0", - "killable": "^1.0.0", - "koa": "^2.4.1", - "koa-webpack": "^4.0.0", - "lodash": "^4.17.5", - "loud-rejection": "^1.6.0", - "meow": "^5.0.0", - "nanobus": "^4.3.1", - "opn": "^5.1.0", - "resolve": "^1.6.0", - "time-fix-plugin": "^2.0.0", - "update-notifier": "^2.3.0", - "url-join": "3.0.0", - "v8-compile-cache": "^2.0.0", - "webpack-hot-client": "^3.0.0", - "webpack-log": "^1.1.2" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - } - } - } - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "webpackbar": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-2.6.4.tgz", - "integrity": "sha512-uQzJwuX172E+Vnk2NRFSM1hZBMCXd2CIpRUl1hr5tbAndTGVnDmYXQKHsbgbCKQXFJKKAl8EHYsdeauJZu2Qvg==", - "requires": { - "chalk": "^2.4.1", - "consola": "^1.4.3", - "figures": "^2.0.0", - "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-update": "^2.3.0", - "pretty-time": "^1.1.0", - "schema-utils": "^1.0.0", - "std-env": "^1.3.1", - "table": "^4.0.3" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=" - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "workbox-background-sync": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz", - "integrity": "sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-broadcast-cache-update": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz", - "integrity": "sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-build": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.6.3.tgz", - "integrity": "sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g==", - "requires": { - "babel-runtime": "^6.26.0", - "common-tags": "^1.4.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.2", - "joi": "^11.1.1", - "lodash.template": "^4.4.0", - "pretty-bytes": "^4.0.2", - "stringify-object": "^3.2.2", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^3.6.3", - "workbox-broadcast-cache-update": "^3.6.3", - "workbox-cache-expiration": "^3.6.3", - "workbox-cacheable-response": "^3.6.3", - "workbox-core": "^3.6.3", - "workbox-google-analytics": "^3.6.3", - "workbox-navigation-preload": "^3.6.3", - "workbox-precaching": "^3.6.3", - "workbox-range-requests": "^3.6.3", - "workbox-routing": "^3.6.3", - "workbox-strategies": "^3.6.3", - "workbox-streams": "^3.6.3", - "workbox-sw": "^3.6.3" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "workbox-cache-expiration": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz", - "integrity": "sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-cacheable-response": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz", - "integrity": "sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-core": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz", - "integrity": "sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ==" - }, - "workbox-google-analytics": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz", - "integrity": "sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig==", - "requires": { - "workbox-background-sync": "^3.6.3", - "workbox-core": "^3.6.3", - "workbox-routing": "^3.6.3", - "workbox-strategies": "^3.6.3" - } - }, - "workbox-navigation-preload": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz", - "integrity": "sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-precaching": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.6.3.tgz", - "integrity": "sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-range-requests": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz", - "integrity": "sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-routing": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.6.3.tgz", - "integrity": "sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-strategies": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.6.3.tgz", - "integrity": "sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-streams": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.6.3.tgz", - "integrity": "sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w==", - "requires": { - "workbox-core": "^3.6.3" - } - }, - "workbox-sw": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.6.3.tgz", - "integrity": "sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg==" - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - } - } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } - }, - "ylru": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", - "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==" - }, - "yorkie": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-1.0.3.tgz", - "integrity": "sha512-D6MU1N72vv/as9VvDBS8syz8FS9gDPUwP6ILp/vU/PYnTdHrK4qeC7qNabc/CrEtI4mNpWX2dxVvzktQBh8BAA==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - } - } - }, - "zepto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", - "integrity": "sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g=" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 75301a0..0000000 --- a/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "name": "vuepress", - "version": "0.14.1", - "description": "Minimalistic doc generator with Vue component based layout system", - "main": "lib/index.js", - "bin": { - "vuepress": "bin/vuepress.js" - }, - "scripts": { - "dev": "node bin/vuepress dev docs", - "build": "node bin/vuepress build docs", - "lint": "eslint --fix --ext .js,.vue bin/ lib/ test/", - "deploy-gh": "yarn build && bash scripts/deploy-gh.sh", - "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s", - "release": "bash scripts/release.sh", - "test": "node test/prepare.js && jest --config test/jest.config.js" - }, - "lint-staged": { - "*.{js,vue}": [ - "eslint --fix", - "git add" - ] - }, - "dependencies": { - "@babel/core": "7.0.0-beta.47", - "@vue/babel-preset-app": "3.0.0-beta.11", - "autoprefixer": "^8.2.0", - "babel-loader": "8.0.0-beta.3", - "cache-loader": "^1.2.2", - "canvas-nest.js": "^2.0.3", - "chalk": "^2.3.2", - "chokidar": "^2.0.3", - "commander": "^2.15.1", - "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^4.5.1", - "cross-spawn": "^6.0.5", - "css-loader": "^0.28.11", - "diacritics": "^1.3.0", - "docsearch.js": "^2.5.2", - "escape-html": "^1.0.3", - "file-loader": "^1.1.11", - "fs-extra": "^5.0.0", - "globby": "^8.0.1", - "gray-matter": "^4.0.1", - "js-yaml": "^3.11.0", - "koa-connect": "^2.0.1", - "koa-mount": "^3.0.0", - "koa-range": "^0.3.0", - "koa-static": "^4.0.2", - "leancloud-storage": "^3.10.0", - "loader-utils": "^1.1.0", - "lodash.throttle": "^4.1.1", - "lru-cache": "^4.1.2", - "markdown-it": "^8.4.1", - "markdown-it-anchor": "^5.0.2", - "markdown-it-container": "^2.0.0", - "markdown-it-emoji": "^1.4.0", - "markdown-it-table-of-contents": "^0.4.0", - "mini-css-extract-plugin": "^0.4.1", - "nprogress": "^0.2.0", - "optimize-css-assets-webpack-plugin": "^4.0.0", - "portfinder": "^1.0.13", - "postcss-loader": "^2.1.5", - "prismjs": "^1.13.0", - "register-service-worker": "^1.4.1", - "semver": "^5.5.0", - "stylus": "^0.54.5", - "stylus-loader": "^3.0.2", - "toml": "^2.3.3", - "url-loader": "^1.0.1", - "valine": "^1.3.0", - "vue": "^2.5.16", - "vue-canvas-nest": "^2.0.0", - "vue-loader": "^15.2.4", - "vue-router": "^3.0.1", - "vue-server-renderer": "^2.5.16", - "vue-template-compiler": "^2.5.16", - "vuepress-html-webpack-plugin": "^3.2.0", - "webpack": "^4.8.1", - "webpack-chain": "^4.6.0", - "webpack-merge": "^4.1.2", - "webpack-serve": "^1.0.2", - "webpackbar": "^2.6.1", - "workbox-build": "^3.1.0" - }, - "devDependencies": { - "@vue/test-utils": "^1.0.0-beta.16", - "babel-core": "^7.0.0-0", - "babel-jest": "^23.0.0", - "conventional-changelog-cli": "^1.3.22", - "eslint": "^4.19.1", - "eslint-plugin-jest": "^21.15.1", - "eslint-plugin-vue-libs": "^3.0.0", - "jest": "^23.0.0", - "jest-serializer-vue": "^1.0.0", - "lint-staged": "^7.0.4", - "px2rem-loader": "^0.1.9", - "vue-jest": "^2.6.0", - "vuepress": "^1.0.2", - "vuepress-theme-vue": "^1.1.0", - "yorkie": "^1.0.3" - }, - "engines": { - "node": ">=8" - }, - "browserslist": [ - ">1%" - ] -} diff --git a/prism-tomorrow.css b/prism-tomorrow.css deleted file mode 100644 index 16f6e2c..0000000 --- a/prism-tomorrow.css +++ /dev/null @@ -1,125 +0,0 @@ -/** - * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML - * Based on https://github.com/chriskempson/tomorrow-theme - * @author Rose Pritchard - */ - -code[class*='language-'], -pre[class*='language-'] { - color: #ccc; - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*='language-'] { - padding: 1em; - margin: 0.5em 0; - overflow: auto; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #2d2d2d; -} - -/* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.block-comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #999; -} - -.token.punctuation { - color: #45526b; -} - -.token.tag, -.token.attr-name, -.token.namespace, -.token.deleted { - /* color: #3683d6; */ - color: red; -} - -.token.function-name { - /* color: #6196cc; */ - color: red; -} - -.token.boolean, -.token.number, -.token.function { - color: #6a46d1; -} - -.token.property, -.token.class-name, -.token.constant, -.token.symbol { - color: #6a46d1; -} - -.token.selector, -.token.important, -.token.atrule, -.token.keyword, -.token.builtin { - /* color: #45526b; */ - color: #3683d6; -} - -.token.string, -.token.char, -.token.attr-value, -.token.regex, -.token.variable { - /* color: #3683d6; */ - color:#DD1144; -} - -.token.operator, -.token.entity, -.token.url { - /* color: #45526b; */ - color: #3683d6; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.inserted { - color: green; -} diff --git a/scripts/deploy-gh.sh b/scripts/deploy-gh.sh deleted file mode 100644 index 6deaa67..0000000 --- a/scripts/deploy-gh.sh +++ /dev/null @@ -1,9 +0,0 @@ - -cd docs/.vuepress/dist -git config --global user.email "luoyunchong@foxmail.com" -git config --global user.name "luoyunchong" -git init -git add -A -git commit -m 'deploy' -git push -f git@github.com:luoyunchong/vuepress-docs.git master:gh-pages -cd ../../../ \ No newline at end of file diff --git a/scripts/release.sh b/scripts/release.sh deleted file mode 100644 index 5014309..0000000 --- a/scripts/release.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -echo "Select a option to release (input a serial number)" -echo - -select VERSION in patch minor major "Specific Version" - do - echo - if [[ $REPLY =~ ^[1-4]$ ]]; then - if [[ $REPLY == 4 ]]; then - read -p "Enter a specific version: " -r VERSION - echo - if [[ -z $REPLY ]]; then - VERSION=$REPLY - fi - fi - - read -p "Release $VERSION - are you sure? (y/n) " -n 1 -r - echo - - if [[ $REPLY =~ ^[Yy]$ || -z $REPLY ]]; then - # pre release task - npm run lint - npm run test - - # bump version - npm version $VERSION - NEW_VERSION=$(node -p "require('./package.json').version") - echo Releasing ${NEW_VERSION} ... - - # npm release - npm whoami - npm publish - echo "✅ Released to npm." - - # github release - git add CHANGELOG.md - git commit -m "chore: changelog" - git push - git push origin refs/tags/v${NEW_VERSION} - echo "✅ Released to Github." - else - echo Cancelled - fi - break - else - echo Invalid \"${REPLY}\" - echo "To continue, please input a serial number(1-4) of an option." - echo - fi - done - diff --git a/test/app/Content.spec.js b/test/app/Content.spec.js deleted file mode 100644 index 8049bef..0000000 --- a/test/app/Content.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -import Content from '@/app/components/Content' -import { mount } from '@vue/test-utils' -import { getRouter, modeTestRunner } from '../util' - -function test (mode, localVue) { - it(`${mode} - add custom class by default.`, () => { - const wrapper = mount(Content, { - localVue, - router: getRouter() - }) - expect(wrapper.contains('.custom')).toBe(true) - }) - - it(`${mode} - remove custom when custom set to false.`, () => { - const wrapper = mount(Content, { - // https://vue-test-utils.vuejs.org/api/options.html#context - context: { - props: { - custom: false - } - }, - localVue, - router: getRouter() - }) - expect(wrapper.contains('.custom')).toBe(false) - }) -} - -modeTestRunner('Content', test) - diff --git a/test/default-theme/DropdownLink.spec.js b/test/default-theme/DropdownLink.spec.js deleted file mode 100644 index ef868a7..0000000 --- a/test/default-theme/DropdownLink.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { mount, RouterLinkStub } from '@vue/test-utils' -import DropdownLink from '@/default-theme/DropdownLink.vue' -import { modeTestRunner } from '../util' - -function test (mode, localVue) { - it(`$${mode} - renders dropdown link.`, () => { - const item = { - text: 'VuePress', - items: [ - { - text: 'Guide', - link: '/guide/' - }, - { - text: 'Config Reference', - link: '/config/' - } - ] - } - const wrapper = mount(DropdownLink, { - localVue, - stubs: { - 'router-link': RouterLinkStub - }, - propsData: { item } - }) - expect(wrapper.html()).toMatchSnapshot() - }) -} - -modeTestRunner('DropdownLink', test) diff --git a/test/default-theme/NavLink.spec.js b/test/default-theme/NavLink.spec.js deleted file mode 100644 index 86e501f..0000000 --- a/test/default-theme/NavLink.spec.js +++ /dev/null @@ -1,34 +0,0 @@ -import { mount, RouterLinkStub } from '@vue/test-utils' -import { modeTestRunner } from '../util' -import NavLink from '@/default-theme/NavLink.vue' - -function test (mode, localVue) { - it(`$${mode} - renders nav link with internal link`, () => { - const item = { - link: '/', - text: 'VuePress' - } - const wrapper = mount(NavLink, { - localVue, - stubs: { - 'router-link': RouterLinkStub - }, - propsData: { item } - }) - expect(wrapper.html()).toMatchSnapshot() - }) - - it(`$${mode} - renders nav link with external link`, () => { - const item = { - link: 'http://vuejs.org/', - text: 'Vue' - } - const wrapper = mount(NavLink, { - localVue, - propsData: { item } - }) - expect(wrapper.html()).toMatchSnapshot() - }) -} - -modeTestRunner('NavLink', test) diff --git a/test/default-theme/__snapshots__/DropdownLink.spec.js.snap b/test/default-theme/__snapshots__/DropdownLink.spec.js.snap deleted file mode 100644 index a302d21..0000000 --- a/test/default-theme/__snapshots__/DropdownLink.spec.js.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`DropdownLink $i18n - renders dropdown link. 1`] = ` - -`; - -exports[`DropdownLink $simple - renders dropdown link. 1`] = ` - -`; diff --git a/test/default-theme/__snapshots__/NavLink.spec.js.snap b/test/default-theme/__snapshots__/NavLink.spec.js.snap deleted file mode 100644 index 4b9cd02..0000000 --- a/test/default-theme/__snapshots__/NavLink.spec.js.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`NavLink $i18n - renders nav link with external link 1`] = ` - - Vue - - -`; - -exports[`NavLink $i18n - renders nav link with internal link 1`] = `VuePress`; - -exports[`NavLink $simple - renders nav link with external link 1`] = ` - - Vue - - -`; - -exports[`NavLink $simple - renders nav link with internal link 1`] = `VuePress`; diff --git a/test/docs-simple/README.md b/test/docs-simple/README.md deleted file mode 100644 index 9e126f9..0000000 --- a/test/docs-simple/README.md +++ /dev/null @@ -1 +0,0 @@ -# Hello Simple diff --git a/test/hoc.js b/test/hoc.js deleted file mode 100644 index 219b214..0000000 --- a/test/hoc.js +++ /dev/null @@ -1,19 +0,0 @@ -const Component = { - props: ['name'], - render (h) { - return h('p', { - class: ['component', this.name] - }, this.name) - } -} - -// When the child component is a pure presentation component, -// we want to be able to display a sub-component with minimal info, -// rather than stubbing it directly. -export function mockComponent (name) { - return { - render (h) { - return h(Component, { props: { name }}) - } - } -} diff --git a/test/jest.config.js b/test/jest.config.js deleted file mode 100644 index f5980c9..0000000 --- a/test/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -// https://github.com/facebook/jest/tree/master/packages/babel-jest -// TODO remove 'babel-core@^7.0.0-0' when babel-jest can work with '@babel/core' - -const path = require('path') - -module.exports = { - rootDir: path.resolve(__dirname, '..'), - verbose: true, - testURL: 'http://localhost/', - moduleFileExtensions: [ - 'js', - 'vue' - ], - moduleNameMapper: { - '^@/(.*)$': '/lib/$1' - }, - transform: { - '^.+\\.js$': '/node_modules/babel-jest', - '.*\\.(vue)$': '/node_modules/vue-jest' - }, - snapshotSerializers: [ - '/node_modules/jest-serializer-vue' - ] -} diff --git a/test/markdown/__snapshots__/containers.spec.js.snap b/test/markdown/__snapshots__/containers.spec.js.snap deleted file mode 100644 index f09d7b9..0000000 --- a/test/markdown/__snapshots__/containers.spec.js.snap +++ /dev/null @@ -1,35 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`containers danger 1`] = ` -
                                        -

                                        WARNING

                                        -

                                        I am a danger

                                        -
                                        -`; - -exports[`containers tip 1`] = ` -
                                        -

                                        TIP

                                        -

                                        I am a tip

                                        -
                                        -`; - -exports[`containers tip-override 1`] = ` -
                                        -

                                        提示

                                        -

                                        I am a tip

                                        -
                                        -`; - -exports[`containers v-pre 1`] = ` -
                                        -

                                        I am a v-pre

                                        -
                                        -`; - -exports[`containers warning 1`] = ` -
                                        -

                                        WARNING

                                        -

                                        I am a warning

                                        -
                                        -`; diff --git a/test/markdown/__snapshots__/highlight.spec.js.snap b/test/markdown/__snapshots__/highlight.spec.js.snap deleted file mode 100644 index 4435911..0000000 --- a/test/markdown/__snapshots__/highlight.spec.js.snap +++ /dev/null @@ -1,6 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`highlight should highlight code 1`] = ` -
                                        new Vue()
                                        -
                                        -`; diff --git a/test/markdown/__snapshots__/highlightLines.spec.js.snap b/test/markdown/__snapshots__/highlightLines.spec.js.snap deleted file mode 100644 index 793a306..0000000 --- a/test/markdown/__snapshots__/highlightLines.spec.js.snap +++ /dev/null @@ -1,20 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`highlightLines highlight multiple lines 1`] = ` -
                                        -
                                         
                                        -
                                         
                                        -
                                        -
                                         
                                        -
                                         
                                        -
                                        -
                                        -
                                        const app = new Vue({ render, router }) app.$mount('#app') -`; - -exports[`highlightLines highlight single line 1`] = ` -
                                        -
                                         
                                        -
                                        -
                                        new Vue() -`; diff --git a/test/markdown/__snapshots__/hoist.spec.js.snap b/test/markdown/__snapshots__/hoist.spec.js.snap deleted file mode 100644 index b622990..0000000 --- a/test/markdown/__snapshots__/hoist.spec.js.snap +++ /dev/null @@ -1,30 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`hoist Should keep script and style when not using hoist 1`] = ` -

                                        H1

                                        - - -

                                        H2

                                        -`; - -exports[`hoist Should miss script and style when using hoist 1`] = ` -

                                        H1

                                        -

                                        H2

                                        -`; - -exports[`hoist Should miss script and style when using hoist 2`] = ` -Object { - "hoistedTags": Array [ - , - , - ], -} -`; diff --git a/test/markdown/__snapshots__/lineNumers.spec.js.snap b/test/markdown/__snapshots__/lineNumers.spec.js.snap deleted file mode 100644 index b2b71eb..0000000 --- a/test/markdown/__snapshots__/lineNumers.spec.js.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`lineNumbers should lineNumbers work with highlightLines 1`] = ` - -
                                        - -
                                        -
                                         
                                        -
                                        -
                                        new Vue() -
                                        - -
                                        - -`; - -exports[`lineNumbers should render lineNumbers 1`] = ` - -
                                        -
                                        new Vue()
                                        -
                                        -
                                        - -
                                        - -`; diff --git a/test/markdown/__snapshots__/link.spec.js.snap b/test/markdown/__snapshots__/link.spec.js.snap deleted file mode 100644 index 930f5e3..0000000 --- a/test/markdown/__snapshots__/link.spec.js.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`link should render external links correctly 1`] = ` -

                                        - vue - - -

                                        -`; - -exports[`link should render external links correctly 2`] = ` -

                                        - vue - - -

                                        -`; - -exports[`link should render external links correctly 3`] = ` -

                                        - some link with code - - -

                                        -`; diff --git a/test/markdown/__snapshots__/snippet.spec.js.snap b/test/markdown/__snapshots__/snippet.spec.js.snap deleted file mode 100644 index 3c97bcd..0000000 --- a/test/markdown/__snapshots__/snippet.spec.js.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`snippet import snippet 1`] = ` -
                                        export default function () {
                                        -  // ..
                                        -}
                                        -
                                        -`; - -exports[`snippet import snippet with highlight multiple lines 1`] = ` -
                                        -
                                         
                                        -
                                         
                                        -
                                         
                                        -
                                        -
                                        export default function () { // .. } -`; - -exports[`snippet import snippet with highlight single line 1`] = ` -
                                        -
                                         
                                        -
                                        -
                                         
                                        -
                                        -
                                        export default function () { // .. } -`; diff --git a/test/markdown/containers.spec.js b/test/markdown/containers.spec.js deleted file mode 100644 index dd4fdb4..0000000 --- a/test/markdown/containers.spec.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Md, getFragment } from './util' -import containers from '@/markdown/containers.js' - -const mdC = Md().use(containers) - -describe('containers', () => { - const containerLabels = ['tip', 'tip-override', 'warning', 'danger', 'v-pre'] - containerLabels.forEach(label => { - test(label, async () => { - const input = await getFragment(`container-${label}`) - const output = mdC.render(input) - expect(output).toMatchSnapshot() - }) - }) -}) diff --git a/test/markdown/fragments/code-highlightLines-multiple.md b/test/markdown/fragments/code-highlightLines-multiple.md deleted file mode 100644 index 1f597b1..0000000 --- a/test/markdown/fragments/code-highlightLines-multiple.md +++ /dev/null @@ -1,8 +0,0 @@ -``` js {1-2,4-5} -const app = new Vue({ - render, - router -}) - -app.$mount('#app') -``` diff --git a/test/markdown/fragments/code-highlightLines-single.md b/test/markdown/fragments/code-highlightLines-single.md deleted file mode 100644 index 3cf996b..0000000 --- a/test/markdown/fragments/code-highlightLines-single.md +++ /dev/null @@ -1,3 +0,0 @@ -``` js {1} -new Vue() -``` diff --git a/test/markdown/fragments/code-snippet-highlightLines-multiple.md b/test/markdown/fragments/code-snippet-highlightLines-multiple.md deleted file mode 100644 index 01aef2d..0000000 --- a/test/markdown/fragments/code-snippet-highlightLines-multiple.md +++ /dev/null @@ -1 +0,0 @@ -<<< @/test/markdown/fragments/snippet.js{1-3} diff --git a/test/markdown/fragments/code-snippet-highlightLines-single.md b/test/markdown/fragments/code-snippet-highlightLines-single.md deleted file mode 100644 index 1916b68..0000000 --- a/test/markdown/fragments/code-snippet-highlightLines-single.md +++ /dev/null @@ -1 +0,0 @@ -<<< @/test/markdown/fragments/snippet.js{1,3} diff --git a/test/markdown/fragments/code-snippet.md b/test/markdown/fragments/code-snippet.md deleted file mode 100644 index 65e9148..0000000 --- a/test/markdown/fragments/code-snippet.md +++ /dev/null @@ -1 +0,0 @@ -<<< @/test/markdown/fragments/snippet.js diff --git a/test/markdown/fragments/code.md b/test/markdown/fragments/code.md deleted file mode 100644 index af4a84a..0000000 --- a/test/markdown/fragments/code.md +++ /dev/null @@ -1,3 +0,0 @@ -``` js -new Vue() -``` diff --git a/test/markdown/fragments/container-danger.md b/test/markdown/fragments/container-danger.md deleted file mode 100644 index 2f2aa62..0000000 --- a/test/markdown/fragments/container-danger.md +++ /dev/null @@ -1,3 +0,0 @@ -::: danger -I am a danger -::: diff --git a/test/markdown/fragments/container-tip-override.md b/test/markdown/fragments/container-tip-override.md deleted file mode 100644 index 2ba47c3..0000000 --- a/test/markdown/fragments/container-tip-override.md +++ /dev/null @@ -1,3 +0,0 @@ -::: tip 提示 -I am a tip -::: diff --git a/test/markdown/fragments/container-tip.md b/test/markdown/fragments/container-tip.md deleted file mode 100644 index e9b82b1..0000000 --- a/test/markdown/fragments/container-tip.md +++ /dev/null @@ -1,3 +0,0 @@ -::: tip -I am a tip -::: diff --git a/test/markdown/fragments/container-v-pre.md b/test/markdown/fragments/container-v-pre.md deleted file mode 100644 index f169402..0000000 --- a/test/markdown/fragments/container-v-pre.md +++ /dev/null @@ -1,3 +0,0 @@ -::: v-pre -I am a v-pre -::: diff --git a/test/markdown/fragments/container-warning.md b/test/markdown/fragments/container-warning.md deleted file mode 100644 index 37aa641..0000000 --- a/test/markdown/fragments/container-warning.md +++ /dev/null @@ -1,3 +0,0 @@ -::: warning -I am a warning -::: diff --git a/test/markdown/fragments/hoist.md b/test/markdown/fragments/hoist.md deleted file mode 100644 index 91f4b33..0000000 --- a/test/markdown/fragments/hoist.md +++ /dev/null @@ -1,10 +0,0 @@ -# H1 - - - - -## H2 diff --git a/test/markdown/fragments/snippet.js b/test/markdown/fragments/snippet.js deleted file mode 100644 index 575039d..0000000 --- a/test/markdown/fragments/snippet.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function () { - // .. -} diff --git a/test/markdown/highlight.spec.js b/test/markdown/highlight.spec.js deleted file mode 100644 index 1952223..0000000 --- a/test/markdown/highlight.spec.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Md, getFragment } from './util' -import highlight from '@/markdown/highlight.js' - -const md = Md() -const mdH = Md().set({ highlight }) - -describe('highlight', () => { - test('should highlight code', async () => { - const input = await getFragment('code') - const output1 = md.render(input) - const output2 = mdH.render(input) - expect(output1 === output2).toBe(false) - expect(output2).toMatchSnapshot() - }) -}) diff --git a/test/markdown/highlightLines.spec.js b/test/markdown/highlightLines.spec.js deleted file mode 100644 index 49fe706..0000000 --- a/test/markdown/highlightLines.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Md, getFragment } from './util' -import highlightLines from '@/markdown/highlightLines.js' - -const md = Md() -const mdH = Md().use(highlightLines) - -describe('highlightLines', () => { - test('should the output not change when highlightLines is not detected', async () => { - const input = await getFragment('code') - const output1 = md.render(input) - const output2 = mdH.render(input) - expect(output1).toBe(output2) - }) - - test('highlight single line', async () => { - const input = await getFragment('code-highlightLines-single') - const output = mdH.render(input) - expect(output).toMatchSnapshot() - }) - - test('highlight multiple lines', async () => { - const input = await getFragment('code-highlightLines-multiple') - const output = mdH.render(input) - expect(output).toMatchSnapshot() - }) -}) diff --git a/test/markdown/hoist.spec.js b/test/markdown/hoist.spec.js deleted file mode 100644 index b2c5281..0000000 --- a/test/markdown/hoist.spec.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Md, getFragment } from './util' -import hoist from '@/markdown/hoist.js' -import { dataReturnable } from '@/markdown/index.js' - -const md = Md().set({ html: true }) -const mdH = Md().set({ html: true }).use(hoist) - -dataReturnable(mdH) - -describe('hoist', () => { - test('Should keep script and style when not using hoist', async () => { - const input = await getFragment('hoist') - const output = md.render(input) - expect(output).toMatchSnapshot() - }) - - test('Should miss script and style when using hoist', async () => { - const input = await getFragment('hoist') - const { html, data } = mdH.render(input) - expect(html).toMatchSnapshot() - expect(data).toMatchSnapshot() - }) -}) diff --git a/test/markdown/lineNumers.spec.js b/test/markdown/lineNumers.spec.js deleted file mode 100644 index f7efafb..0000000 --- a/test/markdown/lineNumers.spec.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Md, getFragment } from './util' -import preWrapper from '@/markdown/preWrapper.js' -import lineNumbers from '@/markdown/lineNumbers.js' -import highlightLines from '@/markdown/highlightLines.js' - -// lineNumbers must be chained after preWrapper. -// since lineNumbers needs to add extra stateful class to its block wrapper. -const mdL = Md().use(preWrapper).use(lineNumbers) -const mdLH = Md().use(highlightLines).use(preWrapper).use(lineNumbers) - -describe('lineNumbers', () => { - test('should render lineNumbers', async () => { - const input = await getFragment('code') - const output = mdL.render(input) - expect(output).toMatchSnapshot() - }) - - test('should lineNumbers work with highlightLines', async () => { - const input = await getFragment('code-highlightLines-single') - const output = mdLH.render(input) - expect(output).toMatchSnapshot() - }) -}) diff --git a/test/markdown/link.spec.js b/test/markdown/link.spec.js deleted file mode 100644 index 620c9fa..0000000 --- a/test/markdown/link.spec.js +++ /dev/null @@ -1,77 +0,0 @@ -import { Md } from './util' -import link from '@/markdown/link.js' -import { dataReturnable } from '@/markdown/index.js' - -const mdL = Md().use(link, { - target: '_blank', - rel: 'noopener noreferrer' -}) - -dataReturnable(mdL) - -const internalLinkAsserts = { - // START abosolute path usage - '/': '/', - - '/foo/': '/foo/', - '/foo/#hash': '/foo/#hash', - - '/foo/two.md': '/foo/two.html', - '/foo/two.html': '/foo/two.html', - // END abosolute path usage - - // START relative path usage - 'README.md': './', - './README.md': './', - - 'index.md': './', - './index.md': './', - - 'one.md': './one.html', - './one.md': './one.html', - - 'foo/README.md': './foo/', - './foo/README.md': './foo/', - - 'foo/README.md#hash': './foo/#hash', - './foo/README.md#hash': './foo/#hash', - - '../README.md': './../', - '../README.md#hash': './../#hash', - - '../foo.md': './../foo.html', - '../foo.md#hash': './../foo.html#hash', - - '../foo/one.md': './../foo/one.html', - '../foo/one.md#hash': './../foo/one.html#hash' - // END relative path usage -} - -const externalLinks = [ - '[vue](https://vuejs.org/)', - '[vue](http://vuejs.org/)', - '[some **link** with `code`](https://google.com)' // #496 -] - -describe('link', () => { - test('should convert internal links to router links correctly', () => { - for (const before in internalLinkAsserts) { - const input = `[${before}](${before})` - const output = mdL.render(input) - const after = getCompiledLink(output) - expect(after).toBe(internalLinkAsserts[before]) - } - }) - - test('should render external links correctly', () => { - for (const link of externalLinks) { - const { html } = mdL.render(link) - expect(html).toMatchSnapshot() - } - }) -}) - -function getCompiledLink (output) { - const { data: { routerLinks }} = output - return routerLinks[0] -} diff --git a/test/markdown/slugify.spec.js b/test/markdown/slugify.spec.js deleted file mode 100644 index 7782eae..0000000 --- a/test/markdown/slugify.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -import { Md } from './util' -import anchor from 'markdown-it-anchor' -import slugify from '@/markdown/slugify.js' - -const mdS = Md().use(anchor, { - slugify, - permalink: true, - permalinkBefore: true, - permalinkSymbol: '#' -}) - -const asserts = { - /* header: slug */ - '# a b': 'a-b', - '# a-b': 'a-b', - '# ``': 'a', - '# ``b': 'a-b', - '# `` b': 'a-b' -} - -describe('slugify', () => { - test('should convert headers to slug correctly', () => { - for (const input in asserts) { - const output = mdS.render(input) - expect(getSlug(output)).toBe(asserts[input]) - } - }) -}) - -function getSlug (output) { - return output.match(/id=\\?"([^"]*)\\?"/)[1] -} diff --git a/test/markdown/snippet.spec.js b/test/markdown/snippet.spec.js deleted file mode 100644 index 0131132..0000000 --- a/test/markdown/snippet.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Md, getFragment } from './util' -import snippet from '@/markdown/snippet.js' -import highlightLines from '@/markdown/highlightLines.js' - -const md = Md().use(snippet) -const mdH = Md().use(snippet).use(highlightLines) - -describe('snippet', () => { - test('import snippet', async () => { - const input = await getFragment('code-snippet') - const output = md.render(input) - expect(output).toMatchSnapshot() - }) - - test('import snippet with highlight single line', async () => { - const input = await getFragment('code-snippet-highlightLines-single') - const output = mdH.render(input) - expect(output).toMatchSnapshot() - }) - - test('import snippet with highlight multiple lines', async () => { - const input = await getFragment('code-snippet-highlightLines-multiple') - const output = mdH.render(input) - expect(output).toMatchSnapshot() - }) -}) diff --git a/test/markdown/util.js b/test/markdown/util.js deleted file mode 100644 index 3920b7d..0000000 --- a/test/markdown/util.js +++ /dev/null @@ -1,20 +0,0 @@ -import fs from 'fs-extra' -import LRU from 'lru-cache' -import path from 'path' - -const cache = LRU({ max: 1000 }) - -export function Md () { - return require('markdown-it')() -} - -export async function getFragment (name) { - let content = cache.get(name) - if (content) { - return content - } - const target = path.resolve(__dirname, `fragments/${name}.md`) - content = await fs.readFile(target, 'utf-8') - cache.set(name, content) - return content -} diff --git a/test/prepare.js b/test/prepare.js deleted file mode 100644 index 9960d5d..0000000 --- a/test/prepare.js +++ /dev/null @@ -1,21 +0,0 @@ -const path = require('path') -const fs = require('fs-extra') -const prepare = require('../lib/prepare') -const logger = require('../lib/util/logger') - -const tempPath = path.resolve(__dirname, '.temp') -const siteDatePath = path.resolve(__dirname, '../lib/app/.temp/siteData.js') - -async function prepareForTest () { - await fs.ensureDir(tempPath) - - await prepare(path.resolve(__dirname, '../docs')) - await fs.copy(siteDatePath, path.join(tempPath, 'siteData-i18n.js')) - - await prepare(path.resolve(__dirname, 'docs-simple')) - await fs.copy(siteDatePath, path.join(tempPath, 'siteData-simple.js')) -} - -prepareForTest().then(() => { - logger.wait('Preparing for testing ...') -}) diff --git a/test/prepare/fixtures/docs-custom-theme/.vuepress/config.js b/test/prepare/fixtures/docs-custom-theme/.vuepress/config.js deleted file mode 100644 index a5f568c..0000000 --- a/test/prepare/fixtures/docs-custom-theme/.vuepress/config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - title: 'Hello VuePress', - description: 'Just playing around' -} diff --git a/test/prepare/fixtures/docs-custom-theme/.vuepress/theme/Layout.vue b/test/prepare/fixtures/docs-custom-theme/.vuepress/theme/Layout.vue deleted file mode 100644 index e69de29..0000000 diff --git a/test/prepare/fixtures/docs-custom-theme/README.md b/test/prepare/fixtures/docs-custom-theme/README.md deleted file mode 100644 index fdb4d2b..0000000 --- a/test/prepare/fixtures/docs-custom-theme/README.md +++ /dev/null @@ -1 +0,0 @@ -# Simple Docs diff --git a/test/prepare/fixtures/docs-simple-config/.vuepress/config.js b/test/prepare/fixtures/docs-simple-config/.vuepress/config.js deleted file mode 100644 index 70f49c1..0000000 --- a/test/prepare/fixtures/docs-simple-config/.vuepress/config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - title: 'Hello VuePress', - description: 'Just playing around', - dest: 'vuepress', - base: 'vuepress', - head: [ - ['link', { rel: 'icon', href: '/logo.png' }] - ] -} diff --git a/test/prepare/fixtures/docs-simple-config/README.md b/test/prepare/fixtures/docs-simple-config/README.md deleted file mode 100644 index fdb4d2b..0000000 --- a/test/prepare/fixtures/docs-simple-config/README.md +++ /dev/null @@ -1 +0,0 @@ -# Simple Docs diff --git a/test/prepare/fixtures/docs-simple/README.md b/test/prepare/fixtures/docs-simple/README.md deleted file mode 100644 index fdb4d2b..0000000 --- a/test/prepare/fixtures/docs-simple/README.md +++ /dev/null @@ -1 +0,0 @@ -# Simple Docs diff --git a/test/prepare/resolveOptions.spec.js b/test/prepare/resolveOptions.spec.js deleted file mode 100644 index 433c565..0000000 --- a/test/prepare/resolveOptions.spec.js +++ /dev/null @@ -1,95 +0,0 @@ -import path from 'path' -import resolveOptions from '@/prepare/resolveOptions.js' - -const DEFAULT_THEME_PATH = path.resolve(__dirname, '../../lib/default-theme') -const DEFAULT_THEME_LAYOUT_PATH = path.resolve(DEFAULT_THEME_PATH, 'Layout.vue') -const DEFAULT_THEME_NOT_FOOUND_PATH = path.resolve(DEFAULT_THEME_PATH, 'NotFound.vue') - -describe('prepare - resolveOptions', () => { - test('single file docs without config.', async () => { - const { docsDir } = getDocsPaths('docs-simple') - const options = await resolveOptions(docsDir) - const { - siteConfig, - siteData, - sourceDir, - outDir, - publicPath, - pageFiles, - pagesData, - themePath, - themeLayoutPath, - themeNotFoundPath, - themeEnhanceAppPath, - useDefaultTheme, - isAlgoliaSearch, - markdown - } = options - expect(siteConfig).toEqual({}) - expect(siteData).toEqual({ - title: '', - description: '', - base: '/', - pages: pagesData, - themeConfig: {}, - locales: undefined - }) - expect(sourceDir).toBe(docsDir) - expect(outDir).toBe(path.resolve(docsDir, '.vuepress/dist')) - expect(publicPath).toBe('/') - expect(pageFiles).toHaveLength(1) - expect(pageFiles[0]).toBe('README.md') - expect(themePath).toBe(DEFAULT_THEME_PATH) - expect(themeLayoutPath).toBe(DEFAULT_THEME_LAYOUT_PATH) - expect(themeNotFoundPath).toBe(DEFAULT_THEME_NOT_FOOUND_PATH) - expect(themeEnhanceAppPath).toBe(null) - expect(useDefaultTheme).toBe(true) - expect(isAlgoliaSearch).toBe(false) - expect(typeof markdown).toBe('object') - }) - - test('single file docs with config', async () => { - const { docsDir, configPath } = getDocsPaths('docs-simple-config') - const options = await resolveOptions(docsDir) - const { - siteConfig, - outDir, - publicPath - } = options - expect(siteConfig).toEqual(require(configPath)) - expect(siteConfig.base).toBe('vuepress') - expect(siteConfig.dest).toBe('vuepress') - expect(outDir).toBe(path.resolve('vuepress')) - expect(publicPath).toBe('vuepress') - }) - - test('simple docs with custom theme', async () => { - const paths = getDocsPaths('docs-custom-theme') - const options = await resolveOptions(paths.docsDir) - const { - themePath, - themeLayoutPath, - themeNotFoundPath, - useDefaultTheme - } = options - expect(useDefaultTheme).toBe(false) - expect(themePath).toBe(paths.themePath) - expect(themeLayoutPath).toBe(paths.themeLayoutPath) - expect(themeNotFoundPath).toBe(DEFAULT_THEME_NOT_FOOUND_PATH) // fallbacks to default theme's NotFound component. - }) -}) - -function getDocsPaths (name) { - const docsDir = path.join(__dirname, `fixtures/${name}`) - const configPath = path.join(docsDir, '.vuepress/config.js') - const themePath = path.join(docsDir, '.vuepress/theme') - const themeLayoutPath = path.join(themePath, 'Layout.vue') - const themeNotFoundPath = path.join(themePath, 'NotFound.vue') - return { - docsDir, - configPath, - themePath, - themeLayoutPath, - themeNotFoundPath - } -} diff --git a/test/prepare/util.spec.js b/test/prepare/util.spec.js deleted file mode 100644 index ca8e169..0000000 --- a/test/prepare/util.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import { - isIndexFile, - fileToPath -} from '@/prepare/util.js' - -describe('prepare - util', () => { - test('isIndexFile', () => { - [ - 'README.md', - 'readme.md', - 'INDEX.md', - 'index.md', - 'foo/README.md', - 'foo/index.md' - ].forEach(file => { - expect(isIndexFile(file)).toBe(true) - }); - [ - 'foo/one.md', - 'one.md' - ].forEach(file => { - expect(isIndexFile(file)).toBe(false) - }) - }) - - test('fileToPath', () => { - const asserts = { - 'README.md': '/', - 'foo/README.md': '/foo/', - 'foo.md': '/foo.html', - 'foo/bar.md': '/foo/bar.html' - } - Object.keys(asserts).forEach(file => { - expect(fileToPath(file)).toBe(asserts[file]) - }) - }) -}) diff --git a/test/util.js b/test/util.js deleted file mode 100644 index 1696c5c..0000000 --- a/test/util.js +++ /dev/null @@ -1,42 +0,0 @@ -import { createLocalVue } from '@vue/test-utils' -import dataMixin from '@/app/dataMixin' -import Router from 'vue-router' -import { mockComponent } from './hoc' -import { siteData as i18nSiteData } from './.temp/siteData-i18n' -import { siteData as simpleSiteData } from './.temp/siteData-simple' - -export function getRouter () { - return new Router() -} - -export function getLocalVueByMode (mode) { - const localVue = createLocalVue() - localVue.use(Router) - - // register global component - localVue.component('OutboundLink', mockComponent('outbound-link')) - - // register page component in root route. - localVue.component(i18nSiteData.pages[0].key, mockComponent('page-component')) - localVue.component(simpleSiteData.pages[0].key, mockComponent('page-component')) - - // data mixin - if (mode === 'i18n') { - localVue.mixin(dataMixin(i18nSiteData)) - } else { - localVue.mixin(dataMixin(simpleSiteData)) - } - - return localVue -} - -export function modeTestRunner (description, testFn, modes = ['simple', 'i18n']) { - if (!Array.isArray(modes)) { - modes = [modes] - } - modes.forEach(mode => { - describe(description, () => { - testFn(mode, getLocalVueByMode(mode)) - }) - }) -} diff --git a/test/util/parseHeaders.spec.js b/test/util/parseHeaders.spec.js deleted file mode 100644 index da8c19a..0000000 --- a/test/util/parseHeaders.spec.js +++ /dev/null @@ -1,118 +0,0 @@ -import { - parseHeaders, - removeNonCodeWrappedHTML, - deeplyParseHeaders -} from '@/util/parseHeaders' - -describe('parseHeaders', () => { - test('should unescape html', () => { - const input = '<div>' - expect(parseHeaders(input)).toBe('
                                        ') - }) - - test('should remove markdown tokens correctly', () => { - const asserts = { - // #238 - '[vue](vuejs.org)': 'vue', - '`vue`': 'vue', - '*vue*': 'vue', - '**vue**': 'vue', - '***vue***': 'vue', - '_vue_': 'vue', - '\\_vue\\_': '_vue_', - '\\*vue\\*': '*vue*', - - // #564 For multiple markdown tokens - '`a` and `b`': 'a and b', - '***bold and italic***': 'bold and italic', - '**bold** and *italic*': 'bold and italic' - } - Object.keys(asserts).forEach(input => { - expect(parseHeaders(input)).toBe(asserts[input]) - }) - }) - - test('should remove non-code-wrapped html correctly', () => { - const asserts = { - // Remove tail html - '# H1 ': '# H1 ', - '# H1': '# H1', - '# H1 ': '# H1 ', - '# H1': '# H1', - '# H1 ': '# H1 ', - '# H1': '# H1', - '# H1 ': '# H1 ', - '# H1': '# H1', - - // Reserve code-wrapped tail html - '# H1 ``': '# H1 ``', - '# H1 ``': '# H1 ``', - '# H1 ``': '# H1 ``', - '# H1 ``': '# H1 ``', - - // Remove leading html - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - '# H1': '# H1', - - // Reserve code-wrapped leading html - '# `` H1': '# `` H1', - '# `` H1': '# `` H1', - '# `` H1': '# `` H1', - '# `` H1': '# `` H1', - - // Remove middle html - '# H1 H2': '# H1 H2', - '# H1 H2': '# H1 H2', - '# H1 H2': '# H1 H2', - '# H1 H2': '# H1 H2', - - // Reserve code-wrapped middle html - '# H1 `` H2': '# H1 `` H2', - '# H1 `` H2': '# H1 `` H2', - '# H1 `` H2': '# H1 `` H2', - '# H1 `` H2': '# H1 `` H2' - } - - Object.keys(asserts).forEach(input => { - expect(removeNonCodeWrappedHTML(input)).toBe(asserts[input]) - }) - }) - - test('should deeplyParseHeaders transformed as expected', () => { - const asserts = { - // Remove tail html - '# `H1` ': '# H1', - '# *H1* ': '# H1', - - // Reserve code-wrapped tail html - '# `H1` ``': '# H1 ', - '# *H1* ``': '# H1 ', - - // Remove leading html - '# `H1`': '# H1', - '# *H1*': '# H1', - - // Reserve code-wrapped leading html - '# `` `H1`': '# H1', - '# `` *H1*': '# H1', - - // Remove middle html - '# `H1` `H2`': '# H1 H2', - '# `H1` `H2`': '# H1 H2', - - // Reserve middle html - '# `H1` `` `H2`': '# H1 H2', - '# `H1` `` `H2`': '# H1 H2' - } - - Object.keys(asserts).forEach(input => { - expect(deeplyParseHeaders(input)).toBe(asserts[input]) - }) - }) -}) diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 3d47b32..0000000 --- a/yarn.lock +++ /dev/null @@ -1,11717 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" - dependencies: - "@babel/highlight" "7.0.0-beta.44" - -"@babel/code-frame@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" - dependencies: - "@babel/highlight" "7.0.0-beta.47" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/core@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.0.0-beta.47.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.0.0-beta.47.tgz#b9c164fb9a1e1083f067c236a9da1d7a7d759271" - dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/generator" "7.0.0-beta.47" - "@babel/helpers" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" - convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" - lodash "^4.17.5" - micromatch "^2.3.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.0.0": - version "7.5.4" - resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.5.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd" - integrity sha1-TDLfetWljp6ietAlwRJ2Mk4LTd0= - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/helpers" "^7.5.4" - "@babel/parser" "^7.5.0" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.0" - "@babel/types" "^7.5.0" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" - dependencies: - "@babel/types" "7.0.0-beta.44" - jsesc "^2.5.1" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/generator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.0.0-beta.47.tgz#1835709f377cc4d2a4affee6d9258a10bbf3b9d1" - dependencies: - "@babel/types" "7.0.0-beta.47" - jsesc "^2.5.1" - lodash "^4.17.5" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/generator@^7.5.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.0.tgz?cache=0&sync_timestamp=1562245150668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" - integrity sha1-8g5LepF1Dui2NlYHPYQ9KnNtyko= - dependencies: - "@babel/types" "^7.5.0" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-annotate-as-pure@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0-beta.47.tgz#354fb596055d9db369211bf075f0d5e93904d6f6" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha1-Mj053QtQ4Qx8Bsp9djjmhk2MXDI= - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.47.tgz#d5917c29ee3d68abc2c72f604bc043f6e056e907" - dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha1-a2lijf5Ah3mODE7Zjj1Kay+9L18= - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-call-delegate@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.0.0-beta.47.tgz#96b7804397075f722a4030d3876f51ec19d8829b" - dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha1-h8H4yhmtVSpzanonscH8+LH/H0M= - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.5.0.tgz#02edb97f512d44ba23b3227f1bf2ed43454edac5" - integrity sha1-Au25f1EtRLojsyJ/G/LtQ0VO2sU= - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - -"@babel/helper-define-map@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.0.0-beta.47.tgz#43a9def87c5166dc29630d51b3da9cc4320c131c" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha1-aWnR9XC0a9yQDR66jl1ZxIuiwSo= - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-explode-assignable-expression@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.0.0-beta.47.tgz#56b688e282a698f4d1cf135453a11ae8af870a19" - dependencies: - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha1-U3+hP28WdN90WwwA7I/k6ZaByPY= - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" - dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.44" - "@babel/template" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - -"@babel/helper-function-name@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.0.0-beta.47.tgz#8057d63e951e85c57c02cdfe55ad7608d73ffb7d" - dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M= - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" - dependencies: - "@babel/types" "7.0.0-beta.44" - -"@babel/helper-get-function-arity@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0-beta.47.tgz#2de04f97c14b094b55899d3fa83144a16d207510" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha1-g1ctQyDipGVyY3NBE8QoaLZOScM= - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-hoist-variables@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.0.0-beta.47.tgz#ce295d1d723fe22b2820eaec748ed701aa5ae3d0" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha1-Api18lyMCcUxAtUqxKmPdz6yhQo= - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-member-expression-to-functions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.0.0-beta.47.tgz#35bfcf1d16dce481ef3dec66d5a1ae6a7d80bb45" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha1-jNFLCg33/wDwCefXpDaUX0fHoW8= - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-imports@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0-beta.47.tgz#5af072029ffcfbece6ffbaf5d9984c75580f3f04" - dependencies: - "@babel/types" "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha1-lggbcRHkhtpNLNlxrRpP4hbMLj0= - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-transforms@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.0.0-beta.47.tgz#7eff91fc96873bd7b8d816698f1a69bbc01f3c38" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.47" - "@babel/helper-simple-access" "7.0.0-beta.47" - "@babel/helper-split-export-declaration" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha1-lhFepCovE55hnpjtRt9gGblEFLg= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-optimise-call-expression@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0-beta.47.tgz#085d864d0613c5813c1b7c71b61bea36f195929e" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha1-opIMVwKwc8Fd5REGIAqoytIEl9U= - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-plugin-utils@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0-beta.47.tgz#4f564117ec39f96cf60fafcde35c9ddce0e008fd" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha1-u7P77phmHFaQNCN8wDlnupm08lA= - -"@babel/helper-regex@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.0.0-beta.47.tgz#b8e3b53132c4edbb04804242c02ffe4d60316971" - dependencies: - lodash "^4.17.5" - -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" - integrity sha1-pH4CvJH7JZ0uZyfCowAT46wTxKI= - dependencies: - lodash "^4.17.11" - -"@babel/helper-remap-async-to-generator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.0.0-beta.47.tgz#444dc362f61470bd61a745ebb364431d9ca186c2" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.47" - "@babel/helper-wrap-function" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha1-Nh2AghtvONp1vT8HheziCojF/n8= - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-replace-supers@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.0.0-beta.47.tgz#310b206a302868a792b659455ceba27db686cbb7" - dependencies: - "@babel/helper-member-expression-to-functions" "7.0.0-beta.47" - "@babel/helper-optimise-call-expression" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha1-ruQXg+vk8tOrOud14cxvGpDO+ic= - dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-simple-access@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.0.0-beta.47.tgz#234d754acbda9251a10db697ef50181eab125042" - dependencies: - "@babel/template" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha1-Ze65VMjCRb6qToWdphiPOdceWFw= - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-split-export-declaration@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" - dependencies: - "@babel/types" "7.0.0-beta.44" - -"@babel/helper-split-export-declaration@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.0.0-beta.47.tgz#e11277855472d8d83baf22f2d0186c4a2059b09a" - dependencies: - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc= - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-wrap-function@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.0.0-beta.47.tgz#6528b44a3ccb4f3aeeb79add0a88192f7eb81161" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha1-xOABJEV2nigVtVKW6tQ6lYVJ9vo= - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" - -"@babel/helpers@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.0.0-beta.47.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.0.0-beta.47.tgz#f9b42ed2e4d5f75ec0fb2e792c173e451e8d40fd" - dependencies: - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@babel/helpers@^7.5.4": - version "7.5.4" - resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.5.4.tgz#2f00608aa10d460bde0ccf665d6dcf8477357cf0" - integrity sha1-LwBgiqENRgveDM9mXW3PhHc1fPA= - dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.0" - "@babel/types" "^7.5.0" - -"@babel/highlight@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/highlight@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.4.4", "@babel/parser@^7.5.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" - integrity sha1-PgcT3/ia1q43+uw7Kdz8XJeXcLc= - -"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.0.0-beta.47.tgz#571142284708c5ad4ec904d9aa705461a010be53" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.47" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.47" - -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha1-somzBmadzkrSCwJSiJoVdoydQX4= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - -"@babel/plugin-proposal-class-properties@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.0.0-beta.47.tgz#08c1a1dfc92d0f5c37b39096c6fb883e1ca4b0f5" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-replace-supers" "7.0.0-beta.47" - "@babel/plugin-syntax-class-properties" "7.0.0-beta.47" - -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.5.0.tgz?cache=0&sync_timestamp=1562245150562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.5.0.tgz#5bc6a0537d286fcb4fd4e89975adbca334987007" - integrity sha1-W8agU30ob8tP1OiZda28ozSYcAc= - dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-proposal-decorators@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.0.0-beta.47.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.0.0-beta.47.tgz#5e8943c8f8eb3301f911ef0dcd3ed64cf28c723e" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-decorators" "7.0.0-beta.47" - -"@babel/plugin-proposal-decorators@^7.1.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" - integrity sha1-3psqGoqwGW83jiqC8QtuKjbyHMA= - dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.2.0" - -"@babel/plugin-proposal-export-namespace-from@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.0.0-beta.47.tgz#38171dd0fd5f54aee377d338ed41bb92e25d6720" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-export-namespace-from" "7.0.0-beta.47" - -"@babel/plugin-proposal-function-sent@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-function-sent/download/@babel/plugin-proposal-function-sent-7.0.0-beta.47.tgz#3ad46c04a277a887731f21843013292d254f7ba9" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-wrap-function" "7.0.0-beta.47" - "@babel/plugin-syntax-function-sent" "7.0.0-beta.47" - -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - -"@babel/plugin-proposal-numeric-separator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.0.0-beta.47.tgz#3ace5cbacb62c3fa223c3c0b66c0c16e63a8e259" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-numeric-separator" "7.0.0-beta.47" - -"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.0.0-beta.47.tgz?cache=0&sync_timestamp=1562698760019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.0.0-beta.47.tgz#e1529fddc88e948868ee1d0edaa27ebd9502322d" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.47" - -"@babel/plugin-proposal-object-rest-spread@^7.3.4": - version "7.5.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.5.4.tgz?cache=0&sync_timestamp=1562698919961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.5.4.tgz#250de35d867ce8260a31b1fdac6c4fc1baa99331" - integrity sha1-JQ3jXYZ86CYKMbH9rGxPwbqpkzE= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - -"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.0.0-beta.47.tgz#8c6453919537517ea773bb8f3fceda4250795efa" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.47" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha1-E12B7baKCB5V5W7EhUHs6AZcOPU= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - -"@babel/plugin-proposal-throw-expressions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-throw-expressions/download/@babel/plugin-proposal-throw-expressions-7.0.0-beta.47.tgz#9a67f8b0852b4b0b255eff5d6d25fa436928424f" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-syntax-throw-expressions" "7.0.0-beta.47" - -"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.0.0-beta.47.tgz#34d7e4811bdc4f512400bb29d01051842528c8d5" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-regex" "7.0.0-beta.47" - regexpu-core "^4.1.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha1-UB/9mCbAuR2iJpByByKsfLHKnHg= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-syntax-async-generators@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.0.0-beta.47.tgz#8ab94852bf348badc866af85bd852221f0961256" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha1-aeHw2zTG9aDPfiszI78VmnbIy38= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-class-properties@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.0.0-beta.47.tgz#de52bed12fd472c848e1562f57dd4a202fe27f11" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-decorators@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.0.0-beta.47.tgz#a42f10fcd651940bc475d93b3ac23432b4a8a293" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-decorators@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" - integrity sha1-xQsblX3MaeSxEntl4cM+72FXDBs= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-dynamic-import@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.0.0-beta.47.tgz#ee964915014a687701ee8e15c289e31a7c899e60" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-export-namespace-from@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.0.0-beta.47.tgz#fd446c76c59849f15e6cde235b5b8e153413f21e" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-function-sent@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-function-sent/download/@babel/plugin-syntax-function-sent-7.0.0-beta.47.tgz#8d15536f55b21acdf9bfaa177c46591a589fe8b0" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-import-meta@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-import-meta/download/@babel/plugin-syntax-import-meta-7.0.0-beta.47.tgz#8ab5174209a954b91e327004a7d16737bcc4774d" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha1-cr0T9v/h0lk4Ep0qGGsR/WKVFHA= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-jsx@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.0.0-beta.47.tgz#f3849d94288695d724bd205b4f6c3c99e4ec24a4" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha1-C4WjtLx830zEuL8jYzW5B8oi58c= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-numeric-separator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.0.0-beta.47.tgz#9f06cb770a94f464b3b2889d2110080bc302fc80" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.0.0-beta.47.tgz#21da514d94c138b2261ca09f0dec9abadce16185" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha1-O3o+czUQxX6CC5FCpleayLDfrS4= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.0.0-beta.47.tgz#0b1c52b066aa36893c41450773a5adb904cd4024" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha1-qUAT1u2okI3+akd+f57ahWVuz1w= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-throw-expressions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-throw-expressions/download/@babel/plugin-syntax-throw-expressions-7.0.0-beta.47.tgz#8ca197bab3534f443eecd7eb79da47e199dafaf7" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-arrow-functions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.0.0-beta.47.tgz#d6eecda4c652b909e3088f0983ebaf8ec292984b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha1-mur75Nb/xlY7+Pg3IJFijwB3lVA= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.0.0-beta.47.tgz#5723816ea1e91fa313a84e6ee9cc12ff31d46610" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.47" - -"@babel/plugin-transform-async-to-generator@^7.3.4": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" - integrity sha1-iaOEigFmYjtbxIEWS1k2q5R+iH4= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - -"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.0.0-beta.47.tgz#e422278e06c797b43c45f459d83c7af9d6237002" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha1-XTzBHo1d3XUqpkyRSNDbbLef0ZA= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.0.0-beta.47.tgz#b737cc58a81bea57efd5bda0baef9a43a25859ad" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/plugin-transform-block-scoping@^7.3.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha1-wTJ5+r9rkWZhUxhBojxLfa4pZG0= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" - -"@babel/plugin-transform-classes@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.0.0-beta.47.tgz#7aff9cbe7b26fd94d7a9f97fa90135ef20c93fb6" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.47" - "@babel/helper-define-map" "7.0.0-beta.47" - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/helper-optimise-call-expression" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-replace-supers" "7.0.0-beta.47" - "@babel/helper-split-export-declaration" "7.0.0-beta.47" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.3.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha1-DOQJTNr9cJchB207nDitMcpxXrY= - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.0.0-beta.47.tgz#56ef2a021769a2b65e90a3e12fd10b791da9f3e0" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha1-g6ffamWIZbHI9kHVEMbzryICFto= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.0.0-beta.47.tgz#452b607775fd1c4d10621997837189efc0a6d428" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-destructuring@^7.2.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" - integrity sha1-9sCf3+P5RRb/B0/od9t7ye8FhVo= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.0.0-beta.47.tgz#d8da9b706d4bfc68dec9d565661f83e6e8036636" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-regex" "7.0.0-beta.47" - regexpu-core "^4.1.3" - -"@babel/plugin-transform-dotall-regex@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha1-NhoUi8lRREMSxpRG127R6o5EUMM= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-transform-duplicate-keys@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.0.0-beta.47.tgz#4aabeda051ca3007e33a207db08f1a0cf9bd253b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" - integrity sha1-xdv1EGv4TN9pEiLAl0wSsd+TGFM= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.0.0-beta.47.tgz#930e1abf5db9f4db5b63dbf97f3581ad0be1e907" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha1-pjhoKJ5bQAf3BU1GSRr1FDV2YAg= - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-for-of@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.0.0-beta.47.tgz#527d5dc24e4a4ad0fc1d0a3990d29968cb984e76" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-for-of@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha1-Amf8c14kyAi6FzhmxsTRRA/DxVY= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.0.0-beta.47.tgz#fb443c81cc77f3206a863b730b35c8c553ce5041" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-function-name@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha1-4UNhFquwYQwiWQlISHVKxSMJIq0= - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.0.0-beta.47.tgz#448fad196f062163684a38f10f14e83315892e9c" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha1-aQNT6B+SZ9rU/Yz9d+r6hqulPqE= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.0.0-beta.47.tgz#84564419b11c1be6b9fcd4c7b3a6737f2335aac4" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" - integrity sha1-7wBDXUbaCllhqnKKHS7P8GPk+5E= - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.0.0-beta.47.tgz#dfe5c6d867aa9614e55f7616736073edb3aab887" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-simple-access" "7.0.0-beta.47" - -"@babel/plugin-transform-modules-commonjs@^7.2.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.5.0.tgz?cache=0&sync_timestamp=1562245150624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" - integrity sha1-QlEn5gRSMTYIWO6qR6cdde3tenQ= - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-systemjs@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.0.0-beta.47.tgz#8514dbcdfca3345abd690059e7e8544e16ecbf05" - dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-modules-systemjs@^7.3.4": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" - integrity sha1-51JmoT75QgLbKgYgl3dW9R1S0kk= - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-umd@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.0.0-beta.47.tgz#6dcfb9661fdd131b20b721044746a7a309882918" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha1-dnjOdRafCHe46yI1U4wHQmjdAa4= - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": - version "7.4.5" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - integrity sha1-nSaf0oo3AlgZm0KUc2gTpgu90QY= - dependencies: - regexp-tree "^0.1.6" - -"@babel/plugin-transform-new-target@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.0.0-beta.47.tgz#4b5cb7ce30d7bffa105a1f43ed07d6ae206a4155" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-new-target@^7.0.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha1-GNEgQ4sMye6VpH8scryXaPvtYKU= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.0.0-beta.47.tgz#ca8e5f326c5011c879f3a6ed749e58bd10fff05d" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-replace-supers" "7.0.0-beta.47" - -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha1-s11MEPVrq11lAEfa0PHY6IFLZZg= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - -"@babel/plugin-transform-parameters@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.0.0-beta.47.tgz#46a4236040a6552a5f165fb3ddd60368954b0ddd" - dependencies: - "@babel/helper-call-delegate" "7.0.0-beta.47" - "@babel/helper-get-function-arity" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-parameters@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha1-dVbPA/MYvScZ/kySLS2Ai+VXHhY= - dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-regenerator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.0.0-beta.47.tgz#86500e1c404055fb98fc82b73b09bd053cacb516" - dependencies: - regenerator-transform "^0.12.3" - -"@babel/plugin-transform-regenerator@^7.3.4": - version "7.4.5" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha1-Yp3IJRLFXO4BNB+ye9/LIQNUaA8= - dependencies: - regenerator-transform "^0.14.0" - -"@babel/plugin-transform-runtime@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.0.0-beta.47.tgz?cache=0&sync_timestamp=1562245145512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.0.0-beta.47.tgz#1700938fa8710909cbf28f7dd39f9b40688b09fd" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-runtime@^7.4.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.5.0.tgz?cache=0&sync_timestamp=1562245145512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.5.0.tgz#45242c2c9281158c5f06d25beebac63e498a284e" - integrity sha1-RSQsLJKBFYxfBtJb7rrGPkmKKE4= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.0.0-beta.47.tgz#00be44c4fad8fe2c00ed18ea15ea3c88dd519dbb" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha1-YzOu4vjW7n4oYVRXKYk0o7RhmPA= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.0.0-beta.47.tgz#3feadb02292ed1e9b75090d651b9df88a7ab5c50" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha1-MQOpq+IvdCttQG7NPNSbd0kZtAY= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.0.0-beta.47.tgz#c0aa347d76b5dc87d3b37ac016ada3f950605131" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-regex" "7.0.0-beta.47" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha1-oeRUtZlVYKnB4NU338FQYf0mh+E= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.0.0-beta.47.tgz#5f7b5badf64c4c5da79026aeab03001e62a6ee5f" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-template-literals@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha1-nSj+p7vOY3+3YSoHUJidgyHUvLA= - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.0.0-beta.47.tgz#03c612ec09213eb386a81d5fa67c234ee4b2034c" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha1-EX0rzsL79ktLWdH5gZiUaC0p8rI= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-unicode-regex@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.0.0-beta.47.tgz#efed0b2f1dfbf28283502234a95b4be88f7fdcb6" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/helper-regex" "7.0.0-beta.47" - regexpu-core "^4.1.3" - -"@babel/plugin-transform-unicode-regex@^7.2.0": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha1-q0Y0u08U02cov1l4Mis1WHeHlw8= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/preset-env@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.0.0-beta.47.tgz#a3dab3b5fac4de56e3510bdbcb528f1cbdedbe2d" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.47" - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.47" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.47" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.47" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.47" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.47" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.47" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.47" - "@babel/plugin-transform-arrow-functions" "7.0.0-beta.47" - "@babel/plugin-transform-async-to-generator" "7.0.0-beta.47" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.47" - "@babel/plugin-transform-block-scoping" "7.0.0-beta.47" - "@babel/plugin-transform-classes" "7.0.0-beta.47" - "@babel/plugin-transform-computed-properties" "7.0.0-beta.47" - "@babel/plugin-transform-destructuring" "7.0.0-beta.47" - "@babel/plugin-transform-dotall-regex" "7.0.0-beta.47" - "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.47" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.47" - "@babel/plugin-transform-for-of" "7.0.0-beta.47" - "@babel/plugin-transform-function-name" "7.0.0-beta.47" - "@babel/plugin-transform-literals" "7.0.0-beta.47" - "@babel/plugin-transform-modules-amd" "7.0.0-beta.47" - "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.47" - "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.47" - "@babel/plugin-transform-modules-umd" "7.0.0-beta.47" - "@babel/plugin-transform-new-target" "7.0.0-beta.47" - "@babel/plugin-transform-object-super" "7.0.0-beta.47" - "@babel/plugin-transform-parameters" "7.0.0-beta.47" - "@babel/plugin-transform-regenerator" "7.0.0-beta.47" - "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.47" - "@babel/plugin-transform-spread" "7.0.0-beta.47" - "@babel/plugin-transform-sticky-regex" "7.0.0-beta.47" - "@babel/plugin-transform-template-literals" "7.0.0-beta.47" - "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.47" - "@babel/plugin-transform-unicode-regex" "7.0.0-beta.47" - browserslist "^3.0.0" - invariant "^2.2.2" - semver "^5.3.0" - -"@babel/preset-env@^7.0.0 < 7.4.0": - version "7.3.4" - resolved "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1" - integrity sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.3.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.3.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.3.4" - "@babel/plugin-transform-classes" "^7.3.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.2.0" - "@babel/plugin-transform-dotall-regex" "^7.2.0" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.2.0" - "@babel/plugin-transform-function-name" "^7.2.0" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.2.0" - "@babel/plugin-transform-modules-systemjs" "^7.3.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" - "@babel/plugin-transform-new-target" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.3.4" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.2.0" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.2.0" - browserslist "^4.3.4" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.3.0" - -"@babel/preset-stage-2@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/preset-stage-2/download/@babel/preset-stage-2-7.0.0-beta.47.tgz#deb930c44d7d6e519a33174bba121a2a630ed654" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-proposal-decorators" "7.0.0-beta.47" - "@babel/plugin-proposal-export-namespace-from" "7.0.0-beta.47" - "@babel/plugin-proposal-function-sent" "7.0.0-beta.47" - "@babel/plugin-proposal-numeric-separator" "7.0.0-beta.47" - "@babel/plugin-proposal-throw-expressions" "7.0.0-beta.47" - "@babel/preset-stage-3" "7.0.0-beta.47" - -"@babel/preset-stage-3@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/preset-stage-3/download/@babel/preset-stage-3-7.0.0-beta.47.tgz#17028f3b5dddc548d80404c86ed62622f601597b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.47" - "@babel/plugin-proposal-class-properties" "7.0.0-beta.47" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.47" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.47" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.47" - "@babel/plugin-syntax-dynamic-import" "7.0.0-beta.47" - "@babel/plugin-syntax-import-meta" "7.0.0-beta.47" - -"@babel/runtime-corejs2@^7.2.0": - version "7.5.4" - resolved "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.5.4.tgz?cache=0&sync_timestamp=1562698757751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime-corejs2%2Fdownload%2F%40babel%2Fruntime-corejs2-7.5.4.tgz#7111dbb344acce1f7dd601786cff40d516b27a96" - integrity sha1-cRHbs0Sszh991gF4bP9A1RayepY= - dependencies: - core-js "^2.6.5" - regenerator-runtime "^0.13.2" - -"@babel/runtime@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.0.0-beta.47.tgz?cache=0&sync_timestamp=1562698759253&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.0.0-beta.47.tgz#273f5e71629e80f6cbcd7507503848615e59f7e0" - dependencies: - core-js "^2.5.3" - regenerator-runtime "^0.11.1" - -"@babel/runtime@^7.0.0": - version "7.5.4" - resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.5.4.tgz?cache=0&sync_timestamp=1562698759253&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - lodash "^4.2.0" - -"@babel/template@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.0.0-beta.47.tgz#0473970a7c0bee7a1a18c1ca999d3ba5e5bad83d" - dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" - lodash "^4.17.5" - -"@babel/template@^7.1.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc= - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/traverse@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.0.0-beta.44.tgz?cache=0&sync_timestamp=1562245150727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/generator" "7.0.0-beta.44" - "@babel/helper-function-name" "7.0.0-beta.44" - "@babel/helper-split-export-declaration" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - debug "^3.1.0" - globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.2.0" - -"@babel/traverse@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.0.0-beta.47.tgz?cache=0&sync_timestamp=1562245150727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.0.0-beta.47.tgz#0e57fdbb9ff3a909188b6ebf1e529c641e6c82a4" - dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/generator" "7.0.0-beta.47" - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/helper-split-export-declaration" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" - debug "^3.1.0" - globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.17.5" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" - integrity sha1-QhbWWGhU71w8RZLatW7H63hIVIU= - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.0" - "@babel/types" "^7.5.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - -"@babel/types@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - -"@babel/types@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.0.0-beta.47.tgz#e6fcc1a691459002c2671d558a586706dddaeef8" - dependencies: - esutils "^2.0.2" - lodash "^4.17.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0": - version "7.5.0" - resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" - integrity sha1-5H1DhAwuf5EFvE06LDcbTQx4Mqs= - dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - dependencies: - any-observable "^0.3.0" - -"@shellscape/koa-send@^4.1.0": - version "4.1.3" - resolved "https://registry.npm.taobao.org/@shellscape/koa-send/download/@shellscape/koa-send-4.1.3.tgz#1a7c8df21f63487e060b7bfd8ed82e1d3c4ae0b0" - dependencies: - debug "^2.6.3" - http-errors "^1.6.1" - mz "^2.6.0" - resolve-path "^1.3.3" - -"@shellscape/koa-static@^4.0.4": - version "4.0.5" - resolved "https://registry.npm.taobao.org/@shellscape/koa-static/download/@shellscape/koa-static-4.0.5.tgz#b329b55bfd41056a6981c584ae6bace30b5b6b3b" - dependencies: - "@shellscape/koa-send" "^4.1.0" - debug "^2.6.8" - -"@types/events@*": - version "3.0.0" - resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc= - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU= - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= - -"@types/node@*": - version "12.6.3" - resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-12.6.3.tgz?cache=0&sync_timestamp=1563209482260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.6.3.tgz#44d507c5634f85e7164707ca36bba21b5213d487" - integrity sha1-RNUHxWNPhecWRwfKNruiG1IT1Ic= - -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha1-aQoUdbhPKohP0HzXl8APXzE1bqg= - -"@types/strip-bom@^3.0.0": - version "3.0.0" - resolved "https://registry.npm.taobao.org/@types/strip-bom/download/@types/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" - -"@types/strip-json-comments@0.0.30": - version "0.0.30" - resolved "https://registry.npm.taobao.org/@types/strip-json-comments/download/@types/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" - -"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" - integrity sha1-BI/leZWNpAj7eosqPsBQtQpmEEA= - -"@vue/babel-plugin-transform-vue-jsx@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.0.0.tgz#ebcbf39c312c94114c8c4f407ee4f6c97aa45432" - integrity sha1-68vznDEslBFMjE9AfuT2yXqkVDI= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@3.0.0-beta.11": - version "3.0.0-beta.11" - resolved "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.0.0-beta.11.tgz#c8b889aa73464050f9cd3f9dc621951d85c24508" - dependencies: - "@babel/plugin-syntax-jsx" "7.0.0-beta.47" - "@babel/plugin-transform-runtime" "7.0.0-beta.47" - "@babel/preset-env" "7.0.0-beta.47" - "@babel/preset-stage-2" "7.0.0-beta.47" - "@babel/runtime" "7.0.0-beta.47" - babel-helper-vue-jsx-merge-props "^2.0.3" - babel-plugin-dynamic-import-node "^1.2.0" - babel-plugin-transform-vue-jsx "^4.0.1" - -"@vue/babel-preset-app@^3.1.1": - version "3.9.2" - resolved "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.9.2.tgz#b72a9b06abbe3f8f272783be13951271277be338" - integrity sha1-tyqbBqu+P48nJ4O+E5UScSd74zg= - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-decorators" "^7.1.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.4.0" - "@babel/preset-env" "^7.0.0 < 7.4.0" - "@babel/runtime" "^7.0.0" - "@babel/runtime-corejs2" "^7.2.0" - "@vue/babel-preset-jsx" "^1.0.0" - babel-plugin-dynamic-import-node "^2.2.0" - babel-plugin-module-resolver "3.2.0" - core-js "^2.6.5" - -"@vue/babel-preset-jsx@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.0.0.tgz#e515cd453a5a8ea6b0f30b2bb92f266d8ab4e9f5" - integrity sha1-5RXNRTpajqaw8wsruS8mbYq06fU= - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" - "@vue/babel-sugar-functional-vue" "^1.0.0" - "@vue/babel-sugar-inject-h" "^1.0.0" - "@vue/babel-sugar-v-model" "^1.0.0" - "@vue/babel-sugar-v-on" "^1.0.0" - -"@vue/babel-sugar-functional-vue@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.0.0.tgz#17e2c4ca27b74b244da3b923240ec91d10048cb3" - integrity sha1-F+LEyie3SyRNo7kjJA7JHRAEjLM= - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.0.0.tgz#e5efb6c5b5b7988dc03831af6d133bf7bcde6347" - integrity sha1-5e+2xbW3mI3AODGvbRM797zeY0c= - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.0.0.tgz#f4da56aa67f65a349bd2c269a95e72e601af4613" - integrity sha1-9NpWqmf2WjSb0sJpqV5y5gGvRhM= - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.0.0.tgz#a633ee8fe205763e865b011246981b7f89668033" - integrity sha1-pjPuj+IFdj6GWwESRpgbf4lmgDM= - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" - camelcase "^5.0.0" - -"@vue/component-compiler-utils@^2.5.1": - version "2.6.0" - resolved "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.14" - postcss-selector-parser "^5.0.0" - prettier "1.16.3" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - -"@vue/test-utils@^1.0.0-beta.16": - version "1.0.0-beta.29" - resolved "https://registry.npm.taobao.org/@vue/test-utils/download/@vue/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0" - dependencies: - dom-event-types "^1.0.0" - lodash "^4.17.4" - -"@vuepress/core@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/core/download/@vuepress/core-1.0.2.tgz#75d0c6ccb4be92c6674c3bbfbe25639c8239921b" - integrity sha1-ddDGzLS+ksZnTDu/viVjnII5khs= - dependencies: - "@babel/core" "^7.0.0" - "@vue/babel-preset-app" "^3.1.1" - "@vuepress/markdown" "^1.0.2" - "@vuepress/markdown-loader" "^1.0.2" - "@vuepress/plugin-last-updated" "^1.0.2" - "@vuepress/plugin-register-components" "^1.0.2" - "@vuepress/shared-utils" "^1.0.2" - autoprefixer "^9.5.1" - babel-loader "^8.0.4" - cache-loader "^3.0.0" - chokidar "^2.0.3" - connect-history-api-fallback "^1.5.0" - copy-webpack-plugin "^5.0.2" - cross-spawn "^6.0.5" - css-loader "^2.1.1" - file-loader "^3.0.1" - js-yaml "^3.11.0" - lru-cache "^5.1.1" - mini-css-extract-plugin "0.6.0" - optimize-css-assets-webpack-plugin "^5.0.1" - portfinder "^1.0.13" - postcss-loader "^3.0.0" - postcss-safe-parser "^4.0.1" - toml "^3.0.0" - url-loader "^1.0.1" - vue "^2.5.16" - vue-loader "^15.2.4" - vue-router "^3.0.2" - vue-server-renderer "^2.5.16" - vue-template-compiler "^2.5.16" - vuepress-html-webpack-plugin "^3.2.0" - vuepress-plugin-container "^2.0.0" - webpack "^4.8.1" - webpack-chain "^4.6.0" - webpack-dev-server "^3.5.1" - webpack-merge "^4.1.2" - webpackbar "3.2.0" - -"@vuepress/markdown-loader@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/markdown-loader/download/@vuepress/markdown-loader-1.0.2.tgz#b068df3049f6b63cfee329f85aed3bb0aa9e7ab0" - integrity sha1-sGjfMEn2tjz+4yn4Wu07sKqeerA= - dependencies: - "@vuepress/markdown" "^1.0.2" - loader-utils "^1.1.0" - lru-cache "^5.1.1" - -"@vuepress/markdown@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/markdown/download/@vuepress/markdown-1.0.2.tgz#436c5aa74e22cf7f6705b99c8892b6ba2d84cd0a" - integrity sha1-Q2xap04iz39nBbmciJK2ui2EzQo= - dependencies: - "@vuepress/shared-utils" "^1.0.2" - markdown-it "^8.4.1" - markdown-it-anchor "^5.0.2" - markdown-it-chain "^1.3.0" - markdown-it-emoji "^1.4.0" - markdown-it-table-of-contents "^0.4.0" - prismjs "^1.13.0" - -"@vuepress/plugin-active-header-links@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/plugin-active-header-links/download/@vuepress/plugin-active-header-links-1.0.2.tgz#df04f7fc21640d3e0a0b704037e360e75974d1a2" - integrity sha1-3wT3/CFkDT4KC3BAN+Ng51l00aI= - dependencies: - lodash.throttle "^4.1.1" - -"@vuepress/plugin-last-updated@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/plugin-last-updated/download/@vuepress/plugin-last-updated-1.0.2.tgz#c839c5fb585c469a8c2ff70c16204dd72478545a" - integrity sha1-yDnF+1hcRpqML/cMFiBN1yR4VFo= - dependencies: - cross-spawn "^6.0.5" - -"@vuepress/plugin-nprogress@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/plugin-nprogress/download/@vuepress/plugin-nprogress-1.0.2.tgz#3fae13c8af23292cf324d159c77e4d0ffc3133ab" - integrity sha1-P64TyK8jKSzzJNFZx35ND/wxM6s= - dependencies: - nprogress "^0.2.0" - -"@vuepress/plugin-register-components@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/plugin-register-components/download/@vuepress/plugin-register-components-1.0.2.tgz#504c190b1c1836e3428d90749a2dbd59f6e596b9" - integrity sha1-UEwZCxwYNuNCjZB0mi29Wfbllrk= - dependencies: - "@vuepress/shared-utils" "^1.0.2" - -"@vuepress/plugin-search@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/plugin-search/download/@vuepress/plugin-search-1.0.2.tgz#6d43fb46b207d48b797a5bc5b01824662db4684d" - integrity sha1-bUP7RrIH1It5elvFsBgkZi20aE0= - -"@vuepress/shared-utils@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/shared-utils/download/@vuepress/shared-utils-1.0.2.tgz#4e1342748b7594fe4fde9dce3bf201538fa5ca67" - integrity sha1-ThNCdIt1lP5P3p3OO/IBU4+lymc= - dependencies: - chalk "^2.3.2" - diacritics "^1.3.0" - escape-html "^1.0.3" - fs-extra "^7.0.1" - globby "^9.2.0" - gray-matter "^4.0.1" - hash-sum "^1.0.2" - semver "^6.0.0" - upath "^1.1.0" - -"@vuepress/theme-default@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@vuepress/theme-default/download/@vuepress/theme-default-1.0.2.tgz#7678c4755db9d891effee838991287d31ae9c5ed" - integrity sha1-dnjEdV252JHv/ug4mRKH0xrpxe0= - dependencies: - "@vuepress/plugin-active-header-links" "^1.0.2" - "@vuepress/plugin-nprogress" "^1.0.2" - "@vuepress/plugin-search" "^1.0.2" - docsearch.js "^2.5.2" - stylus "^0.54.5" - stylus-loader "^3.0.2" - vuepress-plugin-container "^2.0.0" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webpack-contrib/config-loader@^1.1.1": - version "1.2.1" - resolved "https://registry.npm.taobao.org/@webpack-contrib/config-loader/download/@webpack-contrib/config-loader-1.2.1.tgz#5b3dd474e207437939d294d200c68b7b00008e04" - dependencies: - "@webpack-contrib/schema-utils" "^1.0.0-beta.0" - chalk "^2.1.0" - cosmiconfig "^5.0.2" - is-plain-obj "^1.1.0" - loud-rejection "^1.6.0" - merge-options "^1.0.1" - minimist "^1.2.0" - resolve "^1.6.0" - webpack-log "^1.1.2" - -"@webpack-contrib/schema-utils@^1.0.0-beta.0": - version "1.0.0-beta.0" - resolved "https://registry.npm.taobao.org/@webpack-contrib/schema-utils/download/@webpack-contrib/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chalk "^2.3.2" - strip-ansi "^4.0.0" - text-table "^0.2.0" - webpack-log "^1.1.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/abab/download/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - -abbrev@1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^4.1.0: - version "4.3.2" - resolved "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.5.0, acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-5.7.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - -acorn@^6.0.1, acorn@^6.2.0: - version "6.2.0" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/add-stream/download/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - -agentkeepalive@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/agentkeepalive/download/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - -ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: - version "3.4.1" - resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - -ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - 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.0.1, ajv@^6.1.0, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -algoliasearch@^3.24.5: - version "3.33.0" - resolved "https://registry.npm.taobao.org/algoliasearch/download/algoliasearch-3.33.0.tgz#83b541124ebb0db54643009d4e660866b3177cdf" - dependencies: - agentkeepalive "^2.2.0" - debug "^2.6.9" - envify "^4.0.0" - es6-promise "^4.1.0" - events "^1.1.0" - foreach "^2.0.5" - global "^4.3.2" - inherits "^2.0.1" - isarray "^2.0.1" - load-script "^1.0.0" - object-keys "^1.0.11" - querystring-es3 "^0.2.1" - reduce "^1.0.1" - semver "^5.1.0" - tunnel-agent "^0.6.0" - -alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/ansi-align/download/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - dependencies: - string-width "^2.0.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - -ansi-escapes@^4.1.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.2.0.tgz#c38600259cefba178ee3f7166c5ea3a5dd2e88fc" - integrity sha1-w4YAJZzvuheO4/cWbF6jpd0uiPw= - dependencies: - type-fest "^0.5.2" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^0.2.0, ansi-regex@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= - -ansi-styles@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/any-observable/download/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - -any-promise@^1.0.0, any-promise@^1.1.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -app-root-path@^2.0.1: - version "2.2.1" - resolved "https://registry.npm.taobao.org/app-root-path/download/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/append-transform/download/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -arch@^2.1.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk= - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/array-ify/download/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -ascli@~1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/ascli/download/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - -async@^1.5.2: - version "1.5.2" - resolved "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.4: - version "2.6.3" - resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - -autocomplete.js@0.36.0: - version "0.36.0" - resolved "https://registry.npm.taobao.org/autocomplete.js/download/autocomplete.js-0.36.0.tgz#94fe775fe64b6cd42e622d076dc7fd26bedd837b" - dependencies: - immediate "^3.2.3" - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -autoprefixer@^8.2.0: - version "8.6.5" - resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" - dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000864" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^6.0.23" - postcss-value-parser "^3.2.3" - -autoprefixer@^9.5.1: - version "9.6.1" - resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" - integrity sha1-UZZ6AtLSMAuwGGbBYR7INI01Wkc= - dependencies: - browserslist "^4.6.3" - caniuse-lite "^1.0.30000980" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.17" - postcss-value-parser "^4.0.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-core%2Fdownload%2Fbabel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-core@^7.0.0-0: - version "7.0.0-bridge.0" - resolved "https://registry.npm.taobao.org/babel-core/download/babel-core-7.0.0-bridge.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-core%2Fdownload%2Fbabel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - -babel-eslint@^8.2.3: - version "8.2.6" - resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-8.2.6.tgz?cache=0&sync_timestamp=1560806841613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/traverse" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/babel-extract-comments/download/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - dependencies: - babylon "^6.18.0" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.npm.taobao.org/babel-generator/download/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-vue-jsx-merge-props@^2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.npm.taobao.org/babel-helpers/download/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^23.0.0, babel-jest@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/babel-jest/download/babel-jest-23.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-jest%2Fdownload%2Fbabel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" - -babel-loader@8.0.0-beta.3: - version "8.0.0-beta.3" - resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.0-beta.3.tgz#49efeea6e8058d5af860a18a6de88b8c1450645b" - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - util.promisify "^1.0.0" - -babel-loader@^8.0.4: - version "8.0.6" - resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs= - dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.npm.taobao.org/babel-messages/download/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dynamic-import-node@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-1.2.0.tgz#f91631e703e0595e47d4beafbb088576c87fbeee" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - -babel-plugin-dynamic-import-node@^2.2.0, babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz?cache=0&sync_timestamp=1560928040692&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha1-8A9Qe9qjw+P/bn5emNkKesq5b38= - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - -babel-plugin-module-resolver@3.2.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" - integrity sha1-3fpeMB47mqEthSqZefGLN4gf9ac= - dependencies: - find-babel-config "^1.1.0" - glob "^7.1.2" - pkg-up "^2.0.0" - reselect "^3.0.1" - resolve "^1.4.0" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.npm.taobao.org/babel-plugin-syntax-dynamic-import/download/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-transform-es2015-modules-commonjs@^6.26.0: - version "6.26.2" - resolved "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-commonjs/download/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-plugin-transform-object-rest-spread/download/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.npm.taobao.org/babel-plugin-transform-strict-mode/download/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-vue-jsx@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/babel-plugin-transform-vue-jsx/download/babel-plugin-transform-vue-jsx-4.0.1.tgz#2c8bddce87a6ef09eaa59869ff1bfbeeafc5f88d" - dependencies: - esutils "^2.0.2" - -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" - dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-register/download/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-template/download/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-traverse/download/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.npm.taobao.org/babel-types/download/babel-types-6.26.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-types%2Fdownload%2Fbabel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@7.0.0-beta.44: - version "7.0.0-beta.44" - resolved "https://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" - -babylon@7.0.0-beta.47: - version "7.0.0-beta.47" - resolved "https://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-arraybuffer@^0.1.5: - version "0.1.5" - resolved "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - -bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io= - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.npm.taobao.org/boxen/download/boxen-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fboxen%2Fdownload%2Fboxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - dependencies: - pako "~1.0.5" - -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -browserslist@^3.0.0, browserslist@^3.2.8: - version "3.2.8" - resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.6.3: - version "4.6.6" - resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" - integrity sha1-bkv0Z83lILydvfN0fa+gNTHOxFM= - dependencies: - caniuse-lite "^1.0.30000984" - electron-to-chromium "^1.3.191" - node-releases "^1.1.25" - -bser@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/bser/download/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow= - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.npm.taobao.org/buffer/download/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.npm.taobao.org/bytebuffer/download/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= - -cac@^6.3.9: - version "6.5.2" - resolved "https://registry.npm.taobao.org/cac/download/cac-6.5.2.tgz#92ef1490b9ffde5f0be7eeadec5ea926f0e78ef6" - integrity sha1-ku8UkLn/3l8L5+6t7F6pJvDnjvY= - -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^11.3.2: - version "11.3.3" - resolved "https://registry.npm.taobao.org/cacache/download/cacache-11.3.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -cache-loader@^1.2.2: - version "1.2.5" - resolved "https://registry.npm.taobao.org/cache-loader/download/cache-loader-1.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcache-loader%2Fdownload%2Fcache-loader-1.2.5.tgz#9ab15b0ae5f546f376083a695fc1a75f546cb266" - dependencies: - loader-utils "^1.1.0" - mkdirp "^0.5.1" - neo-async "^2.5.0" - schema-utils "^0.4.2" - -cache-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.npm.taobao.org/cache-loader/download/cache-loader-3.0.1.tgz#cee6cf4b3cdc7c610905b26bad6c2fc439c821af" - integrity sha1-zubPSzzcfGEJBbJrrWwvxDnIIa8= - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^2.1.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - dependencies: - callsites "^2.0.0" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - dependencies: - caller-callsite "^2.0.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase@^2.0.0, camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -camelcase@^5.0.0, camelcase@^5.2.0: - version "5.3.1" - resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA= - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000984" - resolved "https://registry.npm.taobao.org/caniuse-db/download/caniuse-db-1.0.30000984.tgz#3e4a53d78f33403e931ef1d2b2db07556d253dff" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984: - version "1.0.30000984" - resolved "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000984.tgz#dc96c3c469e9bcfc6ad5bdd24c77ec918ea76fe0" - -canvas-nest.js@2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/canvas-nest.js/download/canvas-nest.js-2.0.3.tgz#1ee967d977a7a301b8e3eefd16702b812b8ed7f3" - dependencies: - size-sensor "^0.2.0" - -canvas-nest.js@^2.0.3: - version "2.0.4" - resolved "https://registry.npm.taobao.org/canvas-nest.js/download/canvas-nest.js-2.0.4.tgz#e010075d5dbbf3cbfc1ef18942c266b1af873469" - dependencies: - size-sensor "^0.2.0" - -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/capture-exit/download/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - dependencies: - rsvp "^3.3.3" - -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/capture-stack-trace/download/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@~0.5.1: - version "0.5.1" - resolved "https://registry.npm.taobao.org/chalk/download/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" - dependencies: - ansi-styles "^1.1.0" - escape-string-regexp "^1.0.0" - has-ansi "^0.1.0" - strip-ansi "^0.3.0" - supports-color "^0.2.0" - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - -charenc@~0.0.1: - version "0.0.2" - resolved "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - -chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.6: - version "2.1.6" - resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.6.tgz?cache=0&sync_timestamp=1562457945399&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - 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" - -chownr@^1.0.1, chownr@^1.1.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - -chrome-trace-event@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - dependencies: - tslib "^1.9.0" - -ci-info@^1.5.0, ci-info@^1.6.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcircular-json%2Fdownload%2Fcircular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.npm.taobao.org/clap/download/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - dependencies: - chalk "^1.1.3" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - dependencies: - source-map "~0.6.0" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/cli-boxes/download/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-truncate%2Fdownload%2Fcli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -clipboard@^2.0.0: - version "2.0.4" - resolved "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d" - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - -clipboardy@^1.2.2: - version "1.2.3" - resolved "https://registry.npm.taobao.org/clipboardy/download/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" - dependencies: - arch "^2.1.0" - execa "^0.8.0" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -clone@2.x: - version "2.1.2" - resolved "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclone%2Fdownload%2Fclone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclone%2Fdownload%2Fclone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM= - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.npm.taobao.org/coa/download/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/color-string/download/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - dependencies: - color-name "^1.0.0" - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw= - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.npm.taobao.org/color/download/color-0.11.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor%2Fdownload%2Fcolor-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha1-aBSOf4XUGtdknF+oyBBvCY0inhA= - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.npm.taobao.org/colormin/download/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/colors/download/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.npm.taobao.org/colour/download/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - -commander@^2.14.1, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - -commander@~2.6.0: - version "2.6.0" - resolved "https://registry.npm.taobao.org/commander/download/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" - -common-tags@^1.4.0: - version "1.8.0" - resolved "https://registry.npm.taobao.org/common-tags/download/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -compare-func@^1.3.1: - version "1.3.2" - resolved "https://registry.npm.taobao.org/compare-func/download/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - -component-emitter@^1.2.0, component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha1-bowQihatWDhKl386SCyiC/8vOME= - dependencies: - mime-db ">= 1.40.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48= - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.5.0, concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -condense-newlines@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/condense-newlines/download/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" - dependencies: - extend-shallow "^2.0.1" - is-whitespace "^0.3.0" - kind-of "^3.0.2" - -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.npm.taobao.org/configstore/download/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - -consola@^1.4.3: - version "1.4.5" - resolved "https://registry.npm.taobao.org/consola/download/consola-1.4.5.tgz#09732d07cb50af07332e54e0f42fafb92b962c4a" - dependencies: - chalk "^2.3.2" - figures "^2.0.0" - lodash "^4.17.5" - std-env "^1.1.0" - -consola@^2.6.0: - version "2.9.0" - resolved "https://registry.npm.taobao.org/consola/download/consola-2.9.0.tgz?cache=0&sync_timestamp=1560867735070&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsola%2Fdownload%2Fconsola-2.9.0.tgz#57760e3a65a53ec27337f4add31505802d902278" - integrity sha1-V3YOOmWlPsJzN/St0xUFgC2QIng= - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.3, content-disposition@~0.5.2: - version "0.5.3" - resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - dependencies: - safe-buffer "5.1.2" - -content-type@^1.0.4, content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -conventional-changelog-angular@^1.6.6: - version "1.6.6" - resolved "https://registry.npm.taobao.org/conventional-changelog-angular/download/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-atom@^0.2.8: - version "0.2.8" - resolved "https://registry.npm.taobao.org/conventional-changelog-atom/download/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" - dependencies: - q "^1.5.1" - -conventional-changelog-cli@^1.3.22: - version "1.3.22" - resolved "https://registry.npm.taobao.org/conventional-changelog-cli/download/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" - dependencies: - add-stream "^1.0.0" - conventional-changelog "^1.1.24" - lodash "^4.2.1" - meow "^4.0.0" - tempfile "^1.1.1" - -conventional-changelog-codemirror@^0.3.8: - version "0.3.8" - resolved "https://registry.npm.taobao.org/conventional-changelog-codemirror/download/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" - dependencies: - q "^1.5.1" - -conventional-changelog-core@^2.0.11: - version "2.0.11" - resolved "https://registry.npm.taobao.org/conventional-changelog-core/download/conventional-changelog-core-2.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconventional-changelog-core%2Fdownload%2Fconventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" - dependencies: - conventional-changelog-writer "^3.0.9" - conventional-commits-parser "^2.1.7" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "^1.3.6" - git-remote-origin-url "^2.0.0" - git-semver-tags "^1.3.6" - lodash "^4.2.1" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^1.1.0" - read-pkg-up "^1.0.1" - through2 "^2.0.0" - -conventional-changelog-ember@^0.3.12: - version "0.3.12" - resolved "https://registry.npm.taobao.org/conventional-changelog-ember/download/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" - dependencies: - q "^1.5.1" - -conventional-changelog-eslint@^1.0.9: - version "1.0.9" - resolved "https://registry.npm.taobao.org/conventional-changelog-eslint/download/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" - dependencies: - q "^1.5.1" - -conventional-changelog-express@^0.3.6: - version "0.3.6" - resolved "https://registry.npm.taobao.org/conventional-changelog-express/download/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" - dependencies: - q "^1.5.1" - -conventional-changelog-jquery@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/conventional-changelog-jquery/download/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" - dependencies: - q "^1.4.1" - -conventional-changelog-jscs@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/conventional-changelog-jscs/download/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" - dependencies: - q "^1.4.1" - -conventional-changelog-jshint@^0.3.8: - version "0.3.8" - resolved "https://registry.npm.taobao.org/conventional-changelog-jshint/download/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-preset-loader@^1.1.8: - version "1.1.8" - resolved "https://registry.npm.taobao.org/conventional-changelog-preset-loader/download/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" - -conventional-changelog-writer@^3.0.9: - version "3.0.9" - resolved "https://registry.npm.taobao.org/conventional-changelog-writer/download/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^1.1.6" - dateformat "^3.0.0" - handlebars "^4.0.2" - json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" - split "^1.0.0" - through2 "^2.0.0" - -conventional-changelog@^1.1.24: - version "1.1.24" - resolved "https://registry.npm.taobao.org/conventional-changelog/download/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" - dependencies: - conventional-changelog-angular "^1.6.6" - conventional-changelog-atom "^0.2.8" - conventional-changelog-codemirror "^0.3.8" - conventional-changelog-core "^2.0.11" - conventional-changelog-ember "^0.3.12" - conventional-changelog-eslint "^1.0.9" - conventional-changelog-express "^0.3.6" - conventional-changelog-jquery "^0.1.0" - conventional-changelog-jscs "^0.1.0" - conventional-changelog-jshint "^0.3.8" - conventional-changelog-preset-loader "^1.1.8" - -conventional-commits-filter@^1.1.6: - version "1.1.6" - resolved "https://registry.npm.taobao.org/conventional-commits-filter/download/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" - dependencies: - is-subset "^0.1.1" - modify-values "^1.0.0" - -conventional-commits-parser@^2.1.7: - version "2.1.7" - resolved "https://registry.npm.taobao.org/conventional-commits-parser/download/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - trim-off-newlines "^1.0.0" - -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo= - -cookiejar@^2.1.0, cookiejar@^2.1.2: - version "2.1.2" - resolved "https://registry.npm.taobao.org/cookiejar/download/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" - -cookies@~0.7.1: - version "0.7.3" - resolved "https://registry.npm.taobao.org/cookies/download/cookies-0.7.3.tgz#7912ce21fbf2e8c2da70cf1c3f351aecf59dadfa" - dependencies: - depd "~1.1.2" - keygrip "~1.0.3" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - -copy-webpack-plugin@^4.5.1: - version "4.6.0" - resolved "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" - minimatch "^3.0.4" - p-limit "^1.0.0" - serialize-javascript "^1.4.0" - -copy-webpack-plugin@^5.0.2: - version "5.0.3" - resolved "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.0.3.tgz#2179e3c8fd69f13afe74da338896f1f01a875b5c" - integrity sha1-IXnjyP1p8Tr+dNoziJbx8BqHW1w= - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - webpack-log "^2.0.0" - -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.5: - version "2.6.9" - resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cosmiconfig@^5.0.0, cosmiconfig@^5.0.2: - version "5.2.1" - resolved "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.npm.taobao.org/create-error-class/download/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypt@~0.0.1: - version "0.0.2" - resolved "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha1-wZiUD2OnbX42wecQGLABchBUyyI= - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^0.28.11: - version "0.28.11" - resolved "https://registry.npm.taobao.org/css-loader/download/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - cssnano "^3.10.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.1.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-loader@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/css-loader/download/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha1-2CVPcuQSuyI4u0TdZ0/770lzM+o= - dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.14" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" - -css-parse@1.7.x: - version "1.7.0" - resolved "https://registry.npm.taobao.org/css-parse/download/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc= - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/css-select/download/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" - integrity sha1-q0OGzsnh9miFVWSxfDcztDsqXt4= - dependencies: - boolbase "^1.0.0" - css-what "^2.1.2" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" - integrity sha1-P6nU7zFCy9HDAedmTB81K9gvWjk= - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-tree@1.0.0-alpha.33: - version "1.0.0-alpha.33" - resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.33.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e" - integrity sha1-lw4g5akfejeN3Q/FjQtsjU876T4= - dependencies: - mdn-data "2.0.4" - source-map "^0.5.3" - -css-unit-converter@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" - integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= - -css-what@2.1, css-what@^2.1.2: - version "2.1.3" - resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - -css@^2.1.0, css@~2.2.0: - version "2.2.4" - resolved "https://registry.npm.taobao.org/css/download/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4= - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y= - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI= - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M= - -cssnano@^3.10.0: - version "3.10.0" - resolved "https://registry.npm.taobao.org/cssnano/download/cssnano-3.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssnano%2Fdownload%2Fcssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI= - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^3.5.1: - version "3.5.1" - resolved "https://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" - integrity sha1-e564vmFiiXPBsmHhadLwJACOdYs= - dependencies: - css-tree "1.0.0-alpha.29" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.npm.taobao.org/csso/download/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -"cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npm.taobao.org/cssom/download/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - -cssstyle@^1.0.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/cssstyle/download/cssstyle-1.3.0.tgz?cache=0&sync_timestamp=1561995689620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssstyle%2Fdownload%2Fcssstyle-1.3.0.tgz#c36c466f7037fd30f03baa271b65f0f17b50585c" - dependencies: - cssom "~0.3.6" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.npm.taobao.org/cyclist/download/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - -d@1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/d/download/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.npm.taobao.org/dargs/download/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - dependencies: - number-is-nan "^1.0.0" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/data-urls/download/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.npm.taobao.org/dateformat/download/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - -debug@*, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - dependencies: - ms "^2.1.1" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - dependencies: - ms "^2.1.1" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/decamelize-keys/download/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - -deep-equal@^1.0.1, deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs= - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/default-require-extensions/download/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/defined/download/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha1-no8RciLqRKMf86FWwEm5kFKp8LQ= - dependencies: - "@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" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@^1.0.4, destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/detect-indent/download/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/detect-newline/download/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha1-AU7o+PZpxcWAI9pkuBecCDooxGw= - -diacritics@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/diacritics/download/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" - -diff@^3.2.0: - version "3.5.0" - resolved "https://registry.npm.taobao.org/diff/download/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - dependencies: - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo= - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -docsearch.js@^2.5.2: - version "2.6.3" - resolved "https://registry.npm.taobao.org/docsearch.js/download/docsearch.js-2.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdocsearch.js%2Fdownload%2Fdocsearch.js-2.6.3.tgz#57cb4600d3b6553c677e7cbbe6a734593e38625d" - dependencies: - algoliasearch "^3.24.5" - autocomplete.js "0.36.0" - hogan.js "^3.0.2" - request "^2.87.0" - stack-utils "^1.0.1" - to-factory "^1.0.0" - zepto "^1.2.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - dependencies: - utila "~0.4" - -dom-event-types@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/dom-event-types/download/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" - -dom-serializer@0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -dot-prop@^4.1.0, dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/duplexer3/download/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.npm.taobao.org/editorconfig/download/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.191, electron-to-chromium@^1.3.47: - version "1.3.191" - resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.191.tgz#c451b422cd8b2eab84dedabab5abcae1eaefb6f0" - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - -elliptic@^6.0.0: - version "6.5.0" - resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.0.tgz?cache=0&sync_timestamp=1562717843273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - -envify@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/envify/download/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e" - dependencies: - esprima "^4.0.0" - through "~2.3.4" - -envinfo@^7.2.0: - version "7.3.1" - resolved "https://registry.npm.taobao.org/envinfo/download/envinfo-7.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenvinfo%2Fdownload%2Fenvinfo-7.3.1.tgz#892e42f7bf858b3446d9414ad240dbaf8da52f09" - integrity sha1-iS5C97+FizRG2UFK0kDbr42lLwk= - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -error-inject@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" - -es-abstract@^1.12.0, es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.50" - resolved "https://registry.npm.taobao.org/es5-ext/download/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/es6-iterator/download/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-promise@4.2.3: - version "4.2.3" - resolved "https://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes6-promise%2Fdownload%2Fes6-promise-4.2.3.tgz#29454b8db21b73fbef1df070c35dc09b7fd606c4" - -es6-promise@^4.1.0: - version "4.2.8" - resolved "https://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes6-promise%2Fdownload%2Fes6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.npm.taobao.org/es6-symbol/download/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.9.1: - version "1.11.1" - resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-plugin-jest@^21.15.1: - version "21.27.2" - resolved "https://registry.npm.taobao.org/eslint-plugin-jest/download/eslint-plugin-jest-21.27.2.tgz#2a795b7c3b5e707df48a953d651042bd01d7b0a8" - -eslint-plugin-vue-libs@^3.0.0: - version "3.0.2" - resolved "https://registry.npm.taobao.org/eslint-plugin-vue-libs/download/eslint-plugin-vue-libs-3.0.2.tgz#9a3dfd8fb989e6c77fd4c1dbd46f0dfe13ed0d55" - dependencies: - babel-eslint "^8.2.3" - eslint-plugin-vue "^4.5.0" - -eslint-plugin-vue@^4.5.0: - version "4.7.1" - resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz?cache=0&sync_timestamp=1561378693439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-4.7.1.tgz#c829b9fc62582c1897b5a0b94afd44ecca511e63" - dependencies: - vue-eslint-parser "^2.0.3" - -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.0: - version "4.0.3" - resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - -eslint@^4.19.1: - version "4.19.1" - resolved "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -espree@^3.5.2, espree@^3.5.4: - version "3.5.4" - resolved "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - -esquery@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - dependencies: - estraverse "^4.1.0" - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-2.0.3.tgz?cache=0&sync_timestamp=1560950873670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" - -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz?cache=0&sync_timestamp=1560950873670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - -events@^1.1.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/events/download/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -events@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/events/download/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA= - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.npm.taobao.org/exec-sh/download/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - dependencies: - merge "^1.2.0" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz?cache=0&sync_timestamp=1562315784630&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1562315784630&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.9.0: - version "0.9.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-0.9.0.tgz?cache=0&sync_timestamp=1562315784630&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg= - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expect@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/expect/download/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^23.6.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ= - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-from-css@^0.4.4: - version "0.4.4" - resolved "https://registry.npm.taobao.org/extract-from-css/download/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92" - dependencies: - css "^2.1.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - -fast-glob@^2.0.2, fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha1-XA6aiWjokSwoZjn96XeosgnyUI4= - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/fb-watchman/download/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - dependencies: - bser "^2.0.0" - -figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/figures/download/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" - integrity sha1-dWJ1yWRkYWPMb5GXx6ApXb/QTek= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-loader@^1.1.11: - version "1.1.11" - resolved "https://registry.npm.taobao.org/file-loader/download/file-loader-1.1.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.4.5" - -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o= - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.npm.taobao.org/fileset/download/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0= - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-babel-config@^1.1.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-parent-dir@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/find-parent-dir/download/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - dependencies: - locate-path "^3.0.0" - -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/flatten/download/flatten-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatten%2Fdownload%2Fflatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" - integrity sha1-SJ68GY3A5/ZBZ70jsDxMGbV4THY= - dependencies: - debug "^3.2.6" - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.npm.taobao.org/foreach/download/foreach-2.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fforeach%2Fdownload%2Fforeach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@^2.3.1, form-data@^2.3.3: - version "2.5.0" - resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.5.0.tgz#094ec359dc4b55e7d62e0db4acd76e89fe874d37" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -formidable@^1.2.0: - version "1.2.1" - resolved "https://registry.npm.taobao.org/formidable/download/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2, fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-4.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-5.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha1-TxicRKoSO4lfcigE9V6iPq3DSOk= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@~0.16.3: - version "0.16.5" - resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-0.16.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-0.16.5.tgz#1ad661fa6c86c9608cd1b49efc6fce834939a750" - dependencies: - graceful-fs "^3.0.5" - jsonfile "^2.0.0" - rimraf "^2.2.8" - -fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - dependencies: - minipass "^2.2.1" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.2.3, fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" - -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/get-pkg-repo/download/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" - through2 "^2.0.0" - -get-port@^3.2.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/get-port/download/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU= - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -git-raw-commits@^1.3.6: - version "1.3.6" - resolved "https://registry.npm.taobao.org/git-raw-commits/download/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/git-remote-origin-url/download/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^1.3.6: - version "1.3.6" - resolved "https://registry.npm.taobao.org/git-semver-tags/download/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" - dependencies: - meow "^4.0.0" - semver "^5.5.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/gitconfiglocal/download/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - dependencies: - ini "^1.3.2" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - -glob@7.0.x: - version "7.0.6" - resolved "https://registry.npm.taobao.org/glob/download/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - 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" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/global-dirs/download/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - dependencies: - ini "^1.3.4" - -global@^4.3.2: - version "4.4.0" - resolved "https://registry.npm.taobao.org/global/download/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.0.1, globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.npm.taobao.org/globals/download/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.npm.taobao.org/globby/download/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" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz?cache=0&sync_timestamp=1562335642755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.npm.taobao.org/globby/download/globby-8.0.2.tgz?cache=0&sync_timestamp=1562335642755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha1-/QKacGxwPSm90XD0tts6P3p8tj0= - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - dependencies: - delegate "^3.1.2" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.npm.taobao.org/got/download/got-6.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^3.0.5: - version "3.0.11" - resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" - dependencies: - natives "^1.1.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.0" - resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - -gray-matter@^4.0.1: - version "4.0.2" - resolved "https://registry.npm.taobao.org/gray-matter/download/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454" - dependencies: - js-yaml "^3.11.0" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/growly/download/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q= - -handlebars@^4.0.2, handlebars@^4.0.3: - version "4.1.2" - resolved "https://registry.npm.taobao.org/handlebars/download/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/has-ansi/download/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" - dependencies: - ansi-regex "^0.2.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4= - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.npm.taobao.org/hoek/download/hoek-4.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhoek%2Fdownload%2Fhoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - -hogan.js@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/hogan.js/download/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" - dependencies: - mkdirp "0.3.0" - nopt "1.0.10" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-assert@^1.3.0: - version "1.4.1" - resolved "https://registry.npm.taobao.org/http-assert/download/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" - dependencies: - deep-equal "~1.0.1" - http-errors "~1.7.2" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.6.1, http-errors@^1.6.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-middleware@^0.19.1: - version "0.19.1" - resolved "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha1-GDx9xKoUeRUDBkmMIQza+WCApDo= - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.17.0" - resolved "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha1-etOElGWPhGBeL220Q230EPTlvpo= - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1561588160612&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/icss-utils/download/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - dependencies: - postcss "^6.0.1" - -icss-utils@^4.1.0: - version "4.1.1" - resolved "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc= - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - -ignore@^3.3.3, ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - -ignore@^4.0.3: - version "4.0.6" - resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= - -immediate@^3.2.3: - version "3.2.3" - resolved "https://registry.npm.taobao.org/immediate/download/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1561888919431&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/import-local/download/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha1-VQcL44pZk88Y72236WH1vuXFoJ0= - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc= - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI= - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.0, ipaddr.js@^1.9.0: - version "1.9.0" - resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U= - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha1-RXSirlb3qyBolvtDHq7tBm/fjwM= - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5, is-buffer@~1.1.1: - version "1.1.6" - resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - -is-ci@^1.0.10, is-ci@^1.1.0: - version "1.2.1" - resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - dependencies: - ci-info "^1.5.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-generator-fn/download/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - -is-generator-function@^1.0.7: - version "1.0.7" - resolved "https://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/is-installed-globally/download/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-npm/download/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-obj@^1.0.0, is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-observable/download/is-observable-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-observable%2Fdownload%2Fis-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz?cache=0&sync_timestamp=1562347283002&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-cwd%2Fdownload%2Fis-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s= - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha1-v+Lcomxp85cmWkAJljYCk1oFOss= - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - dependencies: - path-is-inside "^1.0.1" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha1-fJgQWH1lmkDSe8201WFuqwWUlLI= - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/is-subset/download/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-svg/download/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - dependencies: - html-comment-regex "^1.1.0" - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha1-kyHb0pwhLlypnE+peUxxS8r6L3U= - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - dependencies: - has-symbols "^1.0.0" - -is-text-path@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-text-path/download/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - dependencies: - text-extensions "^1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-whitespace@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/is-whitespace/download/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.npm.taobao.org/isarray/download/isarray-2.0.5.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - -isemail@3.x.x: - version "3.2.0" - resolved "https://registry.npm.taobao.org/isemail/download/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" - dependencies: - punycode "2.x.x" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-api@^1.3.1: - version "1.3.7" - resolved "https://registry.npm.taobao.org/istanbul-api/download/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-1.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-coverage%2Fdownload%2Fistanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.npm.taobao.org/istanbul-lib-hook/download/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: - version "1.10.2" - resolved "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-1.10.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-instrument%2Fdownload%2Fistanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-1.1.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-report%2Fdownload%2Fistanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - dependencies: - handlebars "^4.0.3" - -javascript-state-machine@^2.3.5: - version "2.4.0" - resolved "https://registry.npm.taobao.org/javascript-state-machine/download/javascript-state-machine-2.4.0.tgz#d8be31ec38f24ac1a1832f0b672fc3cd5f79c96e" - -javascript-stringify@^1.6.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" - -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" - dependencies: - throat "^4.0.0" - -jest-cli@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.6.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.6.0" - jest-runner "^23.6.0" - jest-runtime "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" - -jest-config@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" - dependencies: - babel-core "^6.0.0" - babel-jest "^23.6.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.6.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - pretty-format "^23.6.0" - -jest-diff@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-diff/download/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" - dependencies: - detect-newline "^2.1.0" - -jest-each@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-each/download/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" - dependencies: - chalk "^2.0.1" - pretty-format "^23.6.0" - -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - jsdom "^11.5.1" - -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - -jest-haste-map@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-23.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-haste-map%2Fdownload%2Fjest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" - -jest-jasmine2@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" - dependencies: - babel-traverse "^6.0.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^23.6.0" - is-generator-fn "^1.0.0" - jest-diff "^23.6.0" - jest-each "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - pretty-format "^23.6.0" - -jest-leak-detector@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" - dependencies: - pretty-format "^23.6.0" - -jest-matcher-utils@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - -jest-resolve-dependencies@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" - dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.6.0" - -jest-resolve@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" - dependencies: - browser-resolve "^1.11.3" - chalk "^2.0.1" - realpath-native "^1.0.0" - -jest-runner@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" - dependencies: - exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.6.0" - jest-jasmine2 "^23.6.0" - jest-leak-detector "^23.6.0" - jest-message-util "^23.4.0" - jest-runtime "^23.6.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" - chalk "^2.0.1" - convert-source-map "^1.4.0" - exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" - -jest-serializer-vue@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/jest-serializer-vue/download/jest-serializer-vue-1.0.0.tgz#82514e9b3d94a17fe618df3ede84046090f94815" - dependencies: - pretty "2.0.0" - -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" - -jest-snapshot@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" - dependencies: - babel-types "^6.0.0" - chalk "^2.0.1" - jest-diff "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-resolve "^23.6.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^23.6.0" - semver "^5.5.0" - -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" - mkdirp "^0.5.1" - slash "^1.0.0" - source-map "^0.6.0" - -jest-validate@^23.5.0, jest-validate@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.6.0" - -jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - string-length "^2.0.0" - -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - dependencies: - merge-stream "^1.0.1" - -jest@^23.0.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/jest/download/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" - dependencies: - import-local "^1.0.0" - jest-cli "^23.6.0" - -joi@^11.1.1: - version "11.4.0" - resolved "https://registry.npm.taobao.org/joi/download/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" - dependencies: - hoek "4.x.x" - isemail "3.x.x" - topo "2.x.x" - -js-base64@^2.1.9: - version "2.5.1" - resolved "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - -js-beautify@^1.6.12, js-beautify@^1.6.14: - version "1.10.0" - resolved "https://registry.npm.taobao.org/js-beautify/download/js-beautify-1.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-beautify%2Fdownload%2Fjs-beautify-1.10.0.tgz#9753a13c858d96828658cd18ae3ca0e5783ea672" - dependencies: - config-chain "^1.1.12" - editorconfig "^0.15.3" - glob "^7.1.3" - mkdirp "~0.5.1" - nopt "~4.0.1" - -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0= - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - -js-yaml@^3.11.0, js-yaml@^3.13.1, js-yaml@^3.7.0, js-yaml@^3.9.1: - version "3.13.1" - resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-11.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsdom%2Fdownload%2Fjsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E= - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - dependencies: - minimist "^1.2.0" - -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha1-56DGLEgoXGKNIKELhcibuAfDKFA= - dependencies: - minimist "^1.2.0" - -jsonfile@^2.0.0: - version "2.4.0" - resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.npm.taobao.org/jsonparse/download/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keygrip@~1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/keygrip/download/keygrip-1.0.3.tgz#399d709f0aed2bab0a059e0cdd3a5023a053e1dc" - -killable@^1.0.0, killable@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - -kleur@^2.0.1: - version "2.0.2" - resolved "https://registry.npm.taobao.org/kleur/download/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" - -koa-compose@^3.0.0, koa-compose@^3.2.1: - version "3.2.1" - resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" - dependencies: - any-promise "^1.1.0" - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - -koa-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/koa-connect/download/koa-connect-2.0.1.tgz#2acad159c33862de1d73aa4562a48de13f137c0f" - -koa-convert@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-convert%2Fdownload%2Fkoa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" - dependencies: - co "^4.6.0" - koa-compose "^3.0.0" - -koa-is-json@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" - -koa-mount@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/koa-mount/download/koa-mount-3.0.0.tgz#08cab3b83d31442ed8b7e75c54b1abeb922ec197" - dependencies: - debug "^2.6.1" - koa-compose "^3.2.1" - -koa-range@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/koa-range/download/koa-range-0.3.0.tgz#3588e3496473a839a1bd264d2a42b1d85bd7feac" - dependencies: - stream-slice "^0.1.2" - -koa-send@^4.1.3: - version "4.1.3" - resolved "https://registry.npm.taobao.org/koa-send/download/koa-send-4.1.3.tgz#0822207bbf5253a414c8f1765ebc29fa41353cb6" - dependencies: - debug "^2.6.3" - http-errors "^1.6.1" - mz "^2.6.0" - resolve-path "^1.4.0" - -koa-static@^4.0.2: - version "4.0.3" - resolved "https://registry.npm.taobao.org/koa-static/download/koa-static-4.0.3.tgz#5f93ad00fb1905db9ce46667c0e8bb7d22abfcd8" - dependencies: - debug "^3.1.0" - koa-send "^4.1.3" - -koa-webpack@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/koa-webpack/download/koa-webpack-4.0.0.tgz#1d9b83c109db106d8ef65db376f910a45ba964c7" - dependencies: - app-root-path "^2.0.1" - merge-options "^1.0.0" - webpack-dev-middleware "^3.0.0" - webpack-hot-client "^3.0.0" - webpack-log "^1.1.1" - -koa@^2.4.1: - version "2.7.0" - resolved "https://registry.npm.taobao.org/koa/download/koa-2.7.0.tgz#7e00843506942b9d82c6cc33749f657c6e5e7adf" - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.7.1" - debug "~3.1.0" - delegates "^1.0.0" - depd "^1.1.2" - destroy "^1.0.4" - error-inject "^1.0.0" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^1.2.0" - koa-is-json "^1.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/last-call-webpack-plugin/download/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/latest-version/download/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - dependencies: - package-json "^4.0.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha1-bvXS32DlL4LrIopMNz6NHzlyU88= - dependencies: - invert-kv "^2.0.0" - -leancloud-realtime-plugin-live-query@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/leancloud-realtime-plugin-live-query/download/leancloud-realtime-plugin-live-query-1.2.0.tgz#1e07da1b5b99e44cddbc3b052234422f278c4ab9" - -leancloud-realtime@^5.0.0-alpha.3: - version "5.0.0-alpha.3" - resolved "https://registry.npm.taobao.org/leancloud-realtime/download/leancloud-realtime-5.0.0-alpha.3.tgz#61e7e455f265ba5b6bd032e1afdc6bd929ee158c" - dependencies: - "@babel/runtime" "^7.0.0" - base64-arraybuffer "^0.1.5" - debug "^3.1.0" - eventemitter3 "^3.0.0" - javascript-state-machine "^2.3.5" - lodash "^4.17.10" - protobufjs "^5.0.1" - superagent "^4.1.0" - uuid "^3.0.0" - ws "^5.2.1" - -leancloud-storage@^3.10.0: - version "3.14.1" - resolved "https://registry.npm.taobao.org/leancloud-storage/download/leancloud-storage-3.14.1.tgz#127520b69afdcd03e60b4454da6e7b925d651012" - dependencies: - debug "^3.1.0" - es6-promise "4.2.3" - eventemitter3 "^2.0.3" - leancloud-realtime "^5.0.0-alpha.3" - leancloud-realtime-plugin-live-query "^1.2.0" - localstorage-memory "^1.0.1" - md5 "^2.0.0" - superagent "^3.3.1" - underscore "^1.8.3" - uuid "^3.3.2" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/left-pad/download/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/linkify-it/download/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - dependencies: - uc.micro "^1.0.1" - -lint-staged@^7.0.4: - version "7.3.0" - resolved "https://registry.npm.taobao.org/lint-staged/download/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d" - dependencies: - chalk "^2.3.1" - commander "^2.14.1" - cosmiconfig "^5.0.2" - debug "^3.1.0" - dedent "^0.7.0" - execa "^0.9.0" - find-parent-dir "^0.3.0" - is-glob "^4.0.0" - is-windows "^1.0.2" - jest-validate "^23.5.0" - listr "^0.14.1" - lodash "^4.17.5" - log-symbols "^2.2.0" - micromatch "^3.1.8" - npm-which "^3.0.1" - p-map "^1.1.1" - path-is-inside "^1.0.2" - pify "^3.0.0" - please-upgrade-node "^3.0.2" - staged-git-files "1.1.1" - string-argv "^0.0.2" - stringify-object "^3.2.2" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.1: - version "0.14.3" - resolved "https://registry.npm.taobao.org/listr/download/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -load-script@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/load-script/download/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" - -loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -localstorage-memory@^1.0.1: - version "1.0.3" - resolved "https://registry.npm.taobao.org/localstorage-memory/download/localstorage-memory-1.0.3.tgz#566b37968fe0c4d76ba36a6da564fa613945ca72" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/lodash.camelcase/download/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.clonedeep%2Fdownload%2Flodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - -lodash.template@^4.0.2, lodash.template@^4.4.0: - version "4.5.0" - resolved "https://registry.npm.taobao.org/lodash.template/download/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/lodash.templatesettings/download/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -lodash@4.x, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: - version "4.17.14" - resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.14.tgz?cache=0&sync_timestamp=1562774134174&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - dependencies: - chalk "^1.0.0" - -log-symbols@^2.1.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/log-update/download/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -loglevel@^1.6.3: - version "1.6.3" - resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" - integrity sha1-d/LrZL5VpATJ/QStFtV8HW1rEoA= - -loglevelnext@^1.0.1, loglevelnext@^1.0.2: - version "1.0.5" - resolved "https://registry.npm.taobao.org/loglevelnext/download/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - -long@~3: - version "3.2.0" - resolved "https://registry.npm.taobao.org/long/download/long-3.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flong%2Fdownload%2Flong-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.6.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - dependencies: - yallist "^3.0.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npm.taobao.org/makeerror/download/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - dependencies: - tmpl "1.0.x" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.npm.taobao.org/mamacro/download/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo= - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1560578867343&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/map-obj/download/map-obj-2.0.0.tgz?cache=0&sync_timestamp=1560578867343&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" - -markdown-it-anchor@^5.0.2: - version "5.2.4" - resolved "https://registry.npm.taobao.org/markdown-it-anchor/download/markdown-it-anchor-5.2.4.tgz#d39306fe4c199705b4479d3036842cf34dcba24f" - -markdown-it-chain@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/markdown-it-chain/download/markdown-it-chain-1.3.0.tgz#ccf6fe86c10266bafb4e547380dfd7f277cc17bc" - integrity sha1-zPb+hsECZrr7TlRzgN/X8nfMF7w= - dependencies: - webpack-chain "^4.9.0" - -markdown-it-container@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/markdown-it-container/download/markdown-it-container-2.0.0.tgz#0019b43fd02eefece2f1960a2895fba81a404695" - -markdown-it-emoji@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/markdown-it-emoji/download/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" - -markdown-it-table-of-contents@^0.4.0: - version "0.4.4" - resolved "https://registry.npm.taobao.org/markdown-it-table-of-contents/download/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" - -markdown-it@^8.4.1: - version "8.4.2" - resolved "https://registry.npm.taobao.org/markdown-it/download/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" - dependencies: - argparse "^1.0.7" - entities "~1.1.1" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.npm.taobao.org/math-random/download/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -md5@^2.0.0: - version "2.2.1" - resolved "https://registry.npm.taobao.org/md5/download/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs= - -mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" - integrity sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE= - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/mem/download/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg= - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/meow/download/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/meow/download/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-options@^1.0.0, merge-options@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/merge-options/download/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32" - dependencies: - is-plain-obj "^1.1" - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - dependencies: - source-map "^0.6.1" - -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" - -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.npm.taobao.org/merge2/download/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.npm.taobao.org/merge/download/merge-1.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge%2Fdownload%2Fmerge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - -methods@^1.1.1, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: - version "3.1.10" - resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - dependencies: - mime-db "1.40.0" - -mime@1.6.0, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - -mime@^2.0.3, mime@^2.4.0, mime@^2.4.2: - version "2.4.4" - resolved "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - -mini-css-extract-plugin@0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" - integrity sha1-o/Ezctb83pEvPuTNA5ZlcEgB47k= - dependencies: - loader-utils "^1.1.0" - normalize-url "^2.0.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -mini-css-extract-plugin@^0.4.1: - version "0.4.5" - resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a" - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimatch%2Fdownload%2Fminimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.npm.taobao.org/minimist-options/download/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -minipass@^2.2.1, minipass@^2.3.5: - version "2.3.5" - resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - dependencies: - minipass "^2.2.1" - -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561409514276&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/modify-values/download/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha1-oOx72QVcQoL3kMPIL04o2zsxsik= - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -mz@^2.6.0: - version "2.7.0" - resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - -nanoassert@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/nanoassert/download/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" - -nanobus@^4.3.1: - version "4.4.0" - resolved "https://registry.npm.taobao.org/nanobus/download/nanobus-4.4.0.tgz#e5c20846fa17cff01ef5aac301410d1e541f81ed" - dependencies: - nanoassert "^1.1.0" - nanotiming "^7.2.0" - remove-array-items "^1.0.0" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -nanoscheduler@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/nanoscheduler/download/nanoscheduler-1.0.3.tgz#6ca027941bf3e04139ea4bab6227ea6ad803692f" - dependencies: - nanoassert "^1.1.0" - -nanotiming@^7.2.0: - version "7.3.1" - resolved "https://registry.npm.taobao.org/nanotiming/download/nanotiming-7.3.1.tgz#dc5cf8d9d8ad401a4394d1a9b7a16714bccfefda" - dependencies: - nanoassert "^1.1.0" - nanoscheduler "^1.0.2" - -natives@^1.1.0: - version "1.1.6" - resolved "https://registry.npm.taobao.org/natives/download/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.npm.taobao.org/needle/download/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - -next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/next-tick/download/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - dependencies: - lower-case "^1.1.1" - -node-cache@^4.1.1: - version "4.2.0" - resolved "https://registry.npm.taobao.org/node-cache/download/node-cache-4.2.0.tgz#48ac796a874e762582692004a376d26dfa875811" - dependencies: - clone "2.x" - lodash "4.x" - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.npm.taobao.org/node-forge/download/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8= - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/node-int64/download/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - -node-libs-browser@^2.0.0: - version "2.2.1" - resolved "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.npm.taobao.org/node-notifier/download/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.25: - version "1.1.25" - resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" - integrity sha1-DC19vH/tMPvgKp7jAHuMkL8BM9M= - dependencies: - semver "^5.3.0" - -nopt@1.0.10: - version "1.0.10" - resolved "https://registry.npm.taobao.org/nopt/download/nopt-1.0.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - -nopt@^4.0.1, nopt@~4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: - version "2.5.0" - resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - -normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha1-g1qdoVUfom9w6SMpBpojqmV01+Y= - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk= - -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - -npm-packlist@^1.1.6: - version "1.4.4" - resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-path@^2.0.2: - version "2.0.4" - resolved "https://registry.npm.taobao.org/npm-path/download/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" - dependencies: - which "^1.2.10" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npm-which@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/npm-which/download/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" - dependencies: - commander "^2.9.0" - npm-path "^2.0.2" - which "^1.2.10" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/nprogress/download/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -nwsapi@^2.0.7: - version "2.1.4" - resolved "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha1-v2gQ712j5TJXkOqqK+IT6oRiTak= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4= - -on-finished@^2.3.0, on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8= - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.npm.taobao.org/only/download/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - -opn@^5.1.0, opn@^5.5.0: - version "5.5.0" - resolved "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopn%2Fdownload%2Fopn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - dependencies: - is-wsl "^1.1.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optimize-css-assets-webpack-plugin@^4.0.0: - version "4.0.3" - resolved "https://registry.npm.taobao.org/optimize-css-assets-webpack-plugin/download/optimize-css-assets-webpack-plugin-4.0.3.tgz#4f714e276b279700892c4a6202b7e22812d6f683" - dependencies: - cssnano "^3.10.0" - last-call-webpack-plugin "^3.0.0" - -optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.3" - resolved "https://registry.npm.taobao.org/optimize-css-assets-webpack-plugin/download/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha1-4vHU2UrYwK+JZ+vXzxONyx7xRXI= - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.npm.taobao.org/optjs/download/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8= - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz?cache=0&sync_timestamp=1560274285880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-2.1.0.tgz?cache=0&sync_timestamp=1560274285880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo= - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4= - -p-limit@^1.0.0, p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - dependencies: - p-limit "^2.0.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz?cache=0&sync_timestamp=1563032875018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz?cache=0&sync_timestamp=1563032875018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha1-MWtMiJPiyNwc+okfQGxLQivr8yg= - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@~1.0.5: - version "1.0.10" - resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.npm.taobao.org/parse-github-repo-url/download/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - -parseurl@^1.3.2, parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5, path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - dependencies: - pify "^3.0.0" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -please-upgrade-node@^3.0.2: - version "3.1.1" - resolved "https://registry.npm.taobao.org/please-upgrade-node/download/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - dependencies: - semver-compare "^1.0.0" - -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/pn/download/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - -portfinder@^1.0.13, portfinder@^1.0.20: - version "1.0.21" - resolved "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.21.tgz#60e1397b95ac170749db70034ece306b9a27e324" - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-calc@^7.0.1: - version "7.0.1" - resolved "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" - integrity sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY= - dependencies: - css-unit-converter "^1.1.1" - postcss "^7.0.5" - postcss-selector-parser "^5.0.0-rc.4" - postcss-value-parser "^3.3.1" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha1-rgYLzpPteUrHEmTwgTLVUJVr04E= - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8= - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - dependencies: - postcss "^5.0.14" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha1-H7q9LCRr/2qq15l7KwkY9NevQDM= - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - dependencies: - postcss "^5.0.4" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha1-P+EzzTyCKC5VD8myORdqkge3hOs= - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - dependencies: - postcss "^5.0.14" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha1-yMlR6fc+2UKAGUWERKAq2Qu592U= - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - dependencies: - postcss "^5.0.16" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha1-ZSrvipZybwKfXj4AFG7npOdV/1c= - dependencies: - postcss "^7.0.0" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.npm.taobao.org/postcss-discard-unused/download/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.npm.taobao.org/postcss-filter-plugins/download/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - dependencies: - postcss "^5.0.4" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^2.1.5: - version "2.1.6" - resolved "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" - dependencies: - loader-utils "^1.1.0" - postcss "^6.0.0" - postcss-load-config "^2.0.0" - schema-utils "^0.4.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0= - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.npm.taobao.org/postcss-merge-idents/download/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - dependencies: - postcss "^5.0.4" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ= - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha1-NivqT/Wh+Y5AdacTxsslrv75plA= - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/postcss-message-helpers/download/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY= - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE= - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ= - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g= - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-1.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - dependencies: - postcss "^6.0.1" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha1-gYcZoa4doyX5gyRGsBE27rSTzX4= - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha1-3ZlT9t1Ha1/R7y2IMMiSl2C1bmM= - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" - -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha1-rT9b94VhFPb8q5AbBQLiorw51Os= - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha1-R5tG3Axco9x/pScIUYNrnscVL2Q= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^7.0.6" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - dependencies: - postcss "^5.0.5" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha1-izWt067oOhNrBHHg1ZvlilAoXdQ= - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha1-Db4EpM6QY9RmftK+R2u4MMglk1o= - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8= - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw= - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw= - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha1-jgCcoqOUnNr4rSPmtquZy159KNk= - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs= - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI= - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4= - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.npm.taobao.org/postcss-reduce-idents/download/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - dependencies: - postcss "^5.0.4" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha1-f9QuvqXpyBRgljniwuhK4nC6SN8= - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha1-F++kBerMbge+NBSlyi0QdGgdTik= - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-safe-parser@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-safe-parser/download/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha1-h1bZ5MNv3OLHKwkbvIyhdqsfzeo= - dependencies: - postcss "^7.0.0" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^3.0.0: - version "3.1.1" - resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" - integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= - dependencies: - dot-prop "^4.1.1" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0: - version "6.0.2" - resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw= - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha1-F7mXvHEbMzurFDqu07jT1uPTglg= - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w= - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: - version "3.3.1" - resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - -postcss-value-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.0.tgz#99a983d365f7b2ad8d0f9b8c3094926eab4b936d" - integrity sha1-mamD02X3sq2ND5uMMJSSbqtLk20= - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.npm.taobao.org/postcss-zindex/download/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.npm.taobao.org/postcss/download/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.23: - version "6.0.23" - resolved "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.17" - resolved "https://registry.npm.taobao.org/postcss/download/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -prettier@1.16.3: - version "1.16.3" - resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" - -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/pretty-bytes/download/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/pretty-time/download/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - -pretty@2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/pretty/download/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" - dependencies: - condense-newlines "^0.2.1" - extend-shallow "^2.0.1" - js-beautify "^1.6.12" - -prismjs@^1.13.0: - version "1.16.0" - resolved "https://registry.npm.taobao.org/prismjs/download/prismjs-1.16.0.tgz#406eb2c8aacb0f5f0f1167930cb83835d10a4308" - optionalDependencies: - clipboard "^2.0.0" - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.npm.taobao.org/prompts/download/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" - dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - -protobufjs@^5.0.1: - version "5.0.3" - resolved "https://registry.npm.taobao.org/protobufjs/download/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ= - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -psl@^1.1.24, psl@^1.1.28: - version "1.2.0" - resolved "https://registry.npm.taobao.org/psl/download/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0, pump@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -px2rem-loader@^0.1.9: - version "0.1.9" - resolved "https://registry.npm.taobao.org/px2rem-loader/download/px2rem-loader-0.1.9.tgz#c8f2bf8be8b9a6b43a5f67d14b2febe1160e56a0" - dependencies: - loader-utils "^1.1.0" - px2rem "^0.5.0" - -px2rem@^0.5.0: - version "0.5.0" - resolved "https://registry.npm.taobao.org/px2rem/download/px2rem-0.5.0.tgz#24b3a6cf74d14adb4ed776f207871d9893e410e2" - dependencies: - chalk "~0.5.1" - commander "~2.6.0" - css "~2.2.0" - extend "~3.0.0" - fs-extra "~0.16.3" - -q@^1.1.2, q@^1.4.1, q@^1.5.1: - version "1.5.1" - resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -qs@6.7.0, qs@^6.5.1, qs@^6.6.0: - version "6.7.0" - resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s= - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0, querystring-es3@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= - -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/quick-lru/download/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI= - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: - version "1.2.8" - resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg@^1.0.0, read-pkg@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&sync_timestamp=1562457210009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -realpath-native@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/realpath-native/download/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - dependencies: - util.promisify "^1.0.0" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/redent/download/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.npm.taobao.org/reduce-css-calc/download/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/reduce-function-call/download/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - dependencies: - balanced-match "^0.4.2" - -reduce@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/reduce/download/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b" - dependencies: - object-keys "^1.1.0" - -regenerate-unicode-properties@^8.0.2: - version "8.1.0" - resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - -regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: - version "0.11.1" - resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - -regenerator-transform@^0.12.3: - version "0.12.4" - resolved "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.12.4.tgz#aa9b6c59f4b97be080e972506c560b3bccbfcff0" - dependencies: - private "^0.1.6" - -regenerator-transform@^0.14.0: - version "0.14.0" - resolved "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" - integrity sha1-LKmq96LCOd0y5HYSGEJbjHqG7K8= - dependencies: - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp-tree@^0.1.6: - version "0.1.11" - resolved "https://registry.npm.taobao.org/regexp-tree/download/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3" - integrity sha1-ycfwD89yLgpWxzkJg6emPdbCcvM= - -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^4.1.3, regexpu-core@^4.1.4, regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -register-service-worker@^1.4.1: - version "1.6.2" - resolved "https://registry.npm.taobao.org/register-service-worker/download/register-service-worker-1.6.2.tgz#9297e54c205c371c6e49bfa88f6997e8dd315f4c" - -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.npm.taobao.org/registry-auth-token/download/registry-auth-token-3.4.0.tgz?cache=0&sync_timestamp=1560785240550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregistry-auth-token%2Fdownload%2Fregistry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.npm.taobao.org/registry-url/download/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remove-array-items@^1.0.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/remove-array-items/download/remove-array-items-1.1.1.tgz#fd745ff73d0822e561ea910bf1b401fc7843e693" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - dependencies: - lodash "^4.17.11" - -request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - dependencies: - request-promise-core "1.1.2" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0: - version "2.88.0" - resolved "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -reselect@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve-path@^1.3.3, resolve-path@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/resolve-path/download/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - dependencies: - http-errors "~1.6.2" - path-is-absolute "1.0.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.10.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.6.0, resolve@^1.8.1: - version "1.11.1" - resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - dependencies: - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fretry%2Fdownload%2Fretry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.npm.taobao.org/rsvp/download/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - dependencies: - aproba "^1.1.1" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -rxjs@^6.3.3: - version "6.5.2" - resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - 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.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -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: - version "5.2.0" - resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.npm.taobao.org/sane/download/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" - dependencies: - anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" - -sax@0.5.x: - version "0.5.8" - resolved "https://registry.npm.taobao.org/sax/download/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" - -sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/section-matter/download/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -select@^1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/select/download/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - -selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0= - dependencies: - node-forge "0.7.5" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/semver-diff/download/semver-diff-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver-diff%2Fdownload%2Fsemver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - -semver@^6.0.0, semver@^6.1.1: - version "6.2.0" - resolved "https://registry.npm.taobao.org/semver/download/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha1-TYE9lZCq+KkZJpPWyFuTRN5ZAds= - -send@0.17.1: - version "0.17.1" - resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg= - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^1.3.0, serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk= - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsha.js%2Fdownload%2Fsha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsigmund%2Fdownload%2Fsigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/sisteransi/download/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" - -size-sensor@^0.2.0: - version "0.2.5" - resolved "https://registry.npm.taobao.org/size-sensor/download/size-sensor-0.2.5.tgz#e8ffb7cc5258893472bfda4f5734d66583247757" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q= - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - dependencies: - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha1-EvydbLZj2lc509xftuhofalcsXc= - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0= - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.2" - resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.12" - resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.12.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@0.1.x: - version "0.1.43" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz?cache=0&sync_timestamp=1562834220236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE= - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/spdy/download/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha1-gfIitadDoymqEs6mo5DmDpthPFI= - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - dependencies: - extend-shallow "^3.0.0" - -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/split2/download/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - dependencies: - through2 "^2.0.2" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/split/download/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - dependencies: - safe-buffer "^5.1.1" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - dependencies: - figgy-pudding "^3.5.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstable%2Fdownload%2Fstable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88= - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/stack-utils/download/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - -staged-git-files@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/staged-git-files/download/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0, statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -std-env@^1.1.0, std-env@^1.3.1: - version "1.3.1" - resolved "https://registry.npm.taobao.org/std-env/download/std-env-1.3.1.tgz#4e1758412439e9ece1d437b1b098551911aa44ee" - dependencies: - is-ci "^1.1.0" - -std-env@^2.2.1: - version "2.2.1" - resolved "https://registry.npm.taobao.org/std-env/download/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" - integrity sha1-L/oP3J4iY+AATBIRlm6WCUikD2s= - dependencies: - ci-info "^1.6.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - -stream-slice@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/stream-slice/download/stream-slice-0.1.2.tgz#2dc4f4e1b936fb13f3eb39a2def1932798d07a4b" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - -string-argv@^0.0.2: - version "0.0.2" - resolved "https://registry.npm.taobao.org/string-argv/download/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/string-length/download/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - dependencies: - safe-buffer "~5.1.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.2.2: - version "3.3.0" - resolved "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" - dependencies: - ansi-regex "^0.2.1" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= - dependencies: - ansi-regex "^4.1.0" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/strip-bom-string/download/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/strip-comments/download/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - -strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU= - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylus-loader@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" - dependencies: - loader-utils "^1.0.2" - lodash.clonedeep "^4.5.0" - when "~3.6.x" - -stylus@^0.54.5: - version "0.54.5" - resolved "https://registry.npm.taobao.org/stylus/download/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" - dependencies: - css-parse "1.7.x" - debug "*" - glob "7.0.x" - mkdirp "0.5.x" - sax "0.5.x" - source-map "0.1.x" - -superagent@^3.3.1: - version "3.8.3" - resolved "https://registry.npm.taobao.org/superagent/download/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.1.0" - debug "^3.1.0" - extend "^3.0.0" - form-data "^2.3.1" - formidable "^1.2.0" - methods "^1.1.1" - mime "^1.4.1" - qs "^6.5.1" - readable-stream "^2.3.5" - -superagent@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/superagent/download/superagent-4.1.0.tgz#c465c2de41df2b8d05c165cbe403e280790cdfd5" - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.1.2" - debug "^4.1.0" - form-data "^2.3.3" - formidable "^1.2.0" - methods "^1.1.1" - mime "^2.4.0" - qs "^6.6.0" - readable-stream "^3.0.6" - -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - dependencies: - has-flag "^3.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.npm.taobao.org/svgo/download/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -svgo@^1.0.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/svgo/download/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313" - integrity sha1-uuUbqV3tmjOja3xGzpw1mukVQxM= - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.33" - csso "^3.5.1" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.npm.taobao.org/symbol-tree/download/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - -table@4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -table@^4.0.3: - version "4.0.3" - resolved "https://registry.npm.taobao.org/table/download/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - -tar@^4: - version "4.4.10" - resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.5" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -tempfile@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/tempfile/download/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" - dependencies: - os-tmpdir "^1.0.0" - uuid "^2.0.1" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/term-size/download/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - dependencies: - execa "^0.7.0" - -terser-webpack-plugin@^1.1.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" - is-wsl "^1.1.0" - loader-utils "^1.2.3" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - terser "^4.0.0" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" - -terser@^4.0.0: - version "4.1.2" - resolved "https://registry.npm.taobao.org/terser/download/terser-4.1.2.tgz?cache=0&sync_timestamp=1562580696479&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.npm.taobao.org/test-exclude/download/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.npm.taobao.org/text-extensions/download/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - -text-table@^0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - dependencies: - any-promise "^1.0.0" - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/throat/download/throat-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthroat%2Fdownload%2Fthroat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - -through2@^2.0.0, through2@^2.0.2: - version "2.0.5" - resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4: - version "2.3.8" - resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/thunky/download/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY= - -time-fix-plugin@^2.0.0: - version "2.0.6" - resolved "https://registry.npm.taobao.org/time-fix-plugin/download/time-fix-plugin-2.0.6.tgz#3210121d269b475a7e7661766e682bd768ba1ced" - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.npm.taobao.org/tmpl/download/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-factory@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/to-factory/download/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - -toml@^2.3.3: - version "2.3.6" - resolved "https://registry.npm.taobao.org/toml/download/toml-2.3.6.tgz#25b0866483a9722474895559088b436fd11f861b" - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/toml/download/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha1-NCFg8a8ZBOydIE0DpdYSItdixe4= - -topo@2.x.x: - version "2.0.2" - resolved "https://registry.npm.taobao.org/topo/download/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - dependencies: - hoek "4.x.x" - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - -tough-cookie@^2.3.3, tough-cookie@^2.3.4: - version "2.5.0" - resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - dependencies: - punycode "^2.1.0" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/trim-off-newlines/download/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tsconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/tsconfig/download/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" - dependencies: - "@types/strip-bom" "^3.0.0" - "@types/strip-json-comments" "0.0.30" - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - -tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.5.2: - version "0.5.2" - resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.5.2.tgz?cache=0&sync_timestamp=1562320018034&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha1-1u9CoDVsbNRfSUhcO2KB/BSOSKI= - -type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/type/download/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - dependencies: - commander "~2.20.0" - source-map "~0.6.1" - -underscore@^1.8.3: - version "1.9.1" - resolved "https://registry.npm.taobao.org/underscore/download/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -unique-filename@^1.1.0, unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/unique-string/download/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/unzip-response/download/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - -upath@^1.1.0, upath@^1.1.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/upath/download/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - -update-notifier@^2.3.0: - version "2.5.0" - resolved "https://registry.npm.taobao.org/update-notifier/download/update-notifier-2.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupdate-notifier%2Fdownload%2Fupdate-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url-join@3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/url-join/download/url-join-3.0.0.tgz#26e8113ace195ea30d0fc38186e45400f9cea672" - -url-loader@^1.0.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng= - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.npm.taobao.org/uuid/download/uuid-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -v8-compile-cache@^2.0.0: - version "2.0.3" - resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -valine@^1.3.0: - version "1.3.9" - resolved "https://registry.npm.taobao.org/valine/download/valine-1.3.9.tgz#6eb43954e8cc1f842345537889db6bfb005b112f" - -vary@^1.1.2, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.npm.taobao.org/vendors/download/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fverror%2Fdownload%2Fverror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - -vue-canvas-nest@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/vue-canvas-nest/download/vue-canvas-nest-2.0.0.tgz#427326fcb66ae7f13b515781864dc2cabee8667c" - dependencies: - canvas-nest.js "2.0.3" - -vue-eslint-parser@^2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" - dependencies: - debug "^3.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.2" - esquery "^1.0.0" - lodash "^4.17.4" - -vue-hot-reload-api@^2.3.0: - version "2.3.3" - resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" - -vue-jest@^2.6.0: - version "2.6.0" - resolved "https://registry.npm.taobao.org/vue-jest/download/vue-jest-2.6.0.tgz#23dc99a4dce0bb59fea3946e1317b234968cf12a" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.26.0" - chalk "^2.1.0" - extract-from-css "^0.4.4" - find-babel-config "^1.1.0" - js-beautify "^1.6.14" - node-cache "^4.1.1" - object-assign "^4.1.1" - source-map "^0.5.6" - tsconfig "^7.0.0" - vue-template-es2015-compiler "^1.6.0" - -vue-loader@^15.2.4: - version "15.7.0" - resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3" - dependencies: - "@vue/component-compiler-utils" "^2.5.1" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-router@^3.0.1, vue-router@^3.0.2: - version "3.0.7" - resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.7.tgz#b36ca107b4acb8ff5bc4ff824584059c23fcb87b" - -vue-server-renderer@^2.5.16: - version "2.6.10" - resolved "https://registry.npm.taobao.org/vue-server-renderer/download/vue-server-renderer-2.6.10.tgz#cb2558842ead360ae2ec1f3719b75564a805b375" - dependencies: - chalk "^1.1.3" - hash-sum "^1.0.2" - he "^1.1.0" - lodash.template "^4.4.0" - lodash.uniq "^4.5.0" - resolve "^1.2.0" - serialize-javascript "^1.3.0" - source-map "0.5.6" - -vue-style-loader@^4.1.0: - version "4.1.2" - resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.5.16: - version "2.6.10" - resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - -vue@^2.5.16: - version "2.6.10" - resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" - -vuepress-html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/vuepress-html-webpack-plugin/download/vuepress-html-webpack-plugin-3.2.0.tgz#219be272ad510faa8750d2d4e70fd028bfd1c16e" - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -vuepress-plugin-container@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/vuepress-plugin-container/download/vuepress-plugin-container-2.0.2.tgz#3489cc732c7a210b31f202556e1346125dffeb73" - integrity sha1-NInMcyx6IQsx8gJVbhNGEl3/63M= - dependencies: - markdown-it-container "^2.0.0" - -vuepress-theme-vue@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/vuepress-theme-vue/download/vuepress-theme-vue-1.1.0.tgz#8b109e3db8cad7b18459f4d77076808110c2bcaa" - -vuepress@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/vuepress/download/vuepress-1.0.2.tgz#da62d6e43faca0b8af0bcffff6975fa27dbfdea3" - integrity sha1-2mLW5D+soLivC8//9pdfon2/3qM= - dependencies: - "@vuepress/core" "^1.0.2" - "@vuepress/theme-default" "^1.0.2" - cac "^6.3.9" - envinfo "^7.2.0" - -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - dependencies: - browser-process-hrtime "^0.1.2" - -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npm.taobao.org/walker/download/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98= - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - -webpack-chain@^4.6.0, webpack-chain@^4.9.0: - version "4.12.1" - resolved "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^1.6.0" - -webpack-dev-middleware@^3.0.0, webpack-dev-middleware@^3.7.0: - version "3.7.0" - resolved "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - dependencies: - memory-fs "^0.4.1" - mime "^2.4.2" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.5.1: - version "3.7.2" - resolved "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.7.2.tgz?cache=0&sync_timestamp=1560844041188&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.7.2.tgz#f79caa5974b7f8b63268ef5421222a8486d792f5" - integrity sha1-95yqWXS3+LYyaO9UISIqhIbXkvU= - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.6" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - killable "^1.0.1" - loglevel "^1.6.3" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.20" - schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.1.1" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.0" - webpack-log "^2.0.0" - yargs "12.0.5" - -webpack-hot-client@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/webpack-hot-client/download/webpack-hot-client-3.0.0.tgz#b714f257a264001275bc1491741685779cde12f2" - dependencies: - json-stringify-safe "^5.0.1" - loglevelnext "^1.0.2" - strip-ansi "^4.0.0" - uuid "^3.1.0" - webpack-log "^1.1.1" - ws "^4.0.0" - -webpack-log@^1.1.1, webpack-log@^1.1.2: - version "1.2.0" - resolved "https://registry.npm.taobao.org/webpack-log/download/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.1.2: - version "4.2.1" - resolved "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" - dependencies: - lodash "^4.17.5" - -webpack-serve@^1.0.2: - version "1.0.4" - resolved "https://registry.npm.taobao.org/webpack-serve/download/webpack-serve-1.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-serve%2Fdownload%2Fwebpack-serve-1.0.4.tgz#d1c83955926969ba195e5032f978da92ef07829c" - dependencies: - "@shellscape/koa-static" "^4.0.4" - "@webpack-contrib/config-loader" "^1.1.1" - chalk "^2.3.0" - clipboardy "^1.2.2" - cosmiconfig "^5.0.2" - debug "^3.1.0" - find-up "^2.1.0" - get-port "^3.2.0" - import-local "^1.0.0" - killable "^1.0.0" - koa "^2.4.1" - koa-webpack "^4.0.0" - lodash "^4.17.5" - loud-rejection "^1.6.0" - meow "^5.0.0" - nanobus "^4.3.1" - opn "^5.1.0" - resolve "^1.6.0" - time-fix-plugin "^2.0.0" - update-notifier "^2.3.0" - url-join "3.0.0" - v8-compile-cache "^2.0.0" - webpack-hot-client "^3.0.0" - webpack-log "^1.1.2" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.8.1: - version "4.35.3" - resolved "https://registry.npm.taobao.org/webpack/download/webpack-4.35.3.tgz?cache=0&sync_timestamp=1562617758284&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.35.3.tgz#66bc35ef215a7b75e8790f84d560013ffecf0ca3" - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" - -webpackbar@3.2.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/webpackbar/download/webpackbar-3.2.0.tgz#bdaad103fad11a4e612500e72aaae98b08ba493f" - integrity sha1-varRA/rRGk5hJQDnKqrpiwi6ST8= - dependencies: - ansi-escapes "^4.1.0" - chalk "^2.4.1" - consola "^2.6.0" - figures "^3.0.0" - pretty-time "^1.1.0" - std-env "^2.2.1" - text-table "^0.2.0" - wrap-ansi "^5.1.0" - -webpackbar@^2.6.1: - version "2.6.4" - resolved "https://registry.npm.taobao.org/webpackbar/download/webpackbar-2.6.4.tgz#9118dde6b8f513a2d50ce630952157bca9218c6f" - dependencies: - chalk "^2.4.1" - consola "^1.4.3" - figures "^2.0.0" - loader-utils "^1.1.0" - lodash "^4.17.10" - log-update "^2.3.0" - pretty-time "^1.1.0" - schema-utils "^1.0.0" - std-env "^1.3.1" - table "^4.0.3" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha1-otTg1PTxFvHmKX66WLBdQwEA6fk= - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk= - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - version "1.0.5" - resolved "https://registry.npm.taobao.org/whatwg-encoding/download/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -when@~3.6.x: - version "3.6.4" - resolved "https://registry.npm.taobao.org/when/download/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.npm.taobao.org/whet.extend/download/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/widest-line/download/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - dependencies: - string-width "^2.1.1" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/window-size/download/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -workbox-background-sync@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-background-sync/download/workbox-background-sync-3.6.3.tgz?cache=0&sync_timestamp=1562778398418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkbox-background-sync%2Fdownload%2Fworkbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" - dependencies: - workbox-core "^3.6.3" - -workbox-broadcast-cache-update@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-broadcast-cache-update/download/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" - dependencies: - workbox-core "^3.6.3" - -workbox-build@^3.1.0: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-build/download/workbox-build-3.6.3.tgz?cache=0&sync_timestamp=1562778404272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkbox-build%2Fdownload%2Fworkbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" - dependencies: - babel-runtime "^6.26.0" - common-tags "^1.4.0" - fs-extra "^4.0.2" - glob "^7.1.2" - joi "^11.1.1" - lodash.template "^4.4.0" - pretty-bytes "^4.0.2" - stringify-object "^3.2.2" - strip-comments "^1.0.2" - workbox-background-sync "^3.6.3" - workbox-broadcast-cache-update "^3.6.3" - workbox-cache-expiration "^3.6.3" - workbox-cacheable-response "^3.6.3" - workbox-core "^3.6.3" - workbox-google-analytics "^3.6.3" - workbox-navigation-preload "^3.6.3" - workbox-precaching "^3.6.3" - workbox-range-requests "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" - workbox-streams "^3.6.3" - workbox-sw "^3.6.3" - -workbox-cache-expiration@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-cache-expiration/download/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" - dependencies: - workbox-core "^3.6.3" - -workbox-cacheable-response@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-cacheable-response/download/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" - dependencies: - workbox-core "^3.6.3" - -workbox-core@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-core/download/workbox-core-3.6.3.tgz?cache=0&sync_timestamp=1562778404912&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkbox-core%2Fdownload%2Fworkbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" - -workbox-google-analytics@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-google-analytics/download/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" - dependencies: - workbox-background-sync "^3.6.3" - workbox-core "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" - -workbox-navigation-preload@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-navigation-preload/download/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" - dependencies: - workbox-core "^3.6.3" - -workbox-precaching@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-precaching/download/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" - dependencies: - workbox-core "^3.6.3" - -workbox-range-requests@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-range-requests/download/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" - dependencies: - workbox-core "^3.6.3" - -workbox-routing@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-routing/download/workbox-routing-3.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkbox-routing%2Fdownload%2Fworkbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" - dependencies: - workbox-core "^3.6.3" - -workbox-strategies@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-strategies/download/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" - dependencies: - workbox-core "^3.6.3" - -workbox-streams@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-streams/download/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" - dependencies: - workbox-core "^3.6.3" - -workbox-sw@^3.6.3: - version "3.6.3" - resolved "https://registry.npm.taobao.org/workbox-sw/download/workbox-sw-3.6.3.tgz?cache=0&sync_timestamp=1562779536462&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkbox-sw%2Fdownload%2Fworkbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: - version "2.4.3" - resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/write/download/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/ws/download/ws-4.1.0.tgz?cache=0&sync_timestamp=1562602367648&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - -ws@^5.2.0, ws@^5.2.1: - version "5.2.2" - resolved "https://registry.npm.taobao.org/ws/download/ws-5.2.2.tgz?cache=0&sync_timestamp=1562602367648&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - dependencies: - async-limiter "~1.0.0" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/xdg-basedir/download/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - -y18n@^3.2.0, y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-10.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - dependencies: - camelcase "^4.1.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ= - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-9.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - dependencies: - camelcase "^4.1.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM= - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -ylru@^1.2.0: - version "1.2.1" - resolved "https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" - -yorkie@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-1.0.3.tgz#5c05db48c012def99c29b79685b6ba2e40c8c671" - dependencies: - execa "^0.8.0" - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" - -zepto@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/zepto/download/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98"