diff --git a/.gitignore b/.gitignore index 9a82a1138..8cc98eba4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ bower_components # Compiled binary addons (https://nodejs.org/api/addons.html) build/ - +src/.umi/ # Dependency directories node_modules/ jspm_packages/ diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 000000000..b6bb1a5df --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1584692398144 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..04a210b95 --- /dev/null +++ b/LICENSE @@ -0,0 +1,124 @@ +木兰宽松许可证, 第2版 + +2020年1月 http://license.coscl.org.cn/MulanPSL2 + +您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + +0. 定义 + +“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + +“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + +“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + +“法人实体” 是指提交贡献的机构及其“关联实体”。 + +“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + +1. 授予版权许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 + +2. 授予专利许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 + +3. 无商标许可 + +“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 + +4. 分发限制 + +您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + +5. 免责声明与责任限制 + +“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 + +6. 语言 + +“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 + +条款结束 + +如何将木兰宽松许可证,第2版,应用到您的软件 + +如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + +1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + +2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + +3, 请将如下声明文本放入每个源文件的头部注释中。 + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +Mulan Permissive Software License,Version 2 +Mulan Permissive Software License,Version 2 (Mulan PSL v2) + +January 2020 http://license.coscl.org.cn/MulanPSL2 + +Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + +0. Definition + +Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + +Contribution means the copyrightable work licensed by a particular Contributor under this License. + +Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + +Legal Entity means the entity making a Contribution and all its Affiliates. + +Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + +1. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + +2. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + +3. No Trademark License + +No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4. + +4. Distribution Restriction + +You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + +5. Disclaimer of Warranty and Limitation of Liability + +THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +6. Language + +THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + +END OF THE TERMS AND CONDITIONS + +How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software + +To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + +Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; +Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package; +Attach the statement to the appropriate annotated syntax at the beginning of each source file. +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. diff --git a/package-lock.json b/package-lock.json index a72d2386e..10c675b31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ }, "@ant-design/css-animation": { "version": "1.7.3", - "resolved": "https://registry.npm.taobao.org/@ant-design/css-animation/download/@ant-design/css-animation-1.7.3.tgz?cache=0&sync_timestamp=1596106749762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Fcss-animation%2Fdownload%2F%40ant-design%2Fcss-animation-1.7.3.tgz", + "resolved": "https://registry.npm.taobao.org/@ant-design/css-animation/download/@ant-design/css-animation-1.7.3.tgz", "integrity": "sha1-YKHJcAFOhrKPlAUQ1p5QPkKPETY=" }, "@ant-design/icons": { @@ -385,6 +385,11 @@ "resolved": "https://registry.npmjs.org/@novnc/novnc/-/novnc-1.1.0.tgz", "integrity": "sha512-W90Q79EuCYT++39aT/VKGyk7hUt2gPN3rN+ifPUvY4rdjgZlfwdCg9q7yzj04hke/zgdHsbXFfyFijBvrRuU5A==" }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, "@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -771,6 +776,29 @@ "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", @@ -822,7 +850,7 @@ }, "alphanum-sort": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, @@ -1070,12 +1098,12 @@ }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "resolved": "https://registry.nlark.com/arr-union/download/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", + "resolved": "https://registry.nlark.com/array-equal/download/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, "array-find-index": { @@ -1100,12 +1128,12 @@ }, "array-tree-filter": { "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/array-tree-filter/download/array-tree-filter-2.1.0.tgz", + "resolved": "https://registry.nlark.com/array-tree-filter/download/array-tree-filter-2.1.0.tgz", "integrity": "sha1-hzrAD+yDdJ8lWsjdCDgUtPYykZA=" }, "array-union": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz?cache=0&sync_timestamp=1614624262896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-union%2Fdownload%2Farray-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { "array-uniq": "^1.0.1" @@ -1113,7 +1141,7 @@ }, "array-uniq": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "resolved": "https://registry.nlark.com/array-uniq/download/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { @@ -1128,7 +1156,7 @@ }, "asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "resolved": "https://registry.nlark.com/asap/download/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asn1": { @@ -1179,12 +1207,12 @@ }, "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/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", + "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types-flow": { @@ -1223,7 +1251,7 @@ }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { @@ -1246,7 +1274,7 @@ }, "aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "resolved": "https://registry.nlark.com/aws-sign2/download/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { @@ -1255,12 +1283,18 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" + "follow-redirects": "^1.14.4" + }, + "dependencies": { + "follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + } } }, "axobject-query": { @@ -2060,7 +2094,7 @@ }, "babel-plugin-transform-runtime": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-runtime/download/babel-plugin-transform-runtime-6.23.0.tgz", "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "requires": { "babel-runtime": "^6.22.0" @@ -2179,7 +2213,7 @@ }, "babel-preset-react": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "resolved": "https://registry.npm.taobao.org/babel-preset-react/download/babel-preset-react-6.24.1.tgz", "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "requires": { "babel-plugin-syntax-jsx": "^6.3.13", @@ -2251,7 +2285,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { "core-js": "^2.4.0", @@ -2396,7 +2430,7 @@ }, "bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { "tweetnacl": "^0.14.3" @@ -2543,7 +2577,7 @@ }, "boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "resolved": "https://registry.nlark.com/boolbase/download/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "boxen": { @@ -2603,7 +2637,7 @@ }, "brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, @@ -2738,7 +2772,7 @@ }, "buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "resolved": "https://registry.nlark.com/buffer-xor/download/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, @@ -2749,7 +2783,7 @@ }, "builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "resolved": "https://registry.nlark.com/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, @@ -2788,9 +2822,9 @@ }, "dependencies": { "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true } } @@ -2820,12 +2854,12 @@ }, "call-me-maybe": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "resolved": "https://registry.nlark.com/call-me-maybe/download/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", + "resolved": "https://registry.npmmirror.com/caller-callsite/download/caller-callsite-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcaller-callsite%2Fdownload%2Fcaller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, "requires": { @@ -2885,7 +2919,7 @@ }, "camelize": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/camelize/download/camelize-1.0.0.tgz", "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-api": { @@ -2901,15 +2935,36 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + } } } } @@ -2931,7 +2986,7 @@ }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "resolved": "https://registry.nlark.com/caseless/download/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "center-align": { @@ -2979,7 +3034,7 @@ }, "charenc": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz", "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" }, "check-types": { @@ -3446,7 +3501,7 @@ }, "clone": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "resolved": "https://registry.nlark.com/clone/download/clone-2.1.2.tgz", "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, "clone-deep": { @@ -3473,7 +3528,7 @@ }, "co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "resolved": "https://registry.nlark.com/co/download/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "coa": { @@ -3507,17 +3562,17 @@ }, "code-prettify": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/code-prettify/-/code-prettify-0.1.0.tgz", + "resolved": "https://registry.nlark.com/code-prettify/download/code-prettify-0.1.0.tgz", "integrity": "sha1-RocMyMGlDQm61TmzOpg9vUqjSx4=" }, "codemirror": { - "version": "5.53.2", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.53.2.tgz", - "integrity": "sha512-wvSQKS4E+P8Fxn/AQ+tQtJnF1qH5UOlxtugFLpubEZ5jcdH2iXTVinb+Xc/4QjshuOxRm4fUsU2QPF1JJKiyXA==" + "version": "5.64.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.64.0.tgz", + "integrity": "sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg==" }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { "map-visit": "^1.0.0", @@ -3544,13 +3599,13 @@ }, "color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", "dev": true, "requires": { "color-name": "^1.0.0", @@ -3572,12 +3627,12 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "resolved": "https://registry.nlark.com/commondir/download/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "component-classes": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", + "resolved": "https://registry.npm.taobao.org/component-classes/download/component-classes-1.2.6.tgz", "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", "requires": { "component-indexof": "0.0.3" @@ -3590,7 +3645,7 @@ }, "component-indexof": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/component-indexof/download/component-indexof-0.0.3.tgz", "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" }, "compressible": { @@ -3649,7 +3704,7 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { @@ -3710,7 +3765,7 @@ }, "constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "resolved": "https://registry.nlark.com/constants-browserify/download/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, @@ -3757,7 +3812,7 @@ }, "cookie-signature": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.nlark.com/cookie-signature/download/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "copy-concurrently": { @@ -3776,12 +3831,12 @@ }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "copy-to-clipboard": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/copy-to-clipboard/download/copy-to-clipboard-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-to-clipboard%2Fdownload%2Fcopy-to-clipboard-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/copy-to-clipboard/download/copy-to-clipboard-3.3.1.tgz", "integrity": "sha1-EVqhqZmP+rYZb5MHatbaO5E2Yq4=", "requires": { "toggle-selection": "^1.0.6" @@ -3794,7 +3849,7 @@ }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { @@ -3811,6 +3866,11 @@ "require-from-string": "^1.1.0" } }, + "countup.js": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.0.8.tgz", + "integrity": "sha512-pW3xwwD+hB+xmtI16xFcuLS0D5hSQqPQWkZOdgpKQyzxCquDNo2VCFPkRw12vmvdpnicXVTcjmYiakG6biwINg==" + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3857,11 +3917,10 @@ } }, "create-react-class": { - "version": "15.6.3", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", - "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", "requires": { - "fbjs": "^0.8.9", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } @@ -3875,6 +3934,11 @@ "warning": "^4.0.3" } }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.nlark.com/cropperjs/download/cropperjs-1.5.12.tgz", + "integrity": "sha1-2cDbK/uMDXadUXOej5FrvEThD1A=" + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -3950,7 +4014,7 @@ }, "crypt": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz", "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" }, "crypto-browserify": { @@ -4001,7 +4065,7 @@ }, "css-color-names": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "https://registry.nlark.com/css-color-names/download/css-color-names-0.0.4.tgz?cache=0&sync_timestamp=1618846942982&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-color-names%2Fdownload%2Fcss-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, @@ -4015,46 +4079,20 @@ "timsort": "^0.3.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -4084,39 +4122,23 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -4128,28 +4150,9 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } } } }, - "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-select-base-adapter": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", @@ -4184,50 +4187,23 @@ "is-in-browser": "^1.0.2" } }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dev": true, "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -4240,6 +4216,44 @@ "parse-json": "^4.0.0" } }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "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.3", + "postcss-unique-selectors": "^4.0.1" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -4250,119 +4264,44 @@ "json-parse-better-errors": "^1.0.1" } }, - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" } } } }, "cssnano-util-get-arguments": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", "dev": true }, "cssnano-util-get-match": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "resolved": "https://registry.nlark.com/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", "dev": true }, @@ -4375,46 +4314,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -4480,7 +4393,7 @@ }, "cyclist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "resolved": "https://registry.nlark.com/cyclist/download/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, @@ -4537,7 +4450,7 @@ }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073647826&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { "assert-plus": "^1.0.0" @@ -4598,17 +4511,12 @@ }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "https://registry.npmmirror.com/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1633055760479&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decimal.js": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", - "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==" - }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "resolved": "https://registry.nlark.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "deep-equal": { @@ -4783,7 +4691,7 @@ }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "https://registry.nlark.com/delayed-stream/download/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegate": { @@ -4799,7 +4707,7 @@ }, "depd": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "resolved": "https://registry.nlark.com/depd/download/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { @@ -4814,7 +4722,7 @@ }, "destroy": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "resolved": "https://registry.nlark.com/destroy/download/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-file": { @@ -4900,9 +4808,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -4987,6 +4895,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, "requires": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -4995,7 +4904,8 @@ "domelementtype": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true } } }, @@ -5021,7 +4931,8 @@ "domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true }, "domexception": { "version": "2.0.1", @@ -5038,27 +4949,10 @@ } } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, "dompurify": { - "version": "2.0.15", - "resolved": "https://registry.npm.taobao.org/dompurify/download/dompurify-2.0.15.tgz?cache=0&sync_timestamp=1607352578938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdompurify%2Fdownload%2Fdompurify-2.0.15.tgz", - "integrity": "sha1-gOMA/D6JVHvQrxr/LrqIzhf8neo=" - }, - "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" - } + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.3.tgz", + "integrity": "sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==" }, "dot-case": { "version": "3.0.3", @@ -5070,9 +4964,9 @@ } }, "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==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } @@ -5112,7 +5006,7 @@ }, "duplexer3": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "resolved": "https://registry.npmmirror.com/duplexer3/download/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "duplexify": { @@ -5129,7 +5023,7 @@ }, "ecc-jsbn": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "resolved": "https://registry.nlark.com/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { "jsbn": "~0.1.0", @@ -5156,7 +5050,7 @@ }, "ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { @@ -5176,18 +5070,26 @@ "integrity": "sha512-vhGNxT87PdZA6Ak4E0QhArwGzNcSPUwSN7n9wCFLeBlY2NNuuiwguQuQIp7P5oB65PLJ892yKcHiqz1xLWeiug==" }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "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" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "emoji-regex": { @@ -5202,7 +5104,7 @@ }, "encodeurl": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "resolved": "https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { @@ -5290,14 +5192,20 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/escape-html/download/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", + "resolved": "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { @@ -5742,7 +5650,7 @@ }, "etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "resolved": "https://registry.nlark.com/etag/download/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { @@ -5899,7 +5807,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", @@ -5936,7 +5844,7 @@ }, "extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "resolved": "https://registry.npmmirror.com/extsprintf/download/extsprintf-1.3.0.tgz?cache=0&sync_timestamp=1635889707944&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fextsprintf%2Fdownload%2Fextsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { @@ -6264,12 +6172,12 @@ }, "fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "resolved": "https://registry.nlark.com/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "faye-websocket": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "resolved": "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "requires": { "websocket-driver": ">=0.5.1" @@ -6366,7 +6274,7 @@ }, "figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "resolved": "https://registry.nlark.com/figures/download/figures-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffigures%2Fdownload%2Ffigures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { "escape-string-regexp": "^1.0.5" @@ -6872,12 +6780,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "resolved": "https://registry.nlark.com/for-in/download/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", + "resolved": "https://registry.nlark.com/for-own/download/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { "for-in": "^1.0.1" @@ -6885,7 +6793,7 @@ }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "resolved": "https://registry.nlark.com/forever-agent/download/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "fork-ts-checker-webpack-plugin": { @@ -7193,7 +7101,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "resolved": "https://registry.nlark.com/fragment-cache/download/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { "map-cache": "^0.2.2" @@ -7201,12 +7109,12 @@ }, "fresh": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "resolved": "https://registry.npm.taobao.org/fresh/download/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", + "resolved": "https://registry.nlark.com/from2/download/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { @@ -7251,7 +7159,7 @@ }, "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", + "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { @@ -7263,7 +7171,7 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { @@ -7902,12 +7810,12 @@ }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "resolved": "https://registry.npm.taobao.org/get-value/download/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", + "resolved": "https://registry.nlark.com/getpass/download/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { "assert-plus": "^1.0.0" @@ -8060,7 +7968,7 @@ }, "growly": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/growly/download/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "gud": { @@ -8095,9 +8003,9 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -8107,13 +8015,10 @@ }, "dependencies": { "uglify-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.1.tgz", - "integrity": "sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==", - "optional": true, - "requires": { - "commander": "~2.20.3" - } + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz", + "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==", + "optional": true }, "wordwrap": { "version": "1.0.0", @@ -8167,7 +8072,7 @@ }, "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { @@ -8189,7 +8094,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.nlark.com/has-ansi/download/has-ansi-2.0.0.tgz?cache=0&sync_timestamp=1631556755105&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { "ansi-regex": "^2.0.0" @@ -8197,7 +8102,7 @@ }, "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "resolved": "https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1626715907927&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { @@ -8213,7 +8118,7 @@ }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "resolved": "https://registry.nlark.com/has-value/download/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { "get-value": "^2.0.6", @@ -8230,7 +8135,7 @@ }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "resolved": "https://registry.nlark.com/has-values/download/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { "is-number": "^3.0.0", @@ -8244,7 +8149,7 @@ }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "resolved": "https://registry.nlark.com/is-number/download/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { "kind-of": "^3.0.2" @@ -8252,7 +8157,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" @@ -8262,7 +8167,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { "is-buffer": "^1.1.5" @@ -8331,7 +8236,7 @@ }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { @@ -8372,13 +8277,13 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "hpack.js": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { "inherits": "^2.0.1", @@ -8389,22 +8294,16 @@ }, "hsl-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "resolved": "https://registry.nlark.com/hsl-regex/download/hsl-regex-1.0.0.tgz", "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", "dev": true }, "hsla-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, - "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==", - "dev": true - }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -8455,39 +8354,9 @@ "util.promisify": "1.0.0" } }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "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" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "http-deceiver": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, "http-errors": { @@ -8515,9 +8384,9 @@ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -8525,9 +8394,34 @@ }, "dependencies": { "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + } + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -8820,7 +8714,7 @@ }, "http-signature": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "resolved": "https://registry.npmmirror.com/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1637178620216&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { "assert-plus": "^1.0.0", @@ -8830,10 +8724,34 @@ }, "https-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "resolved": "https://registry.nlark.com/https-browserify/download/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "hyphenate-style-name": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", @@ -8855,42 +8773,18 @@ "postcss": "^7.0.14" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -8903,7 +8797,7 @@ }, "iferr": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "resolved": "https://registry.nlark.com/iferr/download/iferr-0.1.5.tgz", "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, @@ -8932,7 +8826,7 @@ }, "import-fresh": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1608469579940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { @@ -9021,7 +8915,7 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "resolved": "https://registry.nlark.com/imurmurhash/download/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { @@ -9048,7 +8942,7 @@ }, "indexes-of": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "resolved": "https://registry.nlark.com/indexes-of/download/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, "infer-owner": { @@ -9059,7 +8953,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", @@ -9072,9 +8966,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "3.3.0", @@ -9156,12 +9050,12 @@ }, "ip": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "resolved": "https://registry.nlark.com/ip/download/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ip-regex": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "resolved": "https://registry.nlark.com/ip-regex/download/ip-regex-2.1.0.tgz", "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "ipaddr.js": { @@ -9176,7 +9070,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.nlark.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { "kind-of": "^3.0.2" @@ -9189,7 +9083,7 @@ }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { @@ -9200,11 +9094,6 @@ "binary-extensions": "^1.0.0" } }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", @@ -9228,7 +9117,7 @@ }, "is-color-stop": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "resolved": "https://registry.nlark.com/is-color-stop/download/is-color-stop-1.1.0.tgz", "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", "dev": true, "requires": { @@ -9242,7 +9131,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.nlark.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { "kind-of": "^3.0.2" @@ -9272,7 +9161,7 @@ }, "is-directory": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, "is-docker": { @@ -9295,7 +9184,7 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { @@ -9360,7 +9249,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.nlark.com/is-obj/download/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { @@ -9386,7 +9275,7 @@ }, "is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "resolved": "https://registry.nlark.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-plain-object": { @@ -9409,11 +9298,6 @@ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" }, - "is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" - }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", @@ -9449,7 +9333,7 @@ }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "resolved": "https://registry.nlark.com/is-stream/download/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-string": { @@ -9457,15 +9341,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -9476,7 +9351,7 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-utf8": { @@ -9506,7 +9381,7 @@ }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { @@ -9519,7 +9394,7 @@ }, "isomorphic-fetch": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "resolved": "https://registry.nlark.com/isomorphic-fetch/download/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { "node-fetch": "^1.0.1", @@ -9528,7 +9403,7 @@ }, "isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "resolved": "https://registry.nlark.com/isstream/download/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-api": { @@ -10056,7 +9931,7 @@ }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "resolved": "https://registry.nlark.com/jsbn/download/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { @@ -10123,7 +9998,7 @@ }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "resolved": "https://registry.nlark.com/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json2module": { @@ -10136,7 +10011,7 @@ }, "json2mq": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "resolved": "https://registry.nlark.com/json2mq/download/json2mq-0.2.0.tgz", "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", "requires": { "string-convert": "^0.2.0" @@ -10154,7 +10029,7 @@ }, "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161876665&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { "graceful-fs": "^4.1.6" @@ -10346,7 +10221,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" @@ -10379,7 +10254,7 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "resolved": "https://registry.nlark.com/lazy-cache/download/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "lcid": { @@ -10397,7 +10272,7 @@ }, "levn": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "resolved": "https://registry.nlark.com/levn/download/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "requires": { "prelude-ls": "~1.1.2", @@ -10457,9 +10332,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { "version": "4.17.15", @@ -10484,7 +10359,7 @@ }, "lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "resolved": "https://registry.nlark.com/lodash.debounce/download/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lodash.defaults": { @@ -10500,17 +10375,17 @@ }, "lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, "lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/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", + "resolved": "https://registry.nlark.com/lodash.sortby/download/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "lodash.template": { @@ -10532,12 +10407,12 @@ }, "lodash.throttle": { "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz", + "resolved": "https://registry.nlark.com/lodash.throttle/download/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", + "resolved": "https://registry.nlark.com/lodash.uniq/download/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, @@ -10623,7 +10498,7 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { @@ -10633,7 +10508,7 @@ }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "resolved": "https://registry.nlark.com/map-visit/download/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { "object-visit": "^1.0.0" @@ -10740,7 +10615,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { @@ -10767,7 +10642,7 @@ }, "memory-fs": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "resolved": "https://registry.nlark.com/memory-fs/download/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { "errno": "^0.1.3", @@ -10806,7 +10681,7 @@ }, "merge-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-stream": { @@ -10822,7 +10697,7 @@ }, "methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.nlark.com/methods/download/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "microevent.ts": { @@ -10885,7 +10760,7 @@ }, "min-document": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "resolved": "https://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz", "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { "dom-walk": "^0.1.0" @@ -10939,7 +10814,7 @@ }, "minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", "dev": true }, @@ -11086,7 +10961,7 @@ }, "move-concurrently": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "resolved": "https://registry.nlark.com/move-concurrently/download/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { @@ -11169,7 +11044,7 @@ }, "natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "resolved": "https://registry.nlark.com/natural-compare/download/natural-compare-1.4.0.tgz?cache=0&sync_timestamp=1624608011507&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnatural-compare%2Fdownload%2Fnatural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "negotiator": { @@ -11205,11 +11080,6 @@ "is-stream": "^1.0.1" } }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" - }, "node-gyp": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", @@ -11240,7 +11110,7 @@ }, "node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "resolved": "https://registry.nlark.com/node-int64/download/node-int64-0.4.0.tgz", "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node-libs-browser": { @@ -11372,7 +11242,7 @@ }, "normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "resolved": "https://registry.nlark.com/normalize-range/download/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, "normalize-scroll-left": { @@ -11393,7 +11263,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "resolved": "https://registry.npmmirror.com/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1633420566316&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { "path-key": "^2.0.0" @@ -11415,13 +11285,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, "requires": { "boolbase": "~1.0.0" } }, "num2fraction": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" }, "number-is-nan": { @@ -11451,12 +11322,12 @@ }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847240432&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-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", + "resolved": "https://registry.nlark.com/object-copy/download/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { "copy-descriptor": "^0.1.0", @@ -11466,7 +11337,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.nlark.com/define-property/download/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { "is-descriptor": "^0.1.0" @@ -11500,7 +11371,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "resolved": "https://registry.nlark.com/object-visit/download/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { "isobject": "^3.0.0" @@ -11555,7 +11426,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "resolved": "https://registry.nlark.com/object.pick/download/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { "isobject": "^3.0.1" @@ -11595,7 +11466,7 @@ }, "on-finished": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { "ee-first": "1.1.1" @@ -11608,7 +11479,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": "https://registry.nlark.com/once/download/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" @@ -11685,7 +11556,7 @@ }, "os-browserify": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "resolved": "https://registry.nlark.com/os-browserify/download/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, @@ -11730,12 +11601,12 @@ }, "p-defer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "resolved": "https://registry.nlark.com/p-defer/download/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { @@ -11878,7 +11749,7 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "resolved": "https://registry.nlark.com/pascalcase/download/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-browserify": { @@ -11889,17 +11760,17 @@ }, "path-dirname": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/path-dirname/download/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", + "resolved": "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { @@ -11909,13 +11780,13 @@ }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "resolved": "https://registry.nlark.com/path-key/download/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==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "1.8.0", @@ -11957,9 +11828,15 @@ }, "performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "resolved": "https://registry.nlark.com/performance-now/download/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -12031,7 +11908,7 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "resolved": "https://registry.nlark.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { @@ -12067,37 +11944,20 @@ "postcss-value-parser": "^4.0.2" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -12105,15 +11965,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -12131,57 +11982,54 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } } } @@ -12196,46 +12044,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12249,46 +12071,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12302,46 +12098,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12355,46 +12125,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12408,46 +12152,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12543,46 +12261,20 @@ "stylehacks": "^4.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12602,36 +12294,35 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, @@ -12651,14 +12342,21 @@ "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } }, "postcss-selector-parser": { @@ -12671,15 +12369,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -12693,46 +12382,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12749,46 +12412,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -12808,57 +12445,54 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } } } @@ -12875,28 +12509,6 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "dot-prop": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", @@ -12912,15 +12524,20 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -12933,15 +12550,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -12953,42 +12561,18 @@ "postcss": "^7.0.5" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13004,48 +12588,24 @@ "postcss-value-parser": "^4.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -13058,42 +12618,18 @@ "postcss-selector-parser": "^6.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13107,42 +12643,18 @@ "postcss": "^7.0.6" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13156,46 +12668,20 @@ "postcss": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13211,46 +12697,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13267,46 +12727,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13323,46 +12757,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13378,46 +12786,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13433,46 +12815,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13489,57 +12845,54 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } } } @@ -13556,28 +12909,6 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -13590,24 +12921,20 @@ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13622,46 +12949,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13677,46 +12978,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13734,57 +13009,54 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } } } @@ -13801,46 +13073,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13855,62 +13101,6 @@ "uniq": "^1.0.1" } }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "postcss-unique-selectors": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", @@ -13922,46 +13112,20 @@ "uniqs": "^2.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } } } @@ -13973,7 +13137,7 @@ }, "prelude-ls": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-http": { @@ -13992,12 +13156,95 @@ "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=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + }, + "dependencies": { + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + } } }, "pretty-format": { @@ -14039,7 +13286,7 @@ }, "promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "resolved": "https://registry.nlark.com/promise-inflight/download/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, @@ -14064,12 +13311,12 @@ }, "prr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "resolved": "https://registry.nlark.com/prr/download/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", + "resolved": "https://registry.nlark.com/pseudomap/download/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { @@ -14198,13 +13445,13 @@ }, "q": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "resolved": "https://registry.nlark.com/q/download/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, "qr.js": { "version": "0.0.0", - "resolved": "https://registry.npm.taobao.org/qr.js/download/qr.js-0.0.0.tgz", + "resolved": "https://registry.nlark.com/qr.js/download/qr.js-0.0.0.tgz", "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" }, "qrcode.react": { @@ -14224,7 +13471,7 @@ }, "query-string": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "resolved": "https://registry.nlark.com/query-string/download/query-string-4.3.4.tgz", "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "requires": { "object-assign": "^4.1.0", @@ -14233,12 +13480,12 @@ }, "querystring": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "resolved": "https://registry.npmmirror.com/querystring/download/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", + "resolved": "https://registry.nlark.com/querystring-es3/download/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, @@ -14977,6 +14224,22 @@ "object-assign": "^4.1.1" } }, + "react-countup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.1.0.tgz", + "integrity": "sha512-0tN65l4ksaNa4rm8ZKshpGxbIHQ4RAh8TGaKYp06EZ7nZw+haXpW3dQTVDhTey9+10jDkJgdzyXKDmC96c1M8g==", + "requires": { + "countup.js": "^2.0.8" + } + }, + "react-cropper": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/react-cropper/download/react-cropper-2.1.8.tgz?cache=0&sync_timestamp=1634379691101&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Freact-cropper%2Fdownload%2Freact-cropper-2.1.8.tgz", + "integrity": "sha1-vzWn3mV2n4rTV+iuiE55H+P+khI=", + "requires": { + "cropperjs": "^1.5.12" + } + }, "react-datepicker": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.14.1.tgz", @@ -16064,21 +15327,9 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "resolved": "https://registry.nlark.com/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", - "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", @@ -16086,7 +15337,7 @@ }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { @@ -16131,27 +15382,9 @@ } } }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "resolved": "https://registry.nlark.com/require-directory/download/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { @@ -16175,12 +15408,12 @@ }, "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "resolved": "https://registry.npmmirror.com/requires-port/download/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "reqwest": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/reqwest/-/reqwest-2.0.5.tgz", + "resolved": "https://registry.npm.taobao.org/reqwest/download/reqwest-2.0.5.tgz", "integrity": "sha1-APsVrEkYxBnKgrQ/JMeIguZgOaE=", "dev": true }, @@ -16257,7 +15490,7 @@ }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "resolved": "https://registry.npmmirror.com/resolve-url/download/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "restore-cursor": { @@ -16289,13 +15522,13 @@ }, "rgb-regex": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "resolved": "https://registry.nlark.com/rgb-regex/download/rgb-regex-1.0.1.tgz", "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", "dev": true }, "rgba-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "resolved": "https://registry.nlark.com/rgba-regex/download/rgba-regex-1.0.0.tgz", "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", "dev": true }, @@ -16327,7 +15560,7 @@ }, "rmc-feedback": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/rmc-feedback/download/rmc-feedback-2.0.0.tgz", + "resolved": "https://registry.nlark.com/rmc-feedback/download/rmc-feedback-2.0.0.tgz", "integrity": "sha1-y8bLOuY8emNe7w4l5PuvWsNm7qo=", "requires": { "babel-runtime": "6.x", @@ -16453,7 +15686,7 @@ }, "run-queue": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "resolved": "https://registry.nlark.com/run-queue/download/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { @@ -16493,7 +15726,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.nlark.com/safe-regex/download/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { "ret": "~0.1.10" @@ -16604,6 +15837,14 @@ "which-module": "^1.0.0", "y18n": "^3.2.1", "yargs-parser": "^5.0.0" + }, + "dependencies": { + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + } } } } @@ -16714,15 +15955,22 @@ }, "select-hose": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "resolved": "https://registry.nlark.com/select-hose/download/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" + }, + "dependencies": { + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + } } }, "semver": { @@ -16855,7 +16103,7 @@ }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": "https://registry.nlark.com/set-blocking/download/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { @@ -16881,7 +16129,7 @@ }, "setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "resolved": "https://registry.nlark.com/setimmediate/download/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { @@ -16916,7 +16164,7 @@ }, "shallow-equal": { "version": "1.2.1", - "resolved": "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.1.tgz", + "resolved": "https://registry.nlark.com/shallow-equal/download/shallow-equal-1.2.1.tgz", "integrity": "sha1-TBar+lYEOqINBQMk76aJQLDaedo=" }, "shallowequal": { @@ -16926,7 +16174,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "resolved": "https://registry.nlark.com/shebang-command/download/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { "shebang-regex": "^1.0.0" @@ -16934,7 +16182,7 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "resolved": "https://registry.nlark.com/shebang-regex/download/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shell-quote": { @@ -17062,9 +16310,9 @@ } }, "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==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "14.2.3", @@ -17105,14 +16353,14 @@ }, "dependencies": { "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" }, "acorn-globals": { "version": "6.0.0", @@ -17121,6 +16369,13 @@ "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } } }, "cssom": { @@ -17129,9 +16384,9 @@ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "cssstyle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", - "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "requires": { "cssom": "~0.3.6" }, @@ -17143,6 +16398,21 @@ } } }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -17152,57 +16422,87 @@ } }, "jsdom": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.2.2.tgz", - "integrity": "sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.0.0", + "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" + } } }, "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" } }, "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "requires": { "punycode": "^2.1.1" } @@ -17213,20 +16513,13 @@ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" }, "whatwg-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.0.0.tgz", - "integrity": "sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.0", - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" - } + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "xml-name-validator": { @@ -17243,7 +16536,7 @@ }, "simple-swizzle": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "resolved": "https://registry.npmmirror.com/simple-swizzle/download/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "dev": true, "requires": { @@ -17433,7 +16726,7 @@ }, "sort-keys": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "resolved": "https://registry.nlark.com/sort-keys/download/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "requires": { "is-plain-obj": "^1.0.0" @@ -17584,7 +16877,7 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.nlark.com/sprintf-js/download/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { @@ -17620,7 +16913,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "resolved": "https://registry.nlark.com/static-extend/download/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { "define-property": "^0.2.5", @@ -17629,7 +16922,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.nlark.com/define-property/download/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { "is-descriptor": "^0.1.0" @@ -17639,7 +16932,7 @@ }, "statuses": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654090567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stdout-stream": { @@ -17651,11 +16944,6 @@ "readable-stream": "^2.0.1" } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, "stifle": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stifle/-/stifle-1.1.1.tgz", @@ -17663,7 +16951,7 @@ }, "store": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/store/-/store-2.0.12.tgz", + "resolved": "https://registry.nlark.com/store/download/store-2.0.12.tgz", "integrity": "sha1-jFNOKguDH3K3X8XxEZhXxE711ZM=" }, "stream-browserify": { @@ -17707,12 +16995,12 @@ }, "strict-uri-encode": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-convert": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "resolved": "https://registry.nlark.com/string-convert/download/string-convert-0.2.1.tgz", "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" }, "string-length": { @@ -17821,7 +17109,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmmirror.com/strip-eof/download/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { @@ -17909,36 +17197,35 @@ }, "dependencies": { "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true } } }, @@ -17958,14 +17245,21 @@ "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } }, "postcss-selector-parser": { @@ -17978,15 +17272,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -18383,15 +17668,18 @@ "dev": true }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", + "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", "dev": true, "requires": { "figgy-pudding": "^3.5.1", @@ -18420,7 +17708,7 @@ }, "text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "resolved": "https://registry.nlark.com/text-table/download/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "theming": { @@ -18441,7 +17729,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz?cache=0&sync_timestamp=1618847037651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fthrough%2Fdownload%2Fthrough-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -18475,7 +17763,7 @@ }, "timsort": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "resolved": "https://registry.nlark.com/timsort/download/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, @@ -18508,13 +17796,13 @@ } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-arraybuffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "resolved": "https://registry.nlark.com/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, @@ -18525,7 +17813,7 @@ }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { "kind-of": "^3.0.2" @@ -18563,7 +17851,7 @@ }, "toggle-selection": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "resolved": "https://registry.nlark.com/toggle-selection/download/toggle-selection-1.0.6.tgz", "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" }, "toidentifier": { @@ -18623,13 +17911,13 @@ }, "tty-browserify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.nlark.com/tty-browserify/download/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "resolved": "https://registry.nlark.com/tunnel-agent/download/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { "safe-buffer": "^5.0.1" @@ -18637,12 +17925,12 @@ }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "resolved": "https://registry.npm.taobao.org/tweetnacl/download/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", + "resolved": "https://registry.nlark.com/type-check/download/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { "prelude-ls": "~1.1.2" @@ -18664,13 +17952,13 @@ }, "typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "resolved": "https://registry.nlark.com/typedarray/download/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "ua-parser-js": { - "version": "0.7.21", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", - "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==" + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "uglify-js": { "version": "2.8.29", @@ -18871,9 +18159,9 @@ } }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { @@ -18897,12 +18185,12 @@ }, "uniq": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, "uniqs": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "resolved": "https://registry.nlark.com/uniqs/download/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, @@ -18939,18 +18227,18 @@ }, "unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unquote": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "resolved": "https://registry.nlark.com/unquote/download/unquote-1.1.1.tgz", "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "resolved": "https://registry.nlark.com/unset-value/download/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { "has-value": "^0.3.1", @@ -18959,7 +18247,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "resolved": "https://registry.nlark.com/has-value/download/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { "get-value": "^2.0.3", @@ -18969,7 +18257,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "resolved": "https://registry.nlark.com/isobject/download/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "requires": { "isarray": "1.0.0" @@ -18979,7 +18267,7 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "resolved": "https://registry.nlark.com/has-values/download/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" }, "isobject": { @@ -19037,18 +18325,18 @@ } }, "urijs": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz", - "integrity": "sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==" + "version": "1.19.7", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", + "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==" }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "resolved": "https://registry.npmmirror.com/urix/download/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", + "resolved": "https://registry.nlark.com/url/download/url-0.11.0.tgz?cache=0&sync_timestamp=1618846952693&other_urls=https%3A%2F%2Fregistry.nlark.com%2Furl%2Fdownload%2Furl-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "requires": { "punycode": "1.3.2", @@ -19057,7 +18345,7 @@ "dependencies": { "punycode": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "resolved": "https://registry.nlark.com/punycode/download/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } @@ -19104,9 +18392,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -19174,7 +18462,7 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { @@ -19193,7 +18481,7 @@ }, "utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "resolved": "https://registry.nlark.com/utils-merge/download/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { @@ -19231,7 +18519,7 @@ }, "vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "resolved": "https://registry.nlark.com/vary/download/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "vendors": { @@ -19252,7 +18540,7 @@ }, "verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "resolved": "https://registry.npmmirror.com/verror/download/verror-1.10.0.tgz?cache=0&sync_timestamp=1635885197130&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fverror%2Fdownload%2Fverror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { "assert-plus": "^1.0.0", @@ -20138,9 +19426,9 @@ } }, "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==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "13.2.4", @@ -20492,6 +19780,13 @@ "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" + }, + "dependencies": { + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + } } }, "yargs-parser": { @@ -20557,9 +19852,9 @@ } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "webworkify": { "version": "1.5.0", @@ -20705,7 +20000,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz?cache=0&sync_timestamp=1619133505879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrappy%2Fdownload%2Fwrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { @@ -20726,11 +20021,6 @@ "signal-exit": "^3.0.2" } }, - "ws": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", - "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" - }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", @@ -20754,18 +20044,18 @@ }, "xterm": { "version": "4.8.1", - "resolved": "https://registry.npm.taobao.org/xterm/download/xterm-4.8.1.tgz", + "resolved": "https://registry.npmmirror.com/xterm/download/xterm-4.8.1.tgz", "integrity": "sha1-FVoXKaQ+Gom0BlJOIsVjQznjnKE=" }, "xterm-addon-fit": { "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/xterm-addon-fit/download/xterm-addon-fit-0.4.0.tgz", + "resolved": "https://registry.npmmirror.com/xterm-addon-fit/download/xterm-addon-fit-0.4.0.tgz", "integrity": "sha1-BuDF0KaqrPsAnvVl76HIHpPZAZM=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "3.2.2", + "resolved": "https://registry.nlark.com/y18n/download/y18n-3.2.2.tgz", + "integrity": "sha1-hckBvWRwznH8S7cjrSCbcPfyhpY=" }, "yallist": { "version": "2.1.2", diff --git a/package.json b/package.json index 04142cb4d..01f6c2821 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "antd": "^3.26.15", "array-flatten": "^2.1.2", "autoprefixer": "7.1.6", - "axios": "^0.18.1", + "axios": "^0.24.0", "babel-eslint": "7.2.3", "babel-jest": "20.0.3", "babel-loader": "7.1.2", @@ -24,11 +24,11 @@ "classnames": "^2.2.5", "clipboard": "^2.0.8", "code-prettify": "^0.1.0", - "codemirror": "^5.53.0", + "codemirror": "^5.64.0", "connected-react-router": "4.4.1", "cross-env": "^7.0.3", "css-loader": "^3.5.2", - "dompurify": "^2.0.15", + "dompurify": "^2.3.3", "dotenv": "4.0.0", "dotenv-expand": "4.2.0", "echarts": "^4.9.0", @@ -51,7 +51,7 @@ "js-base64": "^2.5.2", "js2wordcloud": "^1.1.12", "katex": "^0.11.1", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "loglevel": "^1.6.8", "marked": "^1.0.0", "material-ui": "^1.0.0-beta.40", @@ -84,6 +84,8 @@ "react-color": "^2.18.0", "react-content-loader": "^3.1.1", "react-cookies": "^0.1.1", + "react-countup": "^6.1.0", + "react-cropper": "^2.1.8", "react-datepicker": "^2.14.1", "react-dev-utils": "^9.2.0-next.80", "react-dom": "^16.13.1", diff --git a/public/css/edu-purge.css b/public/css/edu-purge.css index 0d23c5bce..ea0ae6aff 100644 --- a/public/css/edu-purge.css +++ b/public/css/edu-purge.css @@ -1268,11 +1268,17 @@ a.shixun-task-btn { /*-----------实训配置、评测脚本-------------*/ +@font-face { + font-family: "iconfont"; /* Project id 2340181 */ + src: url('iconfont.woff2?t=1631773579834') format('woff2'), + url('iconfont.woff?t=1631773579834') format('woff'), + url('iconfont.ttf?t=1631773579834') format('truetype'); +} html body { font-size: 14px; line-height: 2.0; background: #fafafa; - font-family: "Microsoft YaHei", "SimSun"; + font-family: "iconfont"; color: #05101a; height: 100%; position: relative; @@ -3938,9 +3944,13 @@ html>body #ajax-indicator { margin-left: 10px; color: #2FC25B; } +.privateTag.red{ + color: #FF6832; + border:1px solid #FF6832; +} .head-nav { text-align: center; - height: 70px; + height: 58px; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; @@ -3952,14 +3962,14 @@ html>body #ajax-indicator { position: absolute; top: 0px; z-index: 3; - height: 70px; + height: 58px; box-sizing: border-box; } .head-nav ul#header-nav li { float: left; - height: 70px; - line-height: 70px; + height: 58px; + line-height: 58px; cursor: pointer; position: relative; font-size: 16px; @@ -3982,10 +3992,6 @@ html>body #ajax-indicator { margin-right: 0px } -.head-nav ul#header-nav li.active{ - /* background-color: #3B3B3B; */ -} - .head-nav ul#header-nav li p:hover { color: #cccccc; diff --git a/public/css/iconfont.css b/public/css/iconfont.css index 3866189c2..5e40b0dc3 100644 --- a/public/css/iconfont.css +++ b/public/css/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 2340181 */ - src: url('iconfont.woff2?t=1632964996877') format('woff2'), - url('iconfont.woff?t=1632964996877') format('woff'), - url('iconfont.ttf?t=1632964996877') format('truetype'); + src: url('iconfont.woff2?t=1640585290619') format('woff2'), + url('iconfont.woff?t=1640585290619') format('woff'), + url('iconfont.ttf?t=1640585290619') format('truetype'); } .iconfont { @@ -13,6 +13,166 @@ -moz-osx-font-smoothing: grayscale; } +.icon-shengming:before { + content: "\e90b"; +} + +.icon-chenggong1:before { + content: "\e907"; +} + +.icon-a-bitian2x1:before { + content: "\e908"; +} + +.icon-xiala1:before { + content: "\e909"; +} + +.icon-xiala2:before { + content: "\e90a"; +} + +.icon-jiantou1:before { + content: "\e905"; +} + +.icon-zhangjieicon:before { + content: "\e8fe"; +} + +.icon-chengyuan1:before { + content: "\e903"; +} + +.icon-a-shangchuan2x:before { + content: "\e8f9"; +} + +.icon-shanchu7:before { + content: "\e8fa"; +} + +.icon-zuohuabeifen:before { + content: "\e8fb"; +} + +.icon-a-bianji11:before { + content: "\e8f4"; +} + +.icon-a-bitian2x:before { + content: "\e8f5"; +} + +.icon-a-zuohua2x:before { + content: "\e8f7"; +} + +.icon-lianjie3:before { + content: "\e8f8"; +} + +.icon-zhishitupu:before { + content: "\e8fc"; +} + +.icon-jisuanji1:before { + content: "\e8fd"; +} + +.icon-dianzi1:before { + content: "\e8ff"; +} + +.icon-junshililun1:before { + content: "\e900"; +} + +.icon-ruanjiangongcheng1:before { + content: "\e901"; +} + +.icon-yixue1:before { + content: "\e902"; +} + +.icon-tongxin1:before { + content: "\e904"; +} + +.icon-zhengcefagui1:before { + content: "\e906"; +} + +.icon-dashuju:before { + content: "\e8f3"; +} + +.icon-rengongzhineng:before { + content: "\e8f6"; +} + +.icon-a-shuangyinhao12x:before { + content: "\e8f2"; +} + +.icon-dingbu:before { + content: "\e8ee"; +} + +.icon-bangzhu1:before { + content: "\e8ef"; +} + +.icon-yijianfankui2:before { + content: "\e8f0"; +} + +.icon-fenxiang:before { + content: "\e8f1"; +} + +.icon-dizhi:before { + content: "\e8eb"; +} + +.icon-youxiang1:before { + content: "\e8ec"; +} + +.icon-dianhuaicon:before { + content: "\e8ed"; +} + +.icon-tianjiaicon:before { + content: "\e8e8"; +} + +.icon-lingshengicon:before { + content: "\e8ea"; +} + +.icon-gengduoicon:before { + content: "\e8e5"; +} + +.icon-shijianicon:before { + content: "\e8e7"; +} + +.icon-mimaicon:before { + content: "\e8e1"; +} + +.icon-gouicon:before { + content: "\e8e2"; +} + +.icon-zhankaiicon:before { + content: "\e8e3"; +} + .icon-wenjian7:before { content: "\e8e0"; } diff --git a/public/css/iconfont.js b/public/css/iconfont.js index 0e23ffb85..4a0868c43 100644 --- a/public/css/iconfont.js +++ b/public/css/iconfont.js @@ -1 +1 @@ -!function(c){var a,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(c,a){a.parentNode.insertBefore(c,a)};if(t&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(m,50)}v()}a=function(){var c,a;(a=document.createElement("div")).innerHTML=z,z=null,(c=a.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",a=c,(c=document.body).firstChild?p(a,c.firstChild):c.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),a()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=a,i=c.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window); \ No newline at end of file +!function(a){var c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function m(){o||(o=!0,h())}function v(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}m()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,i=a.document,o=!1,v(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}(window); \ No newline at end of file diff --git a/public/css/iconfont.json b/public/css/iconfont.json index 5acfb6e98..0fb7117e4 100644 --- a/public/css/iconfont.json +++ b/public/css/iconfont.json @@ -5,6 +5,286 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "12505154", + "name": "声明", + "font_class": "shengming", + "unicode": "e90b", + "unicode_decimal": 59659 + }, + { + "icon_id": "26470597", + "name": "成功", + "font_class": "chenggong1", + "unicode": "e907", + "unicode_decimal": 59655 + }, + { + "icon_id": "26470599", + "name": "必填@2x", + "font_class": "a-bitian2x1", + "unicode": "e908", + "unicode_decimal": 59656 + }, + { + "icon_id": "26470600", + "name": "下拉", + "font_class": "xiala1", + "unicode": "e909", + "unicode_decimal": 59657 + }, + { + "icon_id": "26470601", + "name": "下拉2", + "font_class": "xiala2", + "unicode": "e90a", + "unicode_decimal": 59658 + }, + { + "icon_id": "26363219", + "name": "箭头", + "font_class": "jiantou1", + "unicode": "e905", + "unicode_decimal": 59653 + }, + { + "icon_id": "26359564", + "name": "章节icon ", + "font_class": "zhangjieicon", + "unicode": "e8fe", + "unicode_decimal": 59646 + }, + { + "icon_id": "26359565", + "name": "成员", + "font_class": "chengyuan1", + "unicode": "e903", + "unicode_decimal": 59651 + }, + { + "icon_id": "26325702", + "name": "上传@2x", + "font_class": "a-shangchuan2x", + "unicode": "e8f9", + "unicode_decimal": 59641 + }, + { + "icon_id": "26325703", + "name": "删除 ", + "font_class": "shanchu7", + "unicode": "e8fa", + "unicode_decimal": 59642 + }, + { + "icon_id": "26325704", + "name": "左滑备份", + "font_class": "zuohuabeifen", + "unicode": "e8fb", + "unicode_decimal": 59643 + }, + { + "icon_id": "26325698", + "name": "编辑 (1)", + "font_class": "a-bianji11", + "unicode": "e8f4", + "unicode_decimal": 59636 + }, + { + "icon_id": "26325699", + "name": "必填@2x", + "font_class": "a-bitian2x", + "unicode": "e8f5", + "unicode_decimal": 59637 + }, + { + "icon_id": "26325700", + "name": "左滑@2x", + "font_class": "a-zuohua2x", + "unicode": "e8f7", + "unicode_decimal": 59639 + }, + { + "icon_id": "26325701", + "name": "链接", + "font_class": "lianjie3", + "unicode": "e8f8", + "unicode_decimal": 59640 + }, + { + "icon_id": "25748537", + "name": "知识图谱", + "font_class": "zhishitupu", + "unicode": "e8fc", + "unicode_decimal": 59644 + }, + { + "icon_id": "25748551", + "name": "计算机", + "font_class": "jisuanji1", + "unicode": "e8fd", + "unicode_decimal": 59645 + }, + { + "icon_id": "25748553", + "name": "电子", + "font_class": "dianzi1", + "unicode": "e8ff", + "unicode_decimal": 59647 + }, + { + "icon_id": "25748554", + "name": "军事理论", + "font_class": "junshililun1", + "unicode": "e900", + "unicode_decimal": 59648 + }, + { + "icon_id": "25748555", + "name": "软件工程", + "font_class": "ruanjiangongcheng1", + "unicode": "e901", + "unicode_decimal": 59649 + }, + { + "icon_id": "25748556", + "name": "医学", + "font_class": "yixue1", + "unicode": "e902", + "unicode_decimal": 59650 + }, + { + "icon_id": "25748558", + "name": "通信", + "font_class": "tongxin1", + "unicode": "e904", + "unicode_decimal": 59652 + }, + { + "icon_id": "25748560", + "name": "政策法规", + "font_class": "zhengcefagui1", + "unicode": "e906", + "unicode_decimal": 59654 + }, + { + "icon_id": "25748528", + "name": "大数据", + "font_class": "dashuju", + "unicode": "e8f3", + "unicode_decimal": 59635 + }, + { + "icon_id": "25748531", + "name": "人工智能", + "font_class": "rengongzhineng", + "unicode": "e8f6", + "unicode_decimal": 59638 + }, + { + "icon_id": "25733167", + "name": "双引号(1)@2x", + "font_class": "a-shuangyinhao12x", + "unicode": "e8f2", + "unicode_decimal": 59634 + }, + { + "icon_id": "25701947", + "name": "顶部", + "font_class": "dingbu", + "unicode": "e8ee", + "unicode_decimal": 59630 + }, + { + "icon_id": "25701948", + "name": "帮助", + "font_class": "bangzhu1", + "unicode": "e8ef", + "unicode_decimal": 59631 + }, + { + "icon_id": "25701949", + "name": "意见反馈", + "font_class": "yijianfankui2", + "unicode": "e8f0", + "unicode_decimal": 59632 + }, + { + "icon_id": "25701950", + "name": "分享", + "font_class": "fenxiang", + "unicode": "e8f1", + "unicode_decimal": 59633 + }, + { + "icon_id": "25580217", + "name": "地址", + "font_class": "dizhi", + "unicode": "e8eb", + "unicode_decimal": 59627 + }, + { + "icon_id": "25580218", + "name": "邮箱", + "font_class": "youxiang1", + "unicode": "e8ec", + "unicode_decimal": 59628 + }, + { + "icon_id": "25580219", + "name": "电话icon", + "font_class": "dianhuaicon", + "unicode": "e8ed", + "unicode_decimal": 59629 + }, + { + "icon_id": "25284174", + "name": "添加icon", + "font_class": "tianjiaicon", + "unicode": "e8e8", + "unicode_decimal": 59624 + }, + { + "icon_id": "25284175", + "name": "铃声icon", + "font_class": "lingshengicon", + "unicode": "e8ea", + "unicode_decimal": 59626 + }, + { + "icon_id": "25204490", + "name": "更多icon", + "font_class": "gengduoicon", + "unicode": "e8e5", + "unicode_decimal": 59621 + }, + { + "icon_id": "25204491", + "name": "时间icon", + "font_class": "shijianicon", + "unicode": "e8e7", + "unicode_decimal": 59623 + }, + { + "icon_id": "25188228", + "name": "密码icon", + "font_class": "mimaicon", + "unicode": "e8e1", + "unicode_decimal": 59617 + }, + { + "icon_id": "25188229", + "name": "钩icon", + "font_class": "gouicon", + "unicode": "e8e2", + "unicode_decimal": 59618 + }, + { + "icon_id": "25188230", + "name": "展开icon", + "font_class": "zhankaiicon", + "unicode": "e8e3", + "unicode_decimal": 59619 + }, { "icon_id": "24656750", "name": "文件", diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf index cffaad689..e4b21c0be 100644 Binary files a/public/css/iconfont.ttf and b/public/css/iconfont.ttf differ diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff index af2a764e6..2fb7db942 100644 Binary files a/public/css/iconfont.woff and b/public/css/iconfont.woff differ diff --git a/public/css/iconfont.woff2 b/public/css/iconfont.woff2 index 7d4cb19bb..228840c62 100644 Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ diff --git a/public/favicon-.ico b/public/favicon-.ico new file mode 100644 index 000000000..961f30521 Binary files /dev/null and b/public/favicon-.ico differ diff --git a/public/favicon.ico b/public/favicon.ico index 75a4c3dfd..ad428fa25 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/App.js b/src/App.js index fad7e9373..0ac0cd99f 100644 --- a/src/App.js +++ b/src/App.js @@ -3,14 +3,13 @@ import './App.css'; import { ConfigProvider } from 'antd' import zhCN from 'antd/lib/locale-provider/zh_CN'; import { - // BrowserRouter as Router, - Route, - Switch + Route, + Switch } from 'react-router-dom'; import axios from 'axios'; import LoginDialog from './modules/login/LoginDialog'; import 'babel-polyfill'; -import Loading from './Loading' +import Loading from './Loading'; import Loadable from 'react-loadable'; import marked from './common/marked'; @@ -26,18 +25,18 @@ import configureStore from './redux/stores/configureStore'; const store = configureStore(); window.marked = marked; const theme = createMuiTheme({ - palette: { - primary: { - main: '#4CACFF', - contrastText: 'rgba(255, 255, 255, 0.87)' - }, - secondary: { main: '#4CACFF' }, // #11cb5f This is just green.A700 as hex. - }, + palette: { + primary: { + main: '#4CACFF', + contrastText: 'rgba(255, 255, 255, 0.87)' + }, + secondary: { main: '#4CACFF' }, // #11cb5f This is just green.A700 as hex. + }, }); //forge项目 const Projects = Loadable({ - loader: () => import('./forge/Index'), - loading: Loading, + loader: () => import('./forge/Index'), + loading: Loading, }) // forge项目详情 const ProjectDetail = Loadable({ @@ -46,470 +45,511 @@ const ProjectDetail = Loadable({ }); //forge安全设置 const Security = Loadable({ - loader: () => import('./forge/SecuritySetting/Index'), - loading: Loading, + loader: () => import('./forge/SecuritySetting/Index'), + loading: Loading, }) //forge项目-devOps详情 const OpsDetail = Loadable({ - loader: () => import('./forge/DevOps/opsDetail'), - loading: Loading, + loader: () => import('./forge/DevOps/opsDetail'), + loading: Loading, }) //403页面 const Shixunauthority = Loadable({ - loader: () => import('./modules/403/Shixunauthority'), - loading: Loading, + loader: () => import('./modules/403/Shixunauthority'), + loading: Loading, }) //404页面 const Shixunnopage = Loadable({ - loader: () => import('./modules/404/Shixunnopage'), - loading: Loading, + loader: () => import('./modules/404/Shixunnopage'), + loading: Loading, }) //500页面 const http500 = Loadable({ - loader: () => import('./modules/500/http500'), - loading: Loading, + loader: () => import('./modules/500/http500'), + loading: Loading, }) const InfosIndex = Loadable({ - loader: () => import('./forge/users/Index'), - loading: Loading, + loader: () => import('./forge/users/Index'), + loading: Loading, }) // 组织 const OrganizeIndex = Loadable({ - loader: () => import('./forge/Team/Index'), - loading: Loading, -}) -const EducoderLogin = Loadable({ - loader: () => import('./modules/login/EducoderLogin'), - loading: Loading, + loader: () => import('./forge/Team/Index'), + loading: Loading, }) + const Search = Loadable({ - loader: () => import('./search/SearchPage'), - loading: Loading, + loader: () => import('./modules/search/'), + loading: Loading, }) const WikiPreview = Loadable({ - loader: () => import('./forge/Wiki/Preview'), - loading: Loading, + loader: () => import('./forge/Wiki/Preview'), + loading: Loading, }) const ProjectIndex = Loadable({ - loader: () => import("./forge/Index"), - loading: Loading, + loader: () => import("./forge/Index"), + loading: Loading, }); +const Home = Loadable({ + loader: () => import('./home/Index'), + loading: Loading, +}) + +const LoginRegisterPage = Loadable({ + loader: () => import("./modules/loginRegister/LoginRegisterPage"), + loading: Loading, +}); + +const AboutUs = Loadable({ + loader: () => import("./forge/AboutUs/AboutUs"), + loading: Loading, +}) + +const Teaching = Loadable({ + loader : () => import("./forge/TeachingPractice/Teaching"), + loading: Loading, +}) // const CreateMerge = Loadable({ // loader: () => import('./forge/Merge/NewMerge'), // loading: Loading, // }) // 此处仅维护前端可能的一级路由,不用进行项目或者组织判断的字段。 -const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize"]; +const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize", "login", "register", "resetPassword", "aboutus","educoder"]; class App extends Component { - constructor(props) { - super(props); - this.state = { - Addcoursestype: false, - Addcoursestypes: false, - mydisplay: false, - occupation: 0, - mygetHelmetapi: null, - pathType: null, - pathName: null, - } - } + constructor(props) { + super(props); + this.state = { + Addcoursestype: false, + Addcoursestypes: false, + mydisplay: false, + occupation: 0, + mygetHelmetapi: null, + pathType: null, + pathName: null, + } + } - UNSAFE_componentWillMount() { - initAxiosInterceptors(this.props); - let pathname = window.location.pathname ? window.location.pathname.split('/')[1] : ''; - pathname && this.getPathnameType(pathname); + UNSAFE_componentWillMount() { + initAxiosInterceptors(this.props); + let pathname = window.location.pathname ? window.location.pathname.split('/')[1] : ''; + pathname && this.getPathnameType(pathname); - // 添加路由监听,决定组织还是个人 - this.unlisten = this.props.history.listen((location) => { - let newPathname = location.pathname.split('/')[1]; - if (this.state.pathName !== newPathname) { - // this.setState({ pathType: '' }); - newPathname && this.getPathnameType(newPathname); - } - }); - } + // 添加路由监听,决定组织还是个人 + this.unlisten = this.props.history.listen((location,history) => { + let newPathname = location.pathname.split('/')[1]; + if (this.state.pathName !== newPathname) { + // this.setState({ pathType: '' }); + newPathname && this.getPathnameType(newPathname); + } + }); + } - shouldComponentUpdate(nextProps, nextState) { - // (!keyWord.includes(this.props.location.pathname.split('/')[1])) && - if (nextProps.location.pathname.split('/')[1] !== this.props.location.pathname.split('/')[1] && nextState.pathType === this.state.pathType) { - return false; - } else { - return true; - } - } + shouldComponentUpdate(nextProps, nextState) { + if(!nextProps.location.pathname==='/'){ + return true; + } + // 阻止个人与组织切换时(组件渲染)请求导致的404 + if (nextProps.location.pathname.split('/')[1] !== this.props.location.pathname.split('/')[1] && nextState.pathType === this.state.pathType) { + return false; + } else { + return true; + } + } - getPathnameType = (pathname) => { - if (!keyWord.includes(pathname)) { - let url = `/owners/${pathname}.json`; - axios.get(url).then((response) => { - if (response && response.status === 200) { - this.setState({ - pathType: response.data.type || '404', - pathName: pathname, - }) - } - }); - }else{ - this.setState({ - pathType: pathname, - pathName: pathname, - }); - } - } + getPathnameType = (pathname) => { + if (!keyWord.includes(pathname)) { + let url = `/owners/${pathname}.json`; + axios.get(url).then((response) => { + if (response && response.status === 200) { + this.setState({ + pathType: response.data.type || '404', + pathName: pathname, + }) + } + }); + }else{ + this.setState({ + pathType: pathname, + pathName: pathname, + }); + } + } - HideAddcoursestypess = (i) => { - this.setState({ - Addcoursestype: false, - Addcoursestypes: false, - mydisplay: true, - occupation: i, - }) - }; - hideAddcoursestypes = () => { - this.setState({ - Addcoursestypes: false - }) - }; + HideAddcoursestypess = (i) => { + this.setState({ + Addcoursestype: false, + Addcoursestypes: false, + mydisplay: true, + occupation: i, + }) + }; + hideAddcoursestypes = () => { + this.setState({ + Addcoursestypes: false + }) + }; - componentDidMount() { - document.title = "loading..."; - this.getAppdata(); + componentDidMount() { + document.title = "loading..."; - window.addEventListener('error', (event) => { - const msg = `${event.type}: ${event.message}`; - }); + this.getAppdata(); - } + window.addEventListener('error', (event) => { + const msg = `${event.type}: ${event.message}`; + }); - componentWillUnmount() { - this.unlisten && this.unlisten(); // 执行解绑 - } + } - //修改登录方法 - Modifyloginvalue = () => { - this.setState({ - isRender: false, - }) - }; + componentWillUnmount() { + this.unlisten && this.unlisten(); // 执行解绑 + } - //获取数据为空的时候 - gettablogourlnull = () => { - this.setState({ - mygetHelmetapi: undefined - }); - document.title = "Forge"; - var link = document.createElement('link'), - oldLink = document.getElementById('dynamic-favicon'); - link.id = 'dynamic-favicon'; - link.rel = 'shortcut icon'; - link.href = "/react/build/./favicon.ico"; - if (oldLink) { - document.head.removeChild(oldLink); - } - document.head.appendChild(link); - }; + //修改登录方法 + Modifyloginvalue = () => { + this.setState({ + isRender: false, + }) + }; - //获取数据的时候 - gettablogourldata = (response) => { - document.title = response.data.setting.name; - var link = document.createElement('link'), - oldLink = document.getElementById('dynamic-favicon'); - link.id = 'dynamic-favicon'; - link.rel = 'shortcut icon'; - link.href = '/' + response.data.setting.tab_logo_url; - if (oldLink) { - document.head.removeChild(oldLink); - } - document.head.appendChild(link); - } - //获取当前定制信息 - getAppdata = () => { - let url = "/setting.json"; - axios.get(url).then((response) => { - if (response) { - if (response.data) { - this.setState({ - mygetHelmetapi: response.data.setting - }); - //存储配置到游览器 - localStorage.setItem('chromesetting', JSON.stringify(response.data.setting)); - localStorage.setItem('chromesettingresponse', JSON.stringify(response)); - try { - if (response.data.setting.tab_logo_url) { - this.gettablogourldata(response); - } else { - this.gettablogourlnull(); - } - } catch (e) { - this.gettablogourlnull(); - } - } else { - this.gettablogourlnull(); - } - } else { - this.gettablogourlnull(); - } - }).catch((error) => { - this.gettablogourlnull(); - }); - }; + //获取数据为空的时候 + gettablogourlnull = () => { + this.setState({ + mygetHelmetapi: undefined + }); + document.title = "Forge"; + var link = document.createElement('link'), + oldLink = document.getElementById('dynamic-favicon'); + link.id = 'dynamic-favicon'; + link.rel = 'shortcut icon'; + link.href = "/react/build/./favicon.ico"; + if (oldLink) { + document.head.removeChild(oldLink); + } + document.head.appendChild(link); + }; - render() { - const { mygetHelmetapi, pathType} = this.state; - let personal = mygetHelmetapi && mygetHelmetapi.personal; - return ( - - - - this.Modifyloginvalue()}> - - {/* */} - - {/* wiki预览 */} - { - return () - } - } /> + //获取数据的时候 + gettablogourldata = (response) => { + document.title = response.data.setting.name; + var link = document.createElement('link'), + oldLink = document.getElementById('dynamic-favicon'); + link.id = 'dynamic-favicon'; + link.rel = 'shortcut icon'; + link.href = '/' + response.data.setting.tab_logo_url; + if (oldLink) { + document.head.removeChild(oldLink); + } + document.head.appendChild(link); + } + //获取当前定制信息 + getAppdata = () => { + let url = "/setting.json"; + axios.get(url).then((response) => { + if (response) { + if (response.data) { + this.setState({ + mygetHelmetapi: response.data.setting + }); + //存储配置到游览器 + localStorage.setItem('chromesetting', JSON.stringify(response.data.setting)); + localStorage.setItem('chromesettingresponse', JSON.stringify(response)); + try { + if (response.data.setting.tab_logo_url) { + this.gettablogourldata(response); + } else { + this.gettablogourlnull(); + } + } catch (e) { + this.gettablogourlnull(); + } + } else { + this.gettablogourlnull(); + } + } else { + this.gettablogourlnull(); + } + }).catch((error) => { + this.gettablogourlnull(); + }); + }; - {/* 项目PR */} - () - } - > + render() { + const { pathType } = this.state; + return ( + + + + this.Modifyloginvalue()}> + + {/* */} + + {/* wiki预览 */} + { + return () + } + } /> - {/*项目*/} - { - return () - } - }> - - { - return () - } - }> - + {/* 项目PR */} + () + } + > - { - return () - } - } - /> - {/*403*/} - + {/*项目*/} + { + return () + } + }> + + { + return () + } + }> + + + {/*403*/} + - + - {/*404*/} - + {/*404*/} + - {/* 查询 */} - + {/* 查询 */} + - ( - - ) - } - /> + ( + + ) + } + /> + ( + + ) + } + /> - - {/* 组织 */} - { - return () - } - }> - + {/* 登录 */} + } + > - {/*新建项目等*/} - { - return () - } - }> - + {/* 注册 */} + } + > - {/* 判断为用户/组织,并进入对应页面 */} - { - pathType === 'User' ? - { - return () - } - } - /> : pathType === 'Organization' ? { - return () - } - }> - : pathType === '404' ? : - ( - personal && personal.length > 0 ? - - : - - ) - } - /> - // - // - } + {/* 忘记密码 */} + } + > + + {/* 关于我们 */} + } + > + + {/* 教学实践 */} + } + > + + {/* 组织 */} + { + return () + } + }> + + + {/*新建项目等*/} + { + return () + } + }> + + + {/* 判断为用户/组织,并进入对应页面 */} + { + pathType === 'User' ? + { + return () + } + } + /> : pathType === 'Organization' ? { + return () + } + }> + : pathType === '404' ? : + "" + } + ( + + ) + } + /> + + {/* 个人主页 */} + { + return () + } + }> - - {/* 个人主页 */} - { - return () - } - }> - - - - - {/* */} - - - - ); - } + + + + + + ); + } } // moment国际化,设置为中文 moment.defineLocale('zh-cn', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'Ah点mm分', - LTS: 'Ah点m分s秒', - L: 'YYYY-MM-DD', - LL: 'YYYY年MMMD日', - LLL: 'YYYY年MMMD日Ah点mm分', - LLLL: 'YYYY年MMMD日ddddAh点mm分', - l: 'YYYY-MM-DD', - ll: 'YYYY年MMMD日', - lll: 'YYYY年MMMD日Ah点mm分', - llll: 'YYYY年MMMD日ddddAh点mm分' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar: { - sameDay: function () { - return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; - }, - nextDay: function () { - return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; - }, - lastDay: function () { - return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; - }, - nextWeek: function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - lastWeek: function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; - }, - sameElse: 'LL' - }, - ordinalParse: /\d{1,2}(日|月|周)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime: { - future: '%s内', - past: '%s前', - s: '几秒', - m: '1分钟', - mm: '%d分钟', - h: '1小时', - hh: '%d小时', - d: '1天', - dd: '%d天', - M: '1个月', - MM: '%d个月', - y: '1年', - yy: '%d年' - }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'Ah点mm分', + LTS: 'Ah点m分s秒', + L: 'YYYY-MM-DD', + LL: 'YYYY年MMMD日', + LLL: 'YYYY年MMMD日Ah点mm分', + LLLL: 'YYYY年MMMD日ddddAh点mm分', + l: 'YYYY-MM-DD', + ll: 'YYYY年MMMD日', + lll: 'YYYY年MMMD日Ah点mm分', + llll: 'YYYY年MMMD日ddddAh点mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: function () { + return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; + }, + nextDay: function () { + return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; + }, + lastDay: function () { + return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; + }, + nextWeek: function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + lastWeek: function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + sameElse: 'LL' + }, + ordinalParse: /\d{1,2}(日|月|周)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime: { + future: '%s内', + past: '%s前', + s: '几秒', + m: '1分钟', + mm: '%d分钟', + h: '1小时', + hh: '%d小时', + d: '1天', + dd: '%d天', + M: '1个月', + MM: '%d个月', + y: '1年', + yy: '%d年' + }, + week: { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } }); export default SnackbarHOC()(App); + diff --git a/src/AppConfig.js b/src/AppConfig.js index b93e7c0b9..267cdffa9 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -32,11 +32,11 @@ export function initAxiosInterceptors(props) { // 判断网络是否连接 initOnlineOfflineListener(); - var proxy = "https://testforgeplus.educoder.net"; + var proxy = "https://testforgeplus.trustie.net"; //响应前的设置 axios.interceptors.request.use( config => { - if(config.url.indexOf("http") !== -1) { + if(config.url.substr(0, 4) === "http") { return config } requestProxy(config); @@ -68,6 +68,8 @@ export function initAxiosInterceptors(props) { if (response.data.status === -1) { if (window.location.pathname.startsWith('/tasks/')) { props.showSnackbar(response.data.message || '服务器异常,请联系管理员。') + } else if(window.location.pathname.startsWith('/login') || window.location.pathname.startsWith('/register') || window.location.pathname.startsWith('/resetPassword')) { + return response; } else { notification.open({ message: "提示", diff --git a/src/common/UrlTool.js b/src/common/UrlTool.js index 4c3911cd4..51745ac30 100644 --- a/src/common/UrlTool.js +++ b/src/common/UrlTool.js @@ -256,3 +256,36 @@ export function publicSearchs(Placeholder,onSearch,onInputs,onChanges,loadings) allowClear={true} >) } + + + +export function turnbar(str){ + let s = str; + if(s && s.length>0){ + if(s.indexOf("%")>-1){ + s = s.replaceAll('%','_25'); + } + if(s.indexOf("#")>-1){ + s = s.replaceAll('#','%23'); + } + if(s.indexOf("/")>-1){ + s = s.replaceAll('/','%2F'); + } + } + return s; +} +export function returnbar(str){ + let s = str; + if(s && s.length>0){ + if(str.indexOf("_25")>-1){ + s = s.replaceAll('_25','%'); + } + if(s.indexOf("%23")>-1){ + s = s.replaceAll('%23','#'); + } + if(s.indexOf("%2F")>-1){ + s = s.replaceAll('%2F','/'); + } + } + return s; +} \ No newline at end of file diff --git a/src/common/educoder.js b/src/common/educoder.js index 1a063d823..067d3f60e 100644 --- a/src/common/educoder.js +++ b/src/common/educoder.js @@ -6,7 +6,8 @@ export { getUploadLogoActionUrl as getUploadLogoActionUrl,numFormat as numFormat, getImageUrl as getImageUrl,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl , getUploadActionUrl as getUploadActionUrl, getUploadActionUrltwo as getUploadActionUrltwo, getUploadActionUrlthree as getUploadActionUrlthree, getUploadActionUrlOfAuth as getUploadActionUrlOfAuth - , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl + , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl, + turnbar,returnbar } from './UrlTool'; export { setmiyah as setmiyah } from './Component'; diff --git a/src/components/render-html.jsx b/src/components/render-html.jsx index b24fc092a..bcebb663a 100644 --- a/src/components/render-html.jsx +++ b/src/components/render-html.jsx @@ -30,7 +30,7 @@ export default ({ cleanToc() } rs = rs.replace(/(__special_katext_id_\d+__)/g, (_match, capture) => { - const { type, expression } = math_expressions[capture] + const { type, expression } = math_expressions[capture]; return renderToString(_unescape(expression) || '', { displayMode: type === 'block', throwOnError: false, output: 'html' }) }) rs = rs.replace(/▁/g, "▁▁▁") diff --git a/src/forge/AboutUs/AboutUs.jsx b/src/forge/AboutUs/AboutUs.jsx new file mode 100644 index 000000000..bb5deccde --- /dev/null +++ b/src/forge/AboutUs/AboutUs.jsx @@ -0,0 +1,280 @@ +import React , { useEffect , useState } from 'react'; +import { TPMIndexHOC} from '../../modules/tpm/TPMIndexHOC'; +import { Timeline, Carousel } from 'antd'; +import { getImageUrl } from 'educoder'; +import CountUp from 'react-countup'; +import axios from 'axios'; +import './AboutUs.scss'; +import subititle from './image/subtitle.png'; +import achievements from './image/achievements.png'; +import earth from './image/earth.png'; +import computer from './image/computer.png'; +import position from './image/position.png'; +import quan1 from './image/quan1.png'; +import quan2 from './image/quan2.png'; +import fun1 from './image/fun1.png'; +import fun2 from './image/fun2.png'; +import fun3 from './image/fun3.png'; +import fun4 from './image/fun4.png'; +import fun5 from './image/fun5.png'; + +function AboutUs(){ + const countUpProps = { + redraw: true, + start: 0, + duration: 2, + suffix: "+" + }; + const [selectTitle, setSelectTitle] = useState(1); + //用于刷新组件 + const [flush, setFlush] = useState(false); + //合作单位 + const [units, setUnits] = useState([]); + + useEffect(()=>{ + //添加浏览器滚动监听事件 + window.addEventListener('scroll', scrollListener); + //请求topics.json接口获取合作单位信息 + axios.get(`/topics.json`, { params: { topic_type: "cooperator", limit: 20, group_size: 5}}).then(response=>{ + response && setUnits(response.data.topics); + }); + return ()=>window.removeEventListener('scroll', scrollListener); + },[]) + + function scrollListener(e){ + const top = e.srcElement.scrollingElement.scrollTop; + //回到顶部时导航栏选中【关于我们】 + top < 555 && setSelectTitle(1); + if (top > 2800 && top< 4000){ + setFlush(true); + }else{ + setFlush(false); + } + } + + return( +
+
+

GitLink 确实开源

+

新一代开源创新服务平台,让您的创意在这里释放

+
+
+ setSelectTitle(1)}>关于我们 + setSelectTitle(2)}>平台统计 + setSelectTitle(3)}>加入我们 + setSelectTitle(4)}>合作单位 +
+
+ + {/* 关于我们 */} +
+
+
关于我们
+ {/* 简介 */} +
+
+

简介

+
GitLink(确实开源)是CCF官方指定的开源创新服务平台,旨在以“为开源创新服务”为使命,以“成为开源创新的汇聚地”为愿景,秉承“创新、开放、协作、共享”的价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新工科人才培养的开源创新生态!
+
+ +
+
+ {/* 确实开源 一脉传承 */} +
+

确实开源  一脉传承

+
本世纪以来,随着软件创新需求和应用规模的飞速增长,软件开发队伍、开发资源、可信评估呈现出规模化、开放化、持续化的新特点,软件开发活动面临协同难、复用难、评估难的制约,经典的工程化软件开发方法面临严峻挑战,严重影响了软件开发效率和质量的提升。在此背景下,国防科技大学联合国内多所知名高校、科研机构和软件企业,围绕开源创新开展了持续性探索,构建形成了以Trustie(确实)为代表的一系列开源创新服务基础设施。自2006年以来,Trustie经过三个阶段的演化发展,于2021年迎来全面升级:在中国计算机学会(CCF)的带领指导下,共同推进产学研用深度融合,共筑新一代开源创新服务平台GitLink!
+
+ + + + }> +
+

Trustie 1.0阶段(2006年-2014年)

+
国防科技大学、北京大学、北京航空航天大学、中国科学院软件研究所等单位合作开展了基于网络的软件开发群体化方法与技术研究,揭示了以大众化协同开发、开放式资源共享、持续性可信评估为核心的互联网大规模协同机理,与软件开发工程化方法相结合,系统地提出了基于网络的软件开发群体化方法,并于2008年发布了可信的国家软件资源共享与协同生产环境(简称“Trustie v1.0”,中文简称“确实”),重点解决大规模软件协同开发、可信评估、运行监控和持续演化等问题。
+
+
+ }> +
+

Trustie 2.0阶段(2014年-2020年)

+
在科技部项目的持续资助下,国防科技大学联合国内多所知名高校、科研机构和软件企业,致力于系统研究新型软件开发方法,为开源生态建设提供方法指导和实践指南,支撑科教领域原始创新成果的开源孵化和开源人才培养,并于2014年发布了面向软件创新和教育的开源社区Trustie v2.0,重点探索协作开发社区、知识分享社区、应用服务社区等“大外围”软件涉众的联接,以及基于开源大数据的智能化开发等技术。
+
+
+ }> +
+

Trustie 3.0阶段 (2020年至今)

+
Trustie在已有的技术积累基础上,进一步联合国内高等院校、科研机构、产业企业和开源组织等,在中国计算机学会(CCF)的带领指导下,共同推进产学研用深度融合,致力于联接互联网海量群智资源,探索开源创新成果开放与共享、开源生态协作与共建的新模式和新方法,升级形成了新一代开源创新服务平台GitLink,力图破解软件开发群智范式背后的本质机理,建立面向“大外围”开放创新的群智激发与汇聚关键机制,实现面向大规模软件涉众的稳态群智激发与汇聚。
+
+
+
+
+
+ + {/* 特色功能 确实给力 */} +
+
+

特色功能  确实给力

+ + + + + + +
+
+
+
+

分布式协作开发

+
支持在线文件编辑、  
分支管理、贡献统计、
仓库复刻、合并请求   
+
+
+
+
+
+
+

一站式过程管理

+
支持疑修、里程碑、   
通知提醒、标签归档、Wiki文档、组织管理   
+
+
+
+
+
+
+

高效流水线运维

+
提供轻量级工作流引擎
并支持自定义配置、   
静态扫描、制品构建   
+
+
+
+
+
+
+

多层次代码分析

+
支持代码溯源分析、   
许可证风险分析、开源漏洞检测和加固建议   
+
+
+
+
+
+
+

多维度用户画像

+
支持开发活动统计、   
贡献日历、能力建模、
角色与专业定位分析   
+
+
+
+
+
+ + {/* 成果作用,确实有效 */} +
+ +
+

成果作用  确实有效

+
GitLink(确实开源)为我国创新型软件产业发展提供了关键技术支撑和实践指南,为各类开源创新活动以及我国军地开源社区建设提供了有效支撑,为推动开源创新发展和创新人才培养发挥了重要作用。
通过10多年的发展,GitLink平台显著提升了大型软件企业软件生产能力,支持了我国航空、航天、国防等多个关键领域的可信软件生产,为包括新一代人工智能启智社区、ARM绿色计算社区、科技部云计算与大数据木兰社区、科技委可控开源创造行动红山社区等的建设提供关键技术支撑,为我国关键领域开源社区生态建设发挥了重要作用!
+
+
+
+ + {/* 平台统计 */} +
+ +
平台统计
+

联接海量群智资源,汇聚优秀开源组织,孵化优质创新成果

+ +
+
+ +

开发者

+
+
+ +

组织

+
+
+ +

仓库

+
+
+
+ + {/* 加入我们 */} +
+ +
+
加入我们
+

探索你的未来

+

GitLink团队在寻找新的小伙伴,期待着您的加入,让我们一起为开源创新贡献力量!

+ + {/* 轮播图 */} + +
+
+

前端开发工程师

+
+ 1、全日制本科及以上学历,5年以上Web前端开发经验,熟练使用Gulp、Webpack等构建工具;
+ 2、熟练掌握VUE或React编程;有前端模块化、组件化、自动化开发经验者优先;
+ 3、精通jQuery、Ajax、Json等技术,对VUE,NodeJs等技术有所涉及;
+ 4、熟悉前端开发技术(HTML5、JS、JSON、XHTML、CSS3、ES6),了解各项技术的相关标准,并严格按照标准进行开发。
+
+
+
+

后端开发工程师

+
+ 1、全日制本科及以上学历,计算机、软件工程相关专业者优先;
+ 2、3年以上Java开发相关经验,扎实的Java编程基础,参与过1个以上大/中型高并发、高性能系统架构设计、开发和调优;
+ 3、熟练掌握Spring、SpringBoot、Spring MVC、MyBatis等开源框架,掌握MVC框架模式及BS架构;
+ 4、精通SQL,熟练使用MySQL、Oracle等数据库,并具有一定的SQL优化能力;熟悉Redis、MongoDB等常用NoSQL解决方案,了解各自的优缺点以及使用场景者优先。
+
+
+
+
+
+

软件测试工程师

+
+ 1、熟悉主流开发技术框架,具备软件工程的基本知识;
+ 2、熟练掌握各种测试理论和测试技术,精通测试过程设计和用例设计方法;
+ 3、熟悉性能测试、自动化测试、安全测试其中一种或多种测试工具;(LoadRunner、Jmeter、Selenium、QTP、Robot、Firebug、AppScan,PyCharm等),熟练运用工具从事过相关测试工作;
+ 4、熟悉掌握一种编程语言(Java/Python/C++等);
+ 5、熟悉Oracle/MySQL数据库,并能熟练编写SQL语句,熟练常用Linux命令;
+ 6、有整体质量意识,测试管理经验。
+
+
+
+

产品经理

+
+ 1、计算机或相关专业本科以上学历;3年以上工作经验;
+ 2、熟悉开源软件项目的管理流程,了解软件需求的调研方法,具备需求分析能力;
+ 3、能以专业的方式向客户提供技术咨询,良好的方案设计能力和文字功底;
+ 4、具备良好的交流、沟通和表达能力,良好的方案演示和介绍技巧;
+ 5、了解互联网产品的基本思路及基础方法论,能够基于数据提出产品优化策略;
+ 6、承受较强的工作压力,强烈的团队合作意识与工作责任心;
+ 7、有良好人际交往能力,工作积极主动,自信心强,有较强的学习能力。
+
+
+
+
+

简历投递邮箱:zengyt#csxjy.com.cn 曾先生 (用@符号替换#)

+
+
+ + {/* 合作单位 */} +
+ +
合作单位
+ + {units && units.map(group =>{ + return ( + + {group.map(item =>{ + return( + + ) + })} + + ) + })} +
+
+
+
+ ) +} +export default TPMIndexHOC(AboutUs); \ No newline at end of file diff --git a/src/forge/AboutUs/AboutUs.scss b/src/forge/AboutUs/AboutUs.scss new file mode 100644 index 000000000..3d9855522 --- /dev/null +++ b/src/forge/AboutUs/AboutUs.scss @@ -0,0 +1,338 @@ +.aboutUs_body{ + font-size: 16px; + color: #182332; + font-family: PingFangSC-Regular, PingFang SC; + & table{ + text-align: center; + margin: 0 auto; + } + & .df{ + display: flex; + justify-content: space-around; + align-items: center; + } + & .join_us_bg, .feature_function_bg, .feat_fun_img, .aboutUs_head{ + background-size: cover; + background-repeat: no-repeat; + background-position: center; + } + & .mao{ + position: relative; + top: -70px; + } +} +.aboutUs_head.df{ + flex-direction: column; + justify-content: center; + height: 500px; + line-height: 500px; + background-image: url('./image/banner.png'); + & p{ + text-align: center; + } + & .head_title{ + line-height: 50px; + font-size: 48px; + font-weight: 600; + background-image: -webkit-linear-gradient(bottom,#4CDBF5,#5AACFF); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + & .head_cont{ + line-height: 39px; + color: #FFFFFF; + opacity: 0.9; + } +} +.aboutUs_title{ + width: 800px; + height: 62px; + margin: 0 auto; + &>table{ + width: 800px; + font-weight: 400; + } + & a.active{ + color: #466AFF; + height: 62px; + line-height: 62px; + border-bottom: 2px solid; + } +} +.aboutUs{ + & .au_title{ + font-size: 38px; + font-weight: 500; + color: #1E1E1E; + text-align: center; + padding-top: 50px; + // line-height: 53px; + } + & .subtitle{ + font-size: 20px; + font-weight: bold; + color: #000000; + margin-bottom: 23px !important; + } +} +.about_us{ + // 关于我们 + & .au_cont.df{ + justify-content: space-between; + } + & .au_bg{ background: linear-gradient(180deg, #F3F9FF 0%, rgba(255, 255, 255, 0) 100%);} + & .cont1_introduction{ + width: 472px; + &>div{ + line-height: 34px; + } + } + & .cont1_achievements{ + width: 581px; + & .subtitle.ml0{margin-left: 0;} + &>div{ + font-size: 15px; + line-height: 36px; + } + } + & .subtitleImg{ + width: 650px; + height: 330px; + } + & .achievementsImg{ + width: 507px; + height: 384px; + } + //时间轴 + & .inherit_items{ + position: relative; + & .quan1Img{ + width: 140px; + height: 167px; + position: absolute; + left: -290px; + top: 90px; + } + & .quan2Img{ + width: 100px; + height: 120px; + position: absolute; + right: -170px; + bottom: 80px; + } + } + .inherit{ + & .icon-a-yuanquan2x{ + color: #466aff; + } + & .ant-timeline-item-tail{ + border-left: 2px solid rgba(108, 134, 172, 0.42); + height: calc(100% - -30px); + } + & .ant-timeline-item:last-child .ant-timeline-item-tail{ + display: block; + height: calc(100% - 18px); + } + & .ant-timeline-item-content{ + margin: 0 0 -15px 18px; + } + } + .timeline_cont{ + margin-left: 35px; + &>p{ + font-size: 20px; + font-weight: 500; + color: #466AFF; + margin: 45px 0 30px !important; + } + &>div{ + width: 980px; + padding: 20px 35px; + background: #F5F7FA; + font-size: 15px; + font-weight: 400; + color: #182332; + line-height: 33px; + &:after,&:before{ + content: ""; + position: absolute; + left: 21px; + top: 100px; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + border-right: 14px solid #F5F7FA; + } + } + } + //特色功能 确实给力 + & .feature_function_bg{ + position: relative; + height: 630px; + background-image: url(./image/funBg.png); + & .au_cont p.au_title{ + font-size: 30px; + padding: 50px 0 70px; + color: #FFFFFF; + opacity: 0.9; + } + & table{ + position: relative; + background: none; + width: 1200px;} + & .funBg2 { + width: 1600px; + left: 50%; + margin-left: -800px; + position: absolute; + bottom: -15px; + } + } + + & .feat_func_cont{ + width: 200px; + & .feat_fun_img{ + height: 205px; + line-height: 205px; + background-image: url('./image/funBg3.png'); + &:hover{background-image: url('./image/funBg4.png');} + } + & img{ width: 175px;} + & p{ + font-size: 18px; + font-weight: 500; + color: #FFFFFF; + line-height: 28px; + background-image: -webkit-linear-gradient(bottom,#4FFDFF,#0183FF); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + & div>div{ + margin: 10px auto; + width: 142px; + font-size: 14px; + line-height: 28px; + color: #FFFFFF; + opacity: 0.76; + } + } + + // 平台统计 + &.statistics{ + text-align: center; + background: linear-gradient(180deg, #ECF3FF 0%, #FFFFFF 100%); + height: 640px; + overflow: hidden; + position: relative; + & .statistics_cont{ + width: 1014px; + height: 203px; + background: #FFFFFF; + opacity: 0.83; + position: absolute; + top: 230px; + left: 50%; + margin-left: -500px; + & span{ + font-size: 48px; + font-weight: bold; + color: #1338D1; + } + & p{ + width: 111px; + height: 38px; + line-height: 38px; + border: 1px solid #182332; + margin: 0 auto; + font-size: 22px; + color: #1E1E1E; + } + } + & .earthImg{ + width: 1500px; + margin-top: -120px; + animation: moving 60s linear infinite; + } + @keyframes moving { + 0% { transform: rotate(0deg);} + 50% { transform: rotate(180deg);} + 100% { transform: rotate(360deg);} + } + } +} +// 加入我们 +.join_us_bg{ + height: 710px; + margin-top: 40px; + background-image: url(./image/joinUs.png); + & .au_cont{position: relative;} + & .joinUsImg{ + width: 260px; + height: 265px; + position: absolute; + top: 27px; + right: 10px; + } + & .df{ + display: flex !important; + margin-top: 30px; + } + & .position{ + width: 540px; + &.right{ margin-right: -30px;} + & p{ + justify-content: flex-start; + height: 60px; + background: #253DA0; + line-height: 60px; + padding-left: 20px; + & img{width: 30px;} + & span{ + font-weight: 500; + color: #FFFFFF; + line-height: 22px; + } + } + & div{ + min-height: 306px; + font-size: 14px; + line-height: 34px; + padding: 20px; + background: #FFFFFF;} + } + & .ant-carousel .slick-dots-bottom{bottom: -30px;} + & .ant-carousel .slick-dots li button{ + width: 12px; + height: 12px; + border-radius: 10px; + background: #466AFF; + } + & .delivery{ + height: 60px; + line-height: 60px; + margin-left: 35px; + } +} +//合作单位 +.unit{ + margin-bottom: 60px; + & table{ + width: 1200px; + height: 550px; + margin-top: 15px; + border-collapse: separate; + border-spacing: 10px 10px; + & td{ + width: 224px; + height: 122px; + box-shadow: 0px 1px 8px 1px rgba(0, 0, 0, 0.06); + border-radius: 6px; + border: 2px solid #FFFFFF; + &:hover{ border: 1px solid #466AFF;} + } + } +} +.au_cont{ + width: 1200px; + margin: 50px auto; + &.pl30 .subtitle{ margin-left: -30px;} +} \ No newline at end of file diff --git a/src/forge/AboutUs/image/achievements.png b/src/forge/AboutUs/image/achievements.png new file mode 100644 index 000000000..5ffebdd34 Binary files /dev/null and b/src/forge/AboutUs/image/achievements.png differ diff --git a/src/forge/AboutUs/image/banner.png b/src/forge/AboutUs/image/banner.png new file mode 100644 index 000000000..817193acb Binary files /dev/null and b/src/forge/AboutUs/image/banner.png differ diff --git a/src/forge/AboutUs/image/computer.png b/src/forge/AboutUs/image/computer.png new file mode 100644 index 000000000..eb16db56a Binary files /dev/null and b/src/forge/AboutUs/image/computer.png differ diff --git a/src/forge/AboutUs/image/earth.png b/src/forge/AboutUs/image/earth.png new file mode 100644 index 000000000..7cb766c1e Binary files /dev/null and b/src/forge/AboutUs/image/earth.png differ diff --git a/src/forge/AboutUs/image/fun1.png b/src/forge/AboutUs/image/fun1.png new file mode 100644 index 000000000..9fd10b592 Binary files /dev/null and b/src/forge/AboutUs/image/fun1.png differ diff --git a/src/forge/AboutUs/image/fun2.png b/src/forge/AboutUs/image/fun2.png new file mode 100644 index 000000000..68491bc1e Binary files /dev/null and b/src/forge/AboutUs/image/fun2.png differ diff --git a/src/forge/AboutUs/image/fun3.png b/src/forge/AboutUs/image/fun3.png new file mode 100644 index 000000000..5b72688bb Binary files /dev/null and b/src/forge/AboutUs/image/fun3.png differ diff --git a/src/forge/AboutUs/image/fun4.png b/src/forge/AboutUs/image/fun4.png new file mode 100644 index 000000000..f2a28719c Binary files /dev/null and b/src/forge/AboutUs/image/fun4.png differ diff --git a/src/forge/AboutUs/image/fun5.png b/src/forge/AboutUs/image/fun5.png new file mode 100644 index 000000000..a4903ff09 Binary files /dev/null and b/src/forge/AboutUs/image/fun5.png differ diff --git a/src/forge/AboutUs/image/funBg.png b/src/forge/AboutUs/image/funBg.png new file mode 100644 index 000000000..fcee90305 Binary files /dev/null and b/src/forge/AboutUs/image/funBg.png differ diff --git a/src/forge/AboutUs/image/funBg3.png b/src/forge/AboutUs/image/funBg3.png new file mode 100644 index 000000000..1fc88a6f5 Binary files /dev/null and b/src/forge/AboutUs/image/funBg3.png differ diff --git a/src/forge/AboutUs/image/funBg4.png b/src/forge/AboutUs/image/funBg4.png new file mode 100644 index 000000000..8960a688f Binary files /dev/null and b/src/forge/AboutUs/image/funBg4.png differ diff --git a/src/forge/AboutUs/image/joinUs.png b/src/forge/AboutUs/image/joinUs.png new file mode 100644 index 000000000..a146c6496 Binary files /dev/null and b/src/forge/AboutUs/image/joinUs.png differ diff --git a/src/forge/AboutUs/image/position.png b/src/forge/AboutUs/image/position.png new file mode 100644 index 000000000..6b318af25 Binary files /dev/null and b/src/forge/AboutUs/image/position.png differ diff --git a/src/forge/AboutUs/image/quan1.png b/src/forge/AboutUs/image/quan1.png new file mode 100644 index 000000000..e515c401f Binary files /dev/null and b/src/forge/AboutUs/image/quan1.png differ diff --git a/src/forge/AboutUs/image/quan2.png b/src/forge/AboutUs/image/quan2.png new file mode 100644 index 000000000..bd6a264ee Binary files /dev/null and b/src/forge/AboutUs/image/quan2.png differ diff --git a/src/forge/AboutUs/image/subtitle.png b/src/forge/AboutUs/image/subtitle.png new file mode 100644 index 000000000..46e8b4de4 Binary files /dev/null and b/src/forge/AboutUs/image/subtitle.png differ diff --git a/src/forge/Activity/Activity.js b/src/forge/Activity/Activity.js index 4a7a1d345..2f3a84e85 100644 --- a/src/forge/Activity/Activity.js +++ b/src/forge/Activity/Activity.js @@ -124,7 +124,9 @@ class Activity extends Component{ ) render(){ - const { time , data , page , project_trends , isSpin , pr_count , new_pr_count , close_issues_count , open_issues_count , pr_all_count ,issues_count } = this.state; + const { time , data , page , project_trends , isSpin , + pr_count , new_pr_count , close_issues_count , open_issues_count , pr_all_count ,issues_count, + type,status } = this.state; let name = time ? ARRAY.filter(item=>item.id === parseInt(time)) :[{name:"全部"}]; const first_per = pr_all_count > 0 ? `${parseFloat(pr_count/pr_all_count).toFixed(2)*100}%` :"50%"; @@ -150,25 +152,25 @@ class Activity extends Component{

- {data && data.issues_count}易修 + {data && data.issues_count}疑修 diff --git a/src/forge/Activity/ActivityItem.js b/src/forge/Activity/ActivityItem.js index 48a72e797..19ce15366 100644 --- a/src/forge/Activity/ActivityItem.js +++ b/src/forge/Activity/ActivityItem.js @@ -14,20 +14,20 @@ class ActivityItem extends Component { {/* 如果是版本发布 */} {item.trend_type === "VersionRelease" ?

- {item.name} + {item.name} {item.trend_type}

: // 如果是任务 item.trend_type === "Issue" ?

- {item.name} + {item.name} {item.trend_type}

: // 如果是合并请求

- {item.name} + {item.name} {item.trend_type}

} diff --git a/src/forge/Activity/activity.css b/src/forge/Activity/activity.css index 2fada3c07..60e9895a2 100644 --- a/src/forge/Activity/activity.css +++ b/src/forge/Activity/activity.css @@ -107,6 +107,10 @@ color: black; cursor: pointer; } +.change.active{ + color: #466AFF !important; +} + .change:hover{ - color: #4183c4; + color: #466AFF; } \ No newline at end of file diff --git a/src/forge/Branch/CloneAddress.js b/src/forge/Branch/CloneAddress.js index c2e6dd746..b3e31cccb 100644 --- a/src/forge/Branch/CloneAddress.js +++ b/src/forge/Branch/CloneAddress.js @@ -7,10 +7,10 @@ function CloneAddress({http_url , ssh_url , zip_url , tar_url}) { const [ key , setKey ] = useState("HTTP"); return (
-
+
{setKey(e.key)}}>HTTP - {setKey(e.key)}}>SSH + {ssh_url && {setKey(e.key)}}>SSH}
@@ -18,8 +18,8 @@ function CloneAddress({http_url , ssh_url , zip_url , tar_url}) {
- 下载 ZIP - 下载 TAR.GZ + {zip_url && 下载 ZIP} + {tar_url && 下载 TAR.GZ}
) diff --git a/src/forge/Branch/Select.jsx b/src/forge/Branch/Select.jsx index ff3dd829e..a39f9556f 100644 --- a/src/forge/Branch/Select.jsx +++ b/src/forge/Branch/Select.jsx @@ -3,6 +3,7 @@ import { Dropdown} from 'antd'; import './branch.scss'; import SelectOverlay from './SelectOverlay'; import { findDOMNode } from 'react-dom'; +import { turnbar } from 'educoder'; export default (({ projectsId , branch , owner , changeBranch , branchList , tagflag = true })=>{ const [ showValue , setShowValue ] = useState(branch); @@ -35,7 +36,8 @@ export default (({ projectsId , branch , owner , changeBranch , branchList , tag function ChangeB(params) { setVisible(false); - changeBranch(params); + let en = turnbar(params); + changeBranch(en); } const menu = ( diff --git a/src/forge/Component/AddMember.jsx b/src/forge/Component/AddMember.jsx index f927850c8..f453be054 100644 --- a/src/forge/Component/AddMember.jsx +++ b/src/forge/Component/AddMember.jsx @@ -66,9 +66,10 @@ function AddMember({getID,login,showNotification}){ }; function addCollaborator(){ - if(source && source.length>0){ + if(source && source.length>0&&searchKey){ getID && getID(id); setSearchKey(undefined); + setID(undefined) }else{ showNotification("请选择存在的用户!"); } diff --git a/src/forge/Component/Component.scss b/src/forge/Component/Component.scss index 30a62005c..da292d237 100644 --- a/src/forge/Component/Component.scss +++ b/src/forge/Component/Component.scss @@ -313,17 +313,17 @@ li.ant-menu-item{ } } .-task-sidebar>div { - height: 40px; - line-height: 40px; + height: 48px; + line-height: 48px; box-sizing: border-box; - width: 40px; + width: 48px; color: #999; font-size: 20px; text-align: center; margin-bottom: 20px; border-radius: 50%; background: #FFFFFF; - box-shadow: 0px 0px 10px 1px #F1F1F1; + box-shadow: 0px 0px 12px 5px rgba(208, 208, 208, 0.2); } .-task-sidebar>div i { @@ -334,36 +334,40 @@ li.ant-menu-item{ color: #fff !important; } .-task-sidebar>div:hover{ - background: #1890FF; + background: #466AFF; box-shadow: 0px 0px 10px 2px #B6D0FC; } .helpBox{ width: 260px; z-index: 103; &.shareContent{ - width: 200px; + width: 160px; + } + .ant-popover-title{ + font-size: 16px; } .ant-popover-inner-content{ padding:0px; } p.titlecontent{ - font-size: 18px; + font-size: 16px; color: #333; line-height: 20px; padding:15px 20px; } .faqUl{ - padding:0px 20px 10px; + padding:10px 15px; max-height: 230px; overflow-y: auto; + font-size: 13px; li{ background: #F5F5F5; border-radius: 20px; - padding:0px 20px; + padding:0px 15px; color: #333; - height: 34px; - line-height: 34px; - margin-bottom: 10px; + height: 30px; + line-height: 30px; + margin-bottom: 3px !important; a{ display: block; overflow: hidden; @@ -379,19 +383,18 @@ li.ant-menu-item{ } } .shareUl{ - padding:10px 0px; display: flex; align-items: center; - .titlecontent{ - margin-right: 20px; - } li > i{ font-size: 32px!important; } } } - - +// tooltip样式 +.tooltipBox .ant-tooltip-inner{ + padding: 8px 12px; + font-size: 15px; +} .-task-desc { background: #494949; @@ -439,3 +442,21 @@ li.ant-menu-item{ border-left: 5px solid #494949; border-bottom: 6px solid transparent } +//头部输入框样式 +.headSerach{ + background: rgba(255, 255, 255, 0.1); + border-radius: 4px; + padding-left: 20px; + //修改antd输入框默认样式 + .ant-input,.ant-input:focus{ + border: none !important; + background-color: rgba(255, 255, 255, 0) !important; + } + &:hover{ + padding: 2px 20px 2px 20px; + background: #FFF; + & i{ + color: #333; + } + } +} diff --git a/src/forge/Component/Contributors.jsx b/src/forge/Component/Contributors.jsx index e88acc056..f6dade6a4 100644 --- a/src/forge/Component/Contributors.jsx +++ b/src/forge/Component/Contributors.jsx @@ -7,7 +7,7 @@ import './Component.scss'; import { getUser } from '../GetData/getData'; import axios from 'axios'; -function Contributors({contributors,owner,projectsId,currentLogin}){ +function Contributors({owner,projectsId,currentLogin}){ const [ menuList ,setMenuList ]= useState([]); const [ list , setList ]= useState(undefined); const [ total , setTotal ]= useState(0); @@ -16,11 +16,18 @@ function Contributors({contributors,owner,projectsId,currentLogin}){ const [ isSpin , setIsSpin ] = useState(false); useEffect(()=>{ - if(contributors && contributors.total_count>0){ - setTotal(contributors.total_count); - setList(contributors.list); - } - },[contributors]) + getData(); + },[]) + + function getData(){ + const url = `/${owner}/${projectsId}/contributors.json`; + axios.get(url).then(result=>{ + if(result){ + setTotal(result.data.total_count); + setList(result.data.list); + } + }).catch(error=>{}) + } useEffect(()=>{ if(login){ @@ -148,15 +155,15 @@ function Contributors({contributors,owner,projectsId,currentLogin}){ } return( + total > 0 ?
贡献者 - { contributors && contributors.total_count > 0 && {contributors.total_count}} + { total > 0 && {total}}
setVisibleFunc(false)}> { - total > 0 ? - list.map((item,key)=>{ + list && list.length>0 && list.map((item,key)=>{ return( @@ -165,10 +172,9 @@ function Contributors({contributors,owner,projectsId,currentLogin}){ ) }) - :"" }
-
+
:"" ) } export default Contributors; \ No newline at end of file diff --git a/src/forge/Component/DeleteModal/Index.jsx b/src/forge/Component/DeleteModal/Index.jsx index c3c136899..f12b8ea86 100644 --- a/src/forge/Component/DeleteModal/Index.jsx +++ b/src/forge/Component/DeleteModal/Index.jsx @@ -25,7 +25,7 @@ function DeleteBox({ >
{content} -

{subTitle}

+

删除后未来事件将不会推送至此Webhook地址:{subTitle}

) diff --git a/src/forge/Component/DrawerPanel.jsx b/src/forge/Component/DrawerPanel.jsx index fa99e6c6f..28847fda1 100644 --- a/src/forge/Component/DrawerPanel.jsx +++ b/src/forge/Component/DrawerPanel.jsx @@ -1,15 +1,10 @@ import React, { useEffect, useState } from 'react'; import { Drawer , Tree , Spin } from 'antd'; +import { turnbar} from 'educoder'; import './Component.scss'; import axios from 'axios'; const { TreeNode , DirectoryTree } = Tree; -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} function DrawerPanel({visible,onClose,branch,owner,projectsId,history, name , list}){ const [ treeData , setTreeData ] = useState(undefined); const [ isSpin , setIsSpin ] = useState(true); diff --git a/src/forge/Component/HeadSearch.jsx b/src/forge/Component/HeadSearch.jsx index fb7c9f25a..0e44a2cd2 100644 --- a/src/forge/Component/HeadSearch.jsx +++ b/src/forge/Component/HeadSearch.jsx @@ -32,7 +32,7 @@ export default ({history}) => { /> : - { + { setOpenSearch(true) }} /> } diff --git a/src/forge/Component/LanguagePower.jsx b/src/forge/Component/LanguagePower.jsx index 8d3e361b5..b2fb174b1 100644 --- a/src/forge/Component/LanguagePower.jsx +++ b/src/forge/Component/LanguagePower.jsx @@ -1,18 +1,41 @@ import React, { useEffect, useState } from 'react'; import { FlexAJ } from '../Component/layout'; +import { Divider } from 'antd'; +import axios from 'axios'; -function LanguagePower({languages}){ +function LanguagePower({owner,projectsId}){ const [ array , setArray ] = useState(undefined); + useEffect(()=>{ - if(languages){ - let arr = []; - Object.keys(languages).map((item,key)=>{ - arr.push({name:item,percent:languages[item],color:getColor()}); - }) - setArray(arr); - } - },[languages]) + getData(); + },[]) + + function getData(){ + const url = `/${owner}/${projectsId}/languages.json`; + axios.get(url).then(result=>{ + if(result){ + let languages = result.data; + if(languages){ + let arr = []; + Object.keys(languages).map((item,key)=>{ + arr.push({name:item,percent:languages[item],color:getColor()}); + }) + setArray(arr); + } + } + }).catch(error=>{}) + } + + // useEffect(()=>{ + // if(languages){ + // let arr = []; + // Object.keys(languages).map((item,key)=>{ + // arr.push({name:item,percent:languages[item],color:getColor()}); + // }) + // setArray(arr); + // } + // },[languages])  function getColor(){ let str = "#"; @@ -24,7 +47,9 @@ function LanguagePower({languages}){ return str; } return( + (array && array.length > 0) ?
+

开发语言

{ @@ -47,8 +72,7 @@ function LanguagePower({languages}){ } } - -
+
:"" ) } export default LanguagePower; \ No newline at end of file diff --git a/src/forge/Component/NoticeModal/Index.scss b/src/forge/Component/NoticeModal/Index.scss index 18e4dcda0..ab83ea148 100644 --- a/src/forge/Component/NoticeModal/Index.scss +++ b/src/forge/Component/NoticeModal/Index.scss @@ -29,12 +29,12 @@ font-weight: 500; color: #FFFFFF; margin-top: 60px; - padding-left: 20px; } .markdown-body{ box-shadow: 0px 0px 17px rgba(0,0,0,0.2); border-radius: 4px; margin-top: 17px!important; + color: white; } .nContent{ padding:20px 34px; diff --git a/src/forge/Component/NoticeModal/SystemNotice.jsx b/src/forge/Component/NoticeModal/SystemNotice.jsx index 1560c1ffc..c95a8030c 100644 --- a/src/forge/Component/NoticeModal/SystemNotice.jsx +++ b/src/forge/Component/NoticeModal/SystemNotice.jsx @@ -3,25 +3,41 @@ import { Modal , Button } from 'antd'; import './Index.scss'; import '../../css/index.scss'; import RenderHtml from '../../../components/render-html'; -import cookie from 'react-cookies'; +// import cookie from 'react-cookies'; +import axios from 'axios'; -function SystemNotice({system_notification,history}){ +function SystemNotice({showNotice,system_notification,history,login,hideSystemNotice}){ const [ visible , setVisible ] = useState(false); useEffect(()=>{ - if(system_notification && !cookie.load('notice_stage')){ + + if(system_notification && !system_notification.is_read && showNotice && login){ setVisible(true); } - },[system_notification,history.location]) + },[system_notification,login]) function sureContinue() { - cookie.remove('notice_stage'); + if(login && ( system_notification && system_notification.id )){ + const url = `/users/${login}/system_notification_histories.json`; + axios.post(url,{ + system_notification_id:system_notification.id + }).then(result=>{ + if(result){ + setVisible(false); + hideSystemNotice(); + } + }).catch(error=>{}) + }else{ + setVisible(false); + hideSystemNotice(); + } + // cookie.remove('notice_stage'); - let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//一天 - // let inFifteenMinutes = new Date(new Date().getTime() + 60 * 1000);//一分钟 - cookie.save('notice_stage', true,{ expires: inFifteenMinutes,path:"/" }); + // let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//一天 + // // let inFifteenMinutes = new Date(new Date().getTime() + 60 * 1000);//一分钟 + // cookie.save('notice_stage', true,{ expires: inFifteenMinutes,path:"/" }); - setVisible(false); + // setVisible(false); } return ( diff --git a/src/forge/Component/SiderBar.js b/src/forge/Component/SiderBar.js index 3d6b8acf8..a5c4836d9 100644 --- a/src/forge/Component/SiderBar.js +++ b/src/forge/Component/SiderBar.js @@ -23,9 +23,13 @@ $(window).scroll(function () { function SiderBar() { const [ data , setData ] = useState([]); const [ visible , setVisible ] = useState(false); + const [ login , setLogin ]= useState(false); useEffect(()=>{ getFAQ(); + getCurrentUser(); + //页面加载完成之后隐藏回到顶点 + $(".-task-sidebar .gotop").hide(); },[]) function getFAQ(){ @@ -36,9 +40,19 @@ function SiderBar() { } }).catch(error=>{}) } + + //获取当前登录账号信息->用于建议反馈 + function getCurrentUser(){ + let url = `/users/get_user_info.json`; + axios.get(url).then((response) => { + if (response && response.data && response.data.login) { + setLogin(response.data.login); + } + }).catch(error=>{}) + } + function content(list){ return
-

帮助

    { list && list.map((i,k)=>{ @@ -59,31 +73,46 @@ function SiderBar() {
} + return (
- setVisible(false)}/> + {/* 平台反馈 */} + +
+ + + +
+
+ + {/* 帮助 */} { data && data.length > 0 && (data[0] && data[0].question) ? - +
- +
:"" } + + {/* 分享 */} {/*
*/} + setVisible(false)}/>
- +
-
- + + {/* 返回顶部 */} + +
- -
+
+
) } diff --git a/src/forge/Component/SiderBarShareModal.jsx b/src/forge/Component/SiderBarShareModal.jsx index aa8db379e..cf9115038 100644 --- a/src/forge/Component/SiderBarShareModal.jsx +++ b/src/forge/Component/SiderBarShareModal.jsx @@ -17,9 +17,9 @@ function SiderBarShareModal({visible,urlValue,onCancel}) { value={urlValue} size={200} fgColor="#000000" - style={{margin:"20px"}} + style={{margin:"0 20px 20px"}} />} -

打开微信“扫一扫”,点击右上角菜单,即可将网页分享至朋友圈

+

打开微信“扫一扫”,点击右上角菜单,即可将网页分享至朋友圈

) diff --git a/src/forge/Component/Title.jsx b/src/forge/Component/Title.jsx index 9b3f8bf3f..8ab6d7e47 100644 --- a/src/forge/Component/Title.jsx +++ b/src/forge/Component/Title.jsx @@ -5,7 +5,7 @@ const Nav = styled.div`{ background-color:#fff; padding:20px 30px; border-bottom:1px solid #eee; - font-size:16px; + font-size:18px; color:#333; display:flex; justify-content: space-between; diff --git a/src/forge/Component/layout.jsx b/src/forge/Component/layout.jsx index adaf4dbf3..dcc133e85 100644 --- a/src/forge/Component/layout.jsx +++ b/src/forge/Component/layout.jsx @@ -7,6 +7,8 @@ export const Banner = styled.div`{ border-bottom:1px solid #eee; background-color:#fff; border-radius:5px 5px 0px 0px; + justify-content: space-between; + display: flex; }` export const AlignCenterBetween = styled.div`{ display:flex; diff --git a/src/forge/DevOps/About.jsx b/src/forge/DevOps/About.jsx index 31ced2204..4831f73bc 100644 --- a/src/forge/DevOps/About.jsx +++ b/src/forge/DevOps/About.jsx @@ -36,15 +36,15 @@ function About(props, ref) { const [ disabled, setDisabled ] = useState(false); const [ typeFlag, setTypeFlag] = useState(false); - const AuthorLogin = props.projectDetail && props.projectDetail.author && props.projectDetail.author.login; + const isPermission = props.projectDetail && props.projectDetail.permission && props.projectDetail.permission!=="Reporter"; const CurrentLogin = props.current_user && props.current_user.login; useEffect(()=>{ - if(CurrentLogin === AuthorLogin){ + if(isPermission){ auth('get'); }else{ setIsSpining(false); } - },[AuthorLogin,CurrentLogin]) + },[isPermission,CurrentLogin]) function auth(type){ const url = `/${owner}/${projectsId}/ci_authorize.json`; @@ -167,17 +167,17 @@ function About(props, ref) {

定义DevOps工作流,帮助您检测bug、发布代码…

{ - CurrentLogin !== AuthorLogin ? + !isPermission ?
DevOps开启功能暂未对项目创建者以外的角色开放,可以联系项目创建者进行开启,开启后便可查看构建信息。
:"" } 了解什么是DevOps? - 如何使用DevOps? + 如何使用引擎(Engine)功能? { - AuthorLogin === CurrentLogin ? + isPermission ? { step === 0 && !typeFlag ? diff --git a/src/forge/DevOps/Dispose/List.jsx b/src/forge/DevOps/Dispose/List.jsx index 297c5556d..80a53372a 100644 --- a/src/forge/DevOps/Dispose/List.jsx +++ b/src/forge/DevOps/Dispose/List.jsx @@ -1,6 +1,7 @@ import React from 'react'; import { Table , Popconfirm } from 'antd'; import { Link } from 'react-router-dom'; +import { turnbar } from "educoder"; // const STATUS = { // running:"运行中", @@ -10,12 +11,6 @@ import { Link } from 'react-router-dom'; // killed:"已撤销", // pending:"准备中" // } -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} function renderTableStatus(status) { switch (status) { case "running": diff --git a/src/forge/DevOps/Dispose/Sure.jsx b/src/forge/DevOps/Dispose/Sure.jsx index 1195e1bd7..fd2683776 100644 --- a/src/forge/DevOps/Dispose/Sure.jsx +++ b/src/forge/DevOps/Dispose/Sure.jsx @@ -17,7 +17,7 @@ function Sure({datas , name , saveFunc , sureSubmit , loading}){ return(
- 工作流名称:{name} + 流水线名称:{name}
diff --git a/src/forge/DevOps/Dispose/head.jsx b/src/forge/DevOps/Dispose/head.jsx index 5ba168bbd..2fd79c723 100644 --- a/src/forge/DevOps/Dispose/head.jsx +++ b/src/forge/DevOps/Dispose/head.jsx @@ -5,7 +5,7 @@ import { AlignCenterBetween , Blueline , FlexAJ } from '../../Component/layout'; function head({manager , parameter}){ return( - 工作流配置 + 引擎配置 { parameter && 参数管理 diff --git a/src/forge/DevOps/Index.jsx b/src/forge/DevOps/Index.jsx index 3302f603a..0bad039e6 100644 --- a/src/forge/DevOps/Index.jsx +++ b/src/forge/DevOps/Index.jsx @@ -66,7 +66,7 @@ export default ((props)=>{ {/* 原本的两种合为一个 */} {return( p.location.state.open_devops?:)} + (p) =>{return( p.location && p.location.state && p.location.state.open_devops?:)} } > diff --git a/src/forge/DevOps/Manage/Params.jsx b/src/forge/DevOps/Manage/Params.jsx index 6df62dd47..1c4540ccc 100644 --- a/src/forge/DevOps/Manage/Params.jsx +++ b/src/forge/DevOps/Manage/Params.jsx @@ -103,7 +103,7 @@ function Params(props){ - 工作流 - 参数管理 + 引擎 - 参数管理 返回 diff --git a/src/forge/DevOps/Mould.jsx b/src/forge/DevOps/Mould.jsx index 204fd161d..503350379 100644 --- a/src/forge/DevOps/Mould.jsx +++ b/src/forge/DevOps/Mould.jsx @@ -126,7 +126,7 @@ function Mould(props){
childRef.current = f} ref={childRef} visible={visible} onCancel={()=>setVisible(false)} onOk={onOk}> - 工作流 - 模板管理返回 + 引擎 - 模板管理返回
diff --git a/src/forge/DevOps/OpsDetailLeftpanel.jsx b/src/forge/DevOps/OpsDetailLeftpanel.jsx index 9d9fefd9c..2dff8d81f 100644 --- a/src/forge/DevOps/OpsDetailLeftpanel.jsx +++ b/src/forge/DevOps/OpsDetailLeftpanel.jsx @@ -5,7 +5,7 @@ import { Menu, Popconfirm } from "antd"; import { TagsLine } from "../Component/OpsStatus"; import { Time } from "../Utils/Time"; import { truncateCommitId } from "../common/util"; -import { getUrl } from 'educoder'; +import { getImageUrl } from 'educoder'; const SubMenu = Menu.SubMenu; const Img = styled.img` @@ -70,7 +70,7 @@ export default ({ data, repeatSet , chooseSteps }) => {
- + {data && data.started && 开始时间: {data.started} diff --git a/src/forge/Head/AddProjectModal.jsx b/src/forge/Head/AddProjectModal.jsx index 81f1d27cc..3fd88fec2 100644 --- a/src/forge/Head/AddProjectModal.jsx +++ b/src/forge/Head/AddProjectModal.jsx @@ -2,84 +2,84 @@ import React, { useState , forwardRef, useEffect } from 'react'; import { Form , Modal , Input , Radio } from 'antd'; import Axios from 'axios'; import CheckProfile from '../Component/ProfileModal/Profile'; +function AddProjectModal(props){ + const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form; + const [ visible , setVisible ] = useState(false); -export default Form.create()( - forwardRef((props)=>{ - const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form; - const [ visible , setVisible ] = useState(false); - - useEffect(()=>{ - if(!visible){ - setFieldsValue({ - code:undefined, - role:"developer" - }) - } - },[visible]) - - function onOk() { - validateFields((error,values)=>{ - if(!error){ - const url = `/applied_projects.json`; - Axios.post(url,{ - applied_project:{ - ...values - } - }).then(result=>{ - if(result && result.data){ - setVisible(false); - props.showNotification("申请加入项目成功,等待审核!"); - } - }).catch(error=>{}) - } + useEffect(()=>{ + if(!visible){ + setFieldsValue({ + code:undefined, + role:"developer" }) } - function checkValue(rule, value, callback){ - if(!value){ - callback(); + },[visible]) + + function onOk() { + validateFields((error,values)=>{ + console.log(error) + if(!error){ + const url = `/applied_projects.json`; + Axios.post(url,{ + applied_project:{ + ...values + } + }).then(result=>{ + if(result && result.data){ + setVisible(false); + props.showNotification("申请加入项目成功,等待审核!"); + } + }).catch(error=>{}) } + }) + } + function checkValue(rule, value, callback){ + if(!value){ + callback("请输入6位数的邀请码"); + }else{ if(value.length < 6 || value.length > 6){ callback("请输入6位数的邀请码"); } - callback(); - } + } + callback(); + } - return( - - setVisible(false)} - > -
- - {getFieldDecorator("code",{ - rules:[ - {required:true,message:"请输入6位项目邀请码"}, - {validator:checkValue} - ] - })( - - )} - - - {getFieldDecorator("role",{ - rules:[{required:true,message:"请选择角色"}] - })( - - 管理员 - 开发者 - 报告者 - - )} - -
-
- setVisible(true)}>加入项目 -
- ) - }) -) \ No newline at end of file + return( + + setVisible(false)} + > +
+ + {getFieldDecorator("code",{ + rules:[ + {required:true,message:" "}, + {validator:checkValue} + ] + })( + + )} + + + {getFieldDecorator("role",{ + rules:[{required:true,message:"请选择角色"}] + })( + + 管理员 + 开发者 + 报告者 + + )} + +
+
+ setVisible(true)}>加入项目 +
+ ) +} +export default Form.create()(forwardRef(AddProjectModal)); \ No newline at end of file diff --git a/src/forge/Head/Footer.jsx b/src/forge/Head/Footer.jsx index b54c234fe..a27d74cba 100644 --- a/src/forge/Head/Footer.jsx +++ b/src/forge/Head/Footer.jsx @@ -61,6 +61,42 @@ function Footer(){

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

*/}
+ // {/*
+ //
+ //
    + // Gitlink(确实开源) + //

    (确实开源)

    + //
+ // + // + //
    + //
  • 加入我们
  • + //
  • + //
    + //
  • 公众号
  • + // 公众号 + //
+ //
+ //
  • QQ群
  • + // QQ群 + //
    + // + // + //
    + //

    ©Copyright 2007~2021 国防科技大学Gitlink团队 & IntelliDE
    湘ICP备 17009477号

    + //
    */} ) } export default Footer; diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index f0bfe38e6..e5dbfdefa 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -2,7 +2,8 @@ import React, { Component } from 'react'; import AccountProfile from "../../modules/user/AccountProfile"; import { getImageUrl } from 'educoder' import axios from 'axios'; -import { Input , notification , Dropdown ,Popover, Menu,Badge, Button } from 'antd'; +import cookie from 'react-cookies'; +import { notification , Dropdown ,Popover, Menu,Badge } from 'antd'; import { Link } from 'react-router-dom'; import LoginDialog from '../../modules/login/LoginDialog'; @@ -14,10 +15,8 @@ import CheckProfile from '../Component/ProfileModal/Profile'; import './header.scss'; import NoticeContent from './NoticeContent'; -const $ = window.$ +import MainLogo from './img/logo.png'; // TODO 这部分脚本从公共脚本中直接调用 -const { Search } = Input; -let old_url; window._header_componentHandler = null; // 非trustie链接则新开页跳转 @@ -43,8 +42,8 @@ class NewHeader extends Component { setevaluatinghides: false, occupation: 0, mydisplay: false, - headtypesonClickbool: false, - headtypess: "/", + // headtypesonClickbool: false, + // headtypess: "/", settings: null, visiblemyss: false, openSearch:false, @@ -55,28 +54,6 @@ class NewHeader extends Component { this.geturlsdata(); window._header_componentHandler = this; - //下拉框的显示隐藏 - var hoverTimeout; - var hoveredPanel; - $(".edu-menu-panel").hover(function () { - if (hoverTimeout) { // 一次只显示一个panel - if (hoveredPanel && hoveredPanel !== this) { - $(hoveredPanel).find(".edu-menu-list").hide() - } - clearTimeout(hoverTimeout); - hoverTimeout = null; - } - hoveredPanel = this; - $(this).find(".edu-menu-list").show(); - }, function () { - var that = this; - // 延迟hide - hoverTimeout = setTimeout(function () { - $(that).find(".edu-menu-list").hide(); - }, 800) - - }); - //获取游览器地址 try { window.sessionStorage.setItem("yslgeturls", JSON.stringify(window.location.href)) } catch (e) {} @@ -148,11 +125,17 @@ class NewHeader extends Component { educoderlogin = () => { //登录账号 - this.setState({ - isRender: true - }) + if(window.location.pathname === "/"){ + window.location.href="/login"; + }else{ + this.setState({ + isRender: true + }) + } } educoderloginysl = () => { + //退出账号时清除登录页面的下次自动登录(用户再次打开登录页面时下次自动登录框不勾选) + cookie.remove("autologin"); //退出账号 var url = `/accounts/logout.json`; axios.get((url)).then((result) => { @@ -222,12 +205,12 @@ class NewHeader extends Component { AccountProfiletype: false }) }; - headtypesonClick = (url, bool) => { - this.setState({ - headtypess: url, - headtypesonClickbool: bool, - }) - } + // headtypesonClick = (url, bool) => { + // this.setState({ + // headtypess: url, + // headtypesonClickbool: bool, + // }) + // } //获取数据为空的时候 gettablogourlnull = () => { this.setState({ @@ -281,12 +264,19 @@ class NewHeader extends Component { matchpaths = (url) => { const { match } = this.props; - if(url){ - if (match.path.indexOf(url) > -1) { - return true - }else { - return false - } + const isDev = window.location.port == 3007; + const isdev2= isDev ?'https://testforgeplus.trustie.net':`https://${window.location.hostname}`; + let str = ""; + if(url.indexOf("http")>-1){ + str = isdev2+match.url; + }else{ + str = match.path; + } + + if (url && str === url) { + return true + }else { + return false } } @@ -347,7 +337,7 @@ class NewHeader extends Component { }; render() { - const { match ,resetUserInfo ,showNotification} = this.props; + const { resetUserInfo ,showNotification,publicNav} = this.props; let current_user = this.props.user; let { Addcoursestypes, tojoinitemtype, @@ -357,90 +347,12 @@ class NewHeader extends Component { AccountProfiletype, user, isRender, - headtypesonClickbool, - headtypess, settings, visible, } = this.state; - /*用户名称 用户头像url*/ - let activeIndex = false; - let activeForums = false; - let activeShixuns = false; - let activePaths = false; - let coursestype = false; - let activePackages = false; - let activeMoopCases = false; - let activeCompetitions = false; - - if (match.path === '/forums') { - activeForums = true; - } else if (match.path.startsWith('/shixuns')) { - activeShixuns = true; - } else if (match.path.startsWith('/paths')) { - activePaths = true; - } else if (match.path.startsWith('/courses')) { - coursestype = true; - } else if (match.path.startsWith('/crowdsourcing')) { - activePackages = true; - } else if (match.path.startsWith('/moop_cases')) { - activeMoopCases = true; - } else if (match.path.startsWith('/competitions')) { - activeCompetitions = true; - } else { - activeIndex = true; - } - - let headtypes = '/'; - if (settings) { - if (settings.navbar) { - if (settings.navbar.length > 0) { - if (match.path === '/') { - if (headtypesonClickbool === false) { - headtypes = undefined; - } else { - headtypes = headtypess; - } - } else { - for (var i = 0; i < settings.navbar.length; i++) { - if (match.path === settings.navbar[i].link) { - headtypes = settings.navbar[i].link; - break; - } - } - } - } - } - } - let shixuntype = false; - let pathstype = false; - let coursestypes = false; - if (this.props && this.props.mygetHelmetapi != null) { - let shixun = "/shixuns"; - let paths = "/paths"; - let courses = "/courses"; - this.props.mygetHelmetapi && this.props.mygetHelmetapi.navbar && this.props.mygetHelmetapi.navbar.map((item, key) => { - var reg = RegExp(item.link); - if (shixun.match(reg)) { - if (item.hidden === true) { - shixuntype = true - } - } - if (paths.match(reg)) { - if (item.hidden === true) { - pathstype = true - } - } - if (courses.match(reg)) { - if (item.hidden === true) { - coursestypes = true - } - } - }) - } - let search_url = settings && settings.common && settings.common.search; return ( -
    +
    {isRender === true ? : ""} +
    + { + publicNav && + + ccf + + } +
    { settings && settings.nav_logo_url ? - - 可控开源社区 + + 可控开源社区 : "" @@ -470,23 +390,22 @@ class NewHeader extends Component { { settings.navbar && settings.navbar.map((item, key) => { var new_link = item.link; - var user_login = current_user && current_user.login; - var is_hidden = item.hidden - if (new_link && (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1)) { - if (user_login) { - if (new_link.indexOf("courses") > -1) { - new_link = new_link.replace(/courses/g, user_login + "/courses") - } else if (new_link.indexOf("contests") > -1) { - new_link = new_link.replace(/contests/g, user_login + "/contests") - } - } else { - is_hidden = true - } - } - if (user_login && (new_link && new_link.indexOf("homes") > -1)) { - new_link = new_link.replace(/homes/g, user_login + "/user_activities") - } - + // var user_login = current_user && current_user.login; + var is_hidden = item.hidden; + // if (new_link && (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1)) { + // if (user_login) { + // if (new_link.indexOf("courses") > -1) { + // new_link = new_link.replace(/courses/g, user_login + "/courses") + // } else if (new_link.indexOf("contests") > -1) { + // new_link = new_link.replace(/contests/g, user_login + "/contests") + // } + // } else { + // is_hidden = true + // } + // } + // if (user_login && (new_link && new_link.indexOf("homes") > -1)) { + // new_link = new_link.replace(/homes/g, user_login + "/user_activities") + // } var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) ); var wl = waiLian && waiLian.length>0; return ( @@ -505,7 +424,7 @@ class NewHeader extends Component { { current_user && (current_user.main_site || current_user.login) && (settings && settings.add && settings.add.length>0)? - + :"" } @@ -520,7 +439,7 @@ class NewHeader extends Component { > {current_user && - + } diff --git a/src/forge/Head/NoticeContent.jsx b/src/forge/Head/NoticeContent.jsx index 634a7adc8..d29dfb72f 100644 --- a/src/forge/Head/NoticeContent.jsx +++ b/src/forge/Head/NoticeContent.jsx @@ -23,6 +23,9 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: const [atPage, setAtPage] = useState(0); const [atUnreadList, setAtUnreadList] = useState([]);//未读@我列表 + //记录用户点击的消息 + const [clickItem, setClickItem] = useState(undefined); + useEffect(() => { resetUserInfo(); }, [noticeUnreadCount,atUnreadCount]); @@ -150,23 +153,26 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: function changeReadMark(item) { - if (item.type === "notification") { - let list = noticeUnreadList.slice(); - let index = noticeUnreadList.indexOf(item); - list[index].status = 2; - setNoticeUnreadList(list); - if (noticeUnreadCount > 0) { - setNoticeUnreadCount(noticeUnreadCount - 1); - } - } else if (item.type === "atme") { - let list = atUnreadList.slice(); - let index = atUnreadList.indexOf(item); - list[index].status = 2; - setAtUnreadList(list); - if (atUnreadCount > 0) { - setAtUnreadCount(atUnreadCount - 1); + if (!clickItem || clickItem.id !== item.id){ + if (item.type === "notification") { + let list = noticeUnreadList.slice(); + let index = noticeUnreadList.indexOf(item); + if (list[index].status === 1 && noticeUnreadCount > 0) { + setNoticeUnreadCount(noticeUnreadCount - 1); + } + list[index].status = 2; + setNoticeUnreadList(list); + } else if (item.type === "atme") { + let list = atUnreadList.slice(); + let index = atUnreadList.indexOf(item); + if (list[index].status === 1 && atUnreadCount > 0) { + setAtUnreadCount(atUnreadCount - 1); + } + list[index].status = 2; + setAtUnreadList(list); } } + setClickItem(item); } return ( @@ -219,12 +225,12 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: {atUnreadList.map(item => { return (
    { readItem(item) }}> -
    +
    - " + (item.sender ? item.sender.name : '') + "   " + item.content + " 中@我" }}> + {item.time_ago}
    diff --git a/src/forge/Head/header.scss b/src/forge/Head/header.scss index 263cd1ee5..bcdb94997 100644 --- a/src/forge/Head/header.scss +++ b/src/forge/Head/header.scss @@ -127,6 +127,9 @@ width: 110px; text-align: right; } + .ant-form-explain{ + position: absolute; + } } // 右上角小铃铛单独样式 @@ -262,4 +265,101 @@ .text-center{ text-align: center; +} + +.footEdition{ + background-color: #171B23; + .footContent{ + display: flex; + align-items: flex-start; + padding:86px 0px; + justify-content: space-around; + width: 1200px; + margin:0px auto; + ul{ + min-width: 120px; + text-align: left; + margin-right: 80px; + &.center{ + text-align: center; + } + &>p{ + height: 22px; + font-size: 16px; + font-weight: 400; + color: #FFFFFF; + line-height: 22px; + } + &>img{ + width: 100px; + height: 100%; + margin-bottom: 30px; + margin-top: 25px; + border-radius: 10px; + } + li{ + height: 20px; + font-size: 14px; + font-weight: 400; + line-height: 20px; + color: #BDC2D1; + margin-bottom: 15px!important; + a{ + color: #BDC2D1!important; + &:hover{ + text-decoration: underline; + } + } + &.thehead{ + height: 25px; + font-size: 18px; + font-weight: 600; + color: #FFFFFF; + line-height: 25px; + margin-bottom: 20px!important; + } + } + .theline{ + .imgCon{ + width: 90px; + height: 90px; + padding:5px; + border-radius: 4px; + background-color: #fff; + img{ + width: 100%; + border-radius: 3px; + } + } + } + } + } +} +.copyrightDesc{ + font-size: 12px; + font-weight: 400; + color: #BDC2D1; + line-height: 28px; + padding:15px 0px; + text-align: center; + background-color: #1B212C; + a{ + color: #BDC2D1!important; + } +} +.regBtn{ + height: 40px; + background: #466AFF; + border-radius: 2px; + display: inline-block; + padding:0px 18px; + margin-left: 20px; + font-size: 14px; + font-weight: 400; + color: #FFFFFF!important; + line-height: 40px; + &:hover{ + color: #FFFFFF!important; + background-color: #355CFF; + } } \ No newline at end of file diff --git a/src/forge/Head/img/add.png b/src/forge/Head/img/add.png new file mode 100644 index 000000000..1790185ed Binary files /dev/null and b/src/forge/Head/img/add.png differ diff --git a/src/forge/Head/img/logo.png b/src/forge/Head/img/logo.png new file mode 100644 index 000000000..121cc04bb Binary files /dev/null and b/src/forge/Head/img/logo.png differ diff --git a/src/forge/Head/img/ring.png b/src/forge/Head/img/ring.png new file mode 100644 index 000000000..0ca21d348 Binary files /dev/null and b/src/forge/Head/img/ring.png differ diff --git a/src/forge/Images/taskbar.png b/src/forge/Images/taskbar.png new file mode 100644 index 000000000..91ceec7f2 Binary files /dev/null and b/src/forge/Images/taskbar.png differ diff --git a/src/forge/Index.js b/src/forge/Index.js index e189fe63b..d2aa6979d 100644 --- a/src/forge/Index.js +++ b/src/forge/Index.js @@ -22,11 +22,10 @@ const ProjectIndex = Loadable({ loading: Loading, }); -// 项目详情放在用户和组织下作为二级菜单存在 -// const ProjectDetail = Loadable({ -// loader: () => import("./Main/Detail"), -// loading: Loading, -// }); +const ProjectHome = Loadable({ + loader: () => import("./Main/projecthome/Index"), + loading: Loading, +}); class Index extends Component { @@ -60,23 +59,17 @@ class Index extends Component { )} > - {/* ( - - )} - > */} ( )} > ( - + )} > 0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} -function returnbar(str){ - if(str && str.length>0 && str.indexOf("%2F")>-1){ - return str.replaceAll('%2F','/'); - } - return str; -} - function CoderDepot(props){ const [ projectDetail , setProjectDetail ]= useState(undefined); const [ inviteCode , setInviteCode ] = useState(undefined); @@ -89,6 +75,8 @@ function CoderDepot(props){ } if(i && i.length === 0){ setIssuesFlag(false); + console.log(bannerList); + } } },[bannerList]) @@ -122,13 +110,10 @@ function CoderDepot(props){ setTreeValue(url); getFileInfo(url,branchName); setType("file"); - // getReadmeInfo(url,branchName); - // setReadme(undefined); }else{ setTreeValue(undefined); getDirInfo(branchName || defaultBranch); setType("dir"); - // getReadmeInfo('', branchName || defaultBranch); } } },[projectsId,owner,pathname,defaultBranch]) @@ -138,7 +123,7 @@ function CoderDepot(props){ if(result && result.data){ const release = { "list":result.data.releases, - "total_count":result.data.releases.length + "total_count":result.data.releases && result.data.releases.length } setReleaseVersions(release); } @@ -169,7 +154,7 @@ function CoderDepot(props){ const url = `/${owner}/${projectsId}/entries.json`; axios.get(url, { - params: { ref: branch } + params: { ref:branch} }).then((result) => { if (result) { setCommitCount(result.data.commits_count); @@ -197,7 +182,7 @@ function CoderDepot(props){ let ele = document.getElementById("ptxt"); if(ele){ let h = ele.offsetHeight; - if( h > 35 ) setHideBtn(true); + if( h > 36 ) setHideBtn(true); } } },[projectDetail,lastCommit]) @@ -239,9 +224,9 @@ function CoderDepot(props){ // 切换分支或者标签 function changeBranch(value){ - let checkvalue = turnbar(value); - let url = `/${owner}/${projectsId}${value && `/tree/${checkvalue}`}${treeValue ? `/${treeValue}`:""}`; - props.history.push(url); + let checkvalue = value; + let u = `/${owner}/${projectsId}${checkvalue && `/tree/${checkvalue}`}${treeValue ? `/${treeValue}`:""}`; + props.history.push(u); } // 文件相关的下拉项 @@ -279,6 +264,7 @@ function CoderDepot(props){ // 子目录路径返回链接 function returnUlr(url){ let enBranch = turnbar(branchName); + setType('dir'); props.history.push(`/${owner}/${projectsId}/tree${enBranch?`/${enBranch}`:""}/${url}`); } // 点击跳转到子目录 @@ -319,16 +305,16 @@ function CoderDepot(props){ const downloadMenu = ( ) // 确认修改简介、website、实践课程链接 function okUpdate(d,w,l){ const url = `/${owner}/${projectsId}.json`; axios.put(url,{ - description:d,website:w,lesson_url:l + description:d,website:w || "",lesson_url:l||"" }).then(result=>{ if(result && result.data && result.data.id){ setDesc(result.data.description); @@ -337,12 +323,21 @@ function CoderDepot(props){ } }) } + + function createIssue(){ + if(baseOper){ + props.history.push(`/${owner}/${projectsId}/issues/new`); + }else{ + props.showLoginDialog(`/${owner}/${projectsId}/issues/new`); + } + } + let n = fileInfo && fileInfo.name; const mdFlag = n && n.substring(n.length-3,n.length) === ".md"; const { current_user } = props; const baseOper = current_user && current_user.login && issuesFlag; - const baseOperate = projectDetail && projectDetail.permission && projectDetail.permission !=="Reporter" && projectDetail.type !== 2 && pullsFlag; + const baseOperate = projectDetail && projectDetail.permission && projectDetail.permission !=="Reporter" && projectDetail.type !== 2 && pullsFlag && props.platform; const fileOperate = type === "dir" && projectDetail && projectDetail.type !== 2 && ((projectDetail.permission && projectDetail.permission !=="Reporter") || (current_user && current_user.admin)); return( @@ -392,7 +387,7 @@ function CoderDepot(props){ 分支:{branchName || defaultBranch} }
    - { + { treeValuePath && treeValuePath.length > 0 ? - - - 分支 - {projectDetail && projectDetail.branches_count} - + { + props.platform ? + + + 分支 + {projectDetail && projectDetail.branches_count} + + : + + + 分支 + {projectDetail && projectDetail.branches_count} + + } + { + props.platform ? - - 标签 - {projectDetail && projectDetail.tags_count} - + + 标签 + {projectDetail && projectDetail.tags_count} + : + + + 标签 + {projectDetail && projectDetail.tags_count} + + } } - { - (baseOperate || baseOper) && -
    - { - baseOperate && - urlLink(`/${owner}/${projectsId}/compare/master...${branchName || defaultBranch}`)} >+ 合并请求 - } - { - baseOper && - urlLink(`/${owner}/${projectsId}/issues/new`)} >+ 易修 - } -
    - } +
    + { + baseOperate && + urlLink(`/${owner}/${projectsId}/compare/master...${turnbar(branchName || defaultBranch)}`)} >+ 合并请求 + } + { + issuesFlag && + + 疑修 + } +
    { fileOperate && 0) || fileInfo ?
    { - lastCommit && + ((lastCommit && lastCommit.message) || lastCommitAuthor) &&
    - -
    -
    -
    + { + lastCommitAuthor && + + } + { + lastCommit.message && +
    +
    +
    + } { hideBtn && changeHide(hide)}> } {lastCommit.time_from_now} @@ -481,6 +496,7 @@ function CoderDepot(props){ item={item} projectsId={projectsId} goToSubRoot={goToSubRoot} + platform={props.platform} /> ) }) @@ -516,10 +532,10 @@ function CoderDepot(props){ 关于 { projectDetail.permission && (projectDetail.permission==="Admin" || projectDetail.permission==="Owner" || projectDetail.permission==="Manager") && - setOpenModal(true)} className="iconfont icon-a-shezhi color-grey-9 font-15"> + setOpenModal(true)} className="iconfont icon-a-shezhi color-grey-9 font-15 pointer"> } - {desc &&

    {desc}

    } + {desc &&

    {desc}

    } { website &&
    @@ -539,7 +555,7 @@ function CoderDepot(props){ projectDetail && projectDetail.license_name &&
    - {projectDetail.license_name} + {projectDetail.license_name}
    }
    @@ -560,7 +576,7 @@ function CoderDepot(props){ } {/* 发布 */} { - releaseVersions && + releaseVersions && props.platform && } {/* 贡献者 */} - { - projectDetail && projectDetail.contributors && projectDetail.contributors.total_count >0 && - - } + {/* 语言 */} - { projectDetail && projectDetail.languages && - - - - - } + } diff --git a/src/forge/Main/CoderDepotCatalogue.jsx b/src/forge/Main/CoderDepotCatalogue.jsx index 4f5d86c1a..f36448a80 100644 --- a/src/forge/Main/CoderDepotCatalogue.jsx +++ b/src/forge/Main/CoderDepotCatalogue.jsx @@ -8,13 +8,18 @@ const typeIco = { "dir":"icon-wenjianjia4 font-15 color-blue_4C" } -function CoderDepotCatalogue({item , goToSubRoot , owner , projectsId }){ +function CoderDepotCatalogue({item , goToSubRoot , owner , projectsId , platform }){ return(
  • - goToSubRoot(item.path,item.type,item.name)} className={item.type === "submodule" && "submoduleStyle"}> - {item.name} - + { + (!platform && item.image_type) ? + {item.name} + : + goToSubRoot(item.path,item.type,item.name)} className={item.type === "submodule" && "submoduleStyle"}> + {item.name} + + } diff --git a/src/forge/Main/CoderDepotReadme.jsx b/src/forge/Main/CoderDepotReadme.jsx index 315f70805..bb9bdd5b3 100644 --- a/src/forge/Main/CoderDepotReadme.jsx +++ b/src/forge/Main/CoderDepotReadme.jsx @@ -41,7 +41,7 @@ function CoderDepotReadme({ operate , history , readme , ChangeFile }){ return(
    - +
    diff --git a/src/forge/Main/CoderRootBranch.js b/src/forge/Main/CoderRootBranch.js new file mode 100644 index 000000000..7137bc6dc --- /dev/null +++ b/src/forge/Main/CoderRootBranch.js @@ -0,0 +1,86 @@ +import React , { useState, useEffect } from 'react'; +import { Link } from "react-router-dom"; +import { Dropdown , Menu , Icon , Tooltip , Spin } from 'antd'; +import { truncateCommitId } from '../common/util'; +import { getBranch } from '../GetData/getData'; +import { turnbar } from "educoder"; +import Nodata from '../Nodata'; +import './list.scss'; + +export default ((props)=>{ + const [ data , setData ] =useState(undefined); + const [ isSpin , setIsSpin ] =useState(true); + + const { projectsId , owner } = props.match.params; + const { isManager , isDeveloper , projectDetail } = props; + useEffect(()=>{ + getBranchs(projectsId, owner); + },[projectsId]) + + async function getBranchs(id,owner){ + let result = await getBranch(id,owner); + setData(result); + setIsSpin(false); + } + + const list =()=>{ + if(data && data.length>0){ + return( + +
      + { + data.map((item,key)=>{ + return( +
    • +
      + {item.name} +

      + {item.last_commit && truncateCommitId(item.last_commit.sha)} + {item.last_commit && item.last_commit.message} + 最后更新于{item.last_commit && item.last_commit.time_from_now} +

      +
      + + { + (isManager || isDeveloper) && (projectDetail && projectDetail.type!==2) && + 创建合并请求 + } + + + + + + +
    • + ) + }) + } +
    +
    + ) + }else if(data && data.length === 0){ + return ( ) + } + } + const menu =(zip_url,tar_url)=> ( + + ZIP + TAR.GZ + + ) + return( + +
    + +
    +

    分支列表

    +
    {list()}
    +
    +
    +
    +
    + ) +}) + + + diff --git a/src/forge/Main/CoderRootCommit.js b/src/forge/Main/CoderRootCommit.js index b542c3905..b3beef413 100644 --- a/src/forge/Main/CoderRootCommit.js +++ b/src/forge/Main/CoderRootCommit.js @@ -1,6 +1,6 @@ import React , { Component } from 'react'; import { Spin , Pagination, Timeline } from 'antd'; -import { getImageUrl } from 'educoder'; +import { getImageUrl , returnbar } from 'educoder'; import { truncateCommitId ,timeFormat } from '../common/util'; import { AlignTop } from '../Component/layout'; import SelectBranch from '../Branch/Select'; @@ -15,12 +15,6 @@ import CopyTool from '../Component/CopyTool'; import './tree/Index.scss' -function returnbar(str){ - if(str && str.length>0 && str.indexOf("%2F")>-1){ - return str.replaceAll('%2F','/'); - } - return str; -} //代码库--提交页面 class CoderRootCommit extends Component{ @@ -79,7 +73,7 @@ class CoderRootCommit extends Component{ isSpining:true, page:realPage }) - this.getCommitList( branchName , realPage , limit ); + this.getCommitList( returnbar(branchName) , realPage , limit ); } getCommitList=(branch , page , limit)=>{ @@ -133,7 +127,7 @@ class CoderRootCommit extends Component{ render(){ const { commitDatas , dataCount , limit , page , isSpining , branchList } = this.state; - const { projectDetail, commit_class , defaultBranch } = this.props; + const { projectDetail, commit_class , defaultBranch , platform } = this.props; const { projectsId , owner , branchName } = this.props.match.params; let branch = returnbar(branchName || defaultBranch); return( @@ -159,7 +153,16 @@ class CoderRootCommit extends Component{
    -
    +
    + { + platform ? + + + + : + + } +

    sha - {truncateCommitId(`${item.sha}`)} + { + platform ? + {truncateCommitId(`${item.sha}`)} + : + {truncateCommitId(`${item.sha}`)} + } diff --git a/src/forge/Main/CoderRootFileDetail.js b/src/forge/Main/CoderRootFileDetail.js index bdcfc98a7..b73a2168a 100644 --- a/src/forge/Main/CoderRootFileDetail.js +++ b/src/forge/Main/CoderRootFileDetail.js @@ -215,7 +215,7 @@ class CoderRootFileDetail extends Component { const Option = Select.Option; return ( - +

    { md && readOnly && diff --git a/src/forge/Main/CoderRootIndex.js b/src/forge/Main/CoderRootIndex.js index 7ff25dae1..cd15d45e8 100644 --- a/src/forge/Main/CoderRootIndex.js +++ b/src/forge/Main/CoderRootIndex.js @@ -29,14 +29,6 @@ const CoderRootVersion = Loadable({ loader: () => import('./version/Index'), loading: Loading, }) -// const CoderRootVersionNew = Loadable({ -// loader: () => import('./version/New'), -// loading: Loading, -// }) -// const CoderRootVersionUpdate = Loadable({ -// loader: () => import('./version/New'), -// loading: Loading, -// }) const Diff = Loadable({ loader: () => import('./Diff'), loading: Loading, @@ -50,37 +42,6 @@ class CoderRootIndex extends Component{ } } - // componentDidMount=()=>{ - // this.Init(); - // } - // componentDidUpdate=(prevProps)=>{ - // const { location } = this.props; - // const prevlocation = prevProps && prevProps.location; - // if (location !== prevlocation) { - // this.Init(); - // } - // } - - // Init=()=>{ - // const { branchName } = this.props.match.params; - // const { defaultBranch } = this.props; - // this.getTopCount(branchName || defaultBranch); - // } - - // 获取组件里要显示的数据 - // getTopCount=(branch)=>{ - // const { projectsId , owner } = this.props.match.params; - // const url = `/${owner}/${projectsId}/top_counts.json`; - // axios.get(url,{params:{ - // ref:branch - // }}).then(result=>{ - // if(result){ - // this.setState({ - // coderCount:result.data - // }) - // } - // }).catch(error=>{console.log(error);}) - // } render(){ return(
    diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index 06d2fc44b..ceebddc88 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -3,6 +3,7 @@ import { Spin, Tooltip } from 'antd'; import { Link, Route, Switch } from 'react-router-dom'; import { Content, AlignTop } from '../Component/layout'; import DetailBanner from './sub/DetailBanner'; +import cookie from 'react-cookies'; import '../css/index.scss' import './list.scss'; @@ -54,7 +55,8 @@ const OrderupdateMilepost = Loadable({ }) const OrderupdateDetail = Loadable({ - loader: () => import('../Order/UpdateDetail'), + // loader: () => import('../Order/UpdateDetail'), + loader: () => import('../Order/order_form'), loading: Loading, }) @@ -202,6 +204,8 @@ class Detail extends Component { componentDidMount = () => { this.getProject(); + let history = this.props.location; + this.clearIssueCookies(history); } componentDidUpdate = (prevState) => { @@ -210,6 +214,24 @@ class Detail extends Component { if (prevState && this.props && (prevParam.projectsId !== propsParam.projectsId || prevParam.owner !== propsParam.owner)) { this.getProject(); } + + this.props.history.listen((history) => { + // 非issue链接地址清除cookie states,具体保存和操作在order.js页面 + this.clearIssueCookies(history); + }) + } + + clearIssueCookies=(history)=>{ + const { pathname } = history; + const { projectsId , owner } = this.props.match.params; + let currentIssue = pathname.indexOf(`/${owner}/${projectsId}/issues`) === -1; + if (currentIssue) { + cookie.save('states', undefined,{ expires: 0,path:`/` }); + } + } + + componentWillUnmount() { + this.timerChannel && clearTimeout(this.timerChannel); } getProject = (num) => { @@ -241,6 +263,7 @@ class Detail extends Component { } else if (result.data.mirror_status === 2) { this.deleteProjectBack(); } else { + this.getBanner(); this.getDetail(); this.setState({ firstSync: false, @@ -273,7 +296,9 @@ class Detail extends Component { connected: () => { console.log("###### channel connected! ######"); }, - disconnected: () => { }, + disconnected: () => { + console.log("###### cannot connected! ######"); + }, received: data => { console.log(`###### ---received data--- ######`); console.log(data); @@ -286,6 +311,7 @@ class Detail extends Component { this.deleteProjectBack(); } this.getDetail(); + this.getBanner(); } this.setState({ firstSync: false, @@ -293,10 +319,22 @@ class Detail extends Component { }); cable.subscriptions.consumer.disconnect(); } + }, + onerror:()=>{ + console.log("###### cannot connected! ######"); } - }) + }); + + this.timerChannel = setTimeout(this.reloadDetail,5000); } + reloadDetail=()=>{ + if(this.state.firstSync||this.state.secondSync){ + window.location.reload(); + } + } + + deleteProjectBack = () => { const { history } = this.props; const { projectsId, owner } = this.props.match.params; @@ -316,7 +354,6 @@ class Detail extends Component { getDetail = () => { const { projectsId, owner } = this.props.match.params; - this.getBanner(); const url = `/${owner}/${projectsId}/detail.json`; axios.get(url).then((result) => { if (result && result.data) { @@ -421,6 +458,10 @@ class Detail extends Component { const url = `/${owner}/${projectsId}/forks.json`; axios.post(url).then(result => { if (result && result.data.status === 0) { + if(result.data.message === "fork失败,你已拥有了这个项目"){ + this.props.history.push(`/${current_user && current_user.login}/${projectsId}`); + return; + } this.props.history.push(`/${current_user && current_user.login}/${result.data.identifier}`); this.props.showNotification(result.data.message); } @@ -483,6 +524,7 @@ class Detail extends Component { const common = { getDetail: this.getDetail, + getBanner:this.getBanner, changeOpenDevops: this.changeOpenDevops, defaultBranch } @@ -501,6 +543,7 @@ class Detail extends Component { {projectDetail && projectDetail.name}
    {projectDetail && projectDetail.private && 私有} + { !platform && 只读 }
    { @@ -508,11 +551,6 @@ class Detail extends Component { this.textFunc(projectDetail.forked_from_project_id, projectDetail.fork_info) : "" } - { - projectDetail && projectDetail.type && projectDetail.type !== 0 ? - 导入于 {projectDetail.mirror_url} - : "" - }
    @@ -575,6 +613,18 @@ class Detail extends Component { }
    + {/*
    + { + projectDetail && projectDetail.forked_from_project_id && projectDetail.fork_info ? + this.textFunc(projectDetail.forked_from_project_id,projectDetail.fork_info) + :"" + } + { + projectDetail && projectDetail.type && projectDetail.type !== 0 ? + 镜像自 {projectDetail.mirror_url} + :"" + } +
    */} { firstSync ? "" : () } > - {/* 修改详情 updatedetail*/} - () + (props) => () } > {/* 复制详情 copyetail*/} () + (props) => () } > diff --git a/src/forge/Main/Diff.jsx b/src/forge/Main/Diff.jsx index 8dad59fba..51eca8816 100644 --- a/src/forge/Main/Diff.jsx +++ b/src/forge/Main/Diff.jsx @@ -36,8 +36,9 @@ const Infos = styled.div` } & > .f-wrap-between { padding: 14px 20px 14px 16px; - border-radius: 3px 3px 0px 0px; + border-radius: 0px 0px 3px 3px; border: 1px solid #D0D0D0; + border-top: none; .df{ align-items: center; & .underline:hover{ @@ -46,12 +47,6 @@ const Infos = styled.div` } } `; -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} //提交详情页 export default (props) => { const {match , history } = props; diff --git a/src/forge/Main/Index.js b/src/forge/Main/Index.js index aff2638e8..9ce97e4ab 100644 --- a/src/forge/Main/Index.js +++ b/src/forge/Main/Index.js @@ -38,7 +38,10 @@ class Index extends Component { recommendOriList:undefined, languageList:undefined, - languageId:undefined + languageId:undefined, + + CategoryList:undefined + } } @@ -51,7 +54,7 @@ class Index extends Component { this.getCategory(); - this.getRecommand(); + // this.getRecommand(); this.getLanguage(); @@ -148,11 +151,13 @@ class Index extends Component { this.setState({ isSpin: true, project_type: type, - search: undefined + search: undefined, + category_id: undefined, + },()=>{ + this.setTypeList(list, type) + const { page, limit, sort , languageId } = this.state; + this.getListData(page, limit, undefined, sort, type, undefined , languageId); }) - this.setTypeList(list, type) - const { page, limit, sort, category_id , languageId } = this.state; - this.getListData(page, limit, undefined, sort, type, category_id , languageId); } // 获取类型 @@ -161,23 +166,15 @@ class Index extends Component { axios.get(url).then((result) => { if (result && result.data) { + this.setCategoryList(result.data, undefined); } }).catch((error) => { }) } - setCategoryList = (list, active_id) => { + setCategoryList = (list) => { this.setState({ - categoryList: list.map((item, key) => { - return ( -
  • this.changeCategory(`${item.id}`, list)}> -

    - {item.name} - {item.projects_count} -

    -
  • - ) - }) + CategoryList: list }) } @@ -185,10 +182,10 @@ class Index extends Component { this.setState({ category_id: id, page: 1 + },()=>{ + const { limit, sort, project_type , languageId } = this.state; + this.getListData(1, limit, undefined, sort, project_type, id , languageId); }); - this.setCategoryList(list, id) - const { limit, sort, project_type , languageId } = this.state; - this.getListData(1, limit, undefined, sort, project_type, id , languageId); } // 排序 @@ -248,7 +245,7 @@ class Index extends Component { 更新时间排序 创建时间排序 - fork数据排序 + fork数量排序 点赞数量排序 ) @@ -280,7 +277,7 @@ class Index extends Component { const { current_user } = this.props; const { projectsList , recommendList , languageList , languageId , - isSpin, total, search, limit, page, typeList, categoryList , recommendOriList } = this.state; + isSpin, total, search, limit, page, typeList, CategoryList , category_id , recommendOriList } = this.state; const setting={ dots: true, @@ -349,7 +346,19 @@ class Index extends Component {
    • 项目类别
    • - {categoryList} + { + CategoryList && CategoryList.length > 0 ? CategoryList.map((item,key)=>{ + return( +
    • this.changeCategory(`${item.id}`)}> +

      + {item.name} + {item.projects_count} +

      +
    • + ) + }) + :"" + }
    diff --git a/src/forge/Main/Index.scss b/src/forge/Main/Index.scss index 5f3692929..dbdf4b1c1 100644 --- a/src/forge/Main/Index.scss +++ b/src/forge/Main/Index.scss @@ -246,11 +246,14 @@ display: flex; justify-content: space-between; align-items: flex-start; - border-bottom: 1px solid #d9d9d9; padding:12px 20px 11px; border-radius: 4px 4px 0px 0px; border: 1px solid rgba(42, 97, 255, 0.23); + border-bottom: none; background-color: #FAFCFF; + &+.listtablebody{ + border-top-color: rgba(42, 97, 255, 0.23); + } .ellipsistxt{ &:hover .markdown-body{ color: #466AFF; @@ -331,7 +334,6 @@ .listtablebody{ border-radius:0px 0px 4px 4px ; border: 1px solid #D0D0D0; - border-top: none; li.listtablepath{ a{color: #40a9ff;} p{ diff --git a/src/forge/Main/IndexItem.js b/src/forge/Main/IndexItem.js index 0cba9123e..090b9e51d 100644 --- a/src/forge/Main/IndexItem.js +++ b/src/forge/Main/IndexItem.js @@ -35,7 +35,7 @@ class IndexItem extends Component {
    - + {item.author.name}/{item.name} { !item.is_public && 私有 } @@ -52,12 +52,6 @@ class IndexItem extends Component { :"" } - { - item.type && item.type === 1 ? - - - :"" - } { diff --git a/src/forge/Main/img/index/banner.png b/src/forge/Main/img/index/banner.png new file mode 100644 index 000000000..92a1792b4 Binary files /dev/null and b/src/forge/Main/img/index/banner.png differ diff --git a/src/forge/Main/img/index/box.png b/src/forge/Main/img/index/box.png new file mode 100644 index 000000000..3dbddbefb Binary files /dev/null and b/src/forge/Main/img/index/box.png differ diff --git a/src/forge/Main/img/index/data.png b/src/forge/Main/img/index/data.png new file mode 100644 index 000000000..6b5b33478 Binary files /dev/null and b/src/forge/Main/img/index/data.png differ diff --git a/src/forge/Main/img/index/earth.png b/src/forge/Main/img/index/earth.png new file mode 100644 index 000000000..eca8dafba Binary files /dev/null and b/src/forge/Main/img/index/earth.png differ diff --git a/src/forge/Main/img/index/eye.png b/src/forge/Main/img/index/eye.png new file mode 100644 index 000000000..e7563addf Binary files /dev/null and b/src/forge/Main/img/index/eye.png differ diff --git a/src/forge/Main/img/index/hot.png b/src/forge/Main/img/index/hot.png new file mode 100644 index 000000000..0304899db Binary files /dev/null and b/src/forge/Main/img/index/hot.png differ diff --git a/src/forge/Main/img/index/hotAuthor.png b/src/forge/Main/img/index/hotAuthor.png new file mode 100644 index 000000000..62d01a746 Binary files /dev/null and b/src/forge/Main/img/index/hotAuthor.png differ diff --git a/src/forge/Main/img/index/icon-delete.png b/src/forge/Main/img/index/icon-delete.png new file mode 100644 index 000000000..740af5a2f Binary files /dev/null and b/src/forge/Main/img/index/icon-delete.png differ diff --git a/src/forge/Main/img/index/icon.png b/src/forge/Main/img/index/icon.png new file mode 100644 index 000000000..2bfa60dde Binary files /dev/null and b/src/forge/Main/img/index/icon.png differ diff --git a/src/forge/Main/img/index/month.png b/src/forge/Main/img/index/month.png new file mode 100644 index 000000000..3b0b909f9 Binary files /dev/null and b/src/forge/Main/img/index/month.png differ diff --git a/src/forge/Main/img/index/more.png b/src/forge/Main/img/index/more.png new file mode 100644 index 000000000..1ae51d036 Binary files /dev/null and b/src/forge/Main/img/index/more.png differ diff --git a/src/forge/Main/img/index/typebg.png b/src/forge/Main/img/index/typebg.png new file mode 100644 index 000000000..e1d748ed5 Binary files /dev/null and b/src/forge/Main/img/index/typebg.png differ diff --git a/src/forge/Main/img/index/unit/feiteng.png b/src/forge/Main/img/index/unit/feiteng.png new file mode 100644 index 000000000..b4190d4e3 Binary files /dev/null and b/src/forge/Main/img/index/unit/feiteng.png differ diff --git a/src/forge/Main/img/index/unit/huake.png b/src/forge/Main/img/index/unit/huake.png new file mode 100644 index 000000000..56863862a Binary files /dev/null and b/src/forge/Main/img/index/unit/huake.png differ diff --git a/src/forge/Main/img/index/unit/huawei.png b/src/forge/Main/img/index/unit/huawei.png new file mode 100644 index 000000000..4374a68c6 Binary files /dev/null and b/src/forge/Main/img/index/unit/huawei.png differ diff --git a/src/forge/Main/img/index/unit/jijinhui.png b/src/forge/Main/img/index/unit/jijinhui.png new file mode 100644 index 000000000..c7fc91a6f Binary files /dev/null and b/src/forge/Main/img/index/unit/jijinhui.png differ diff --git a/src/forge/Main/img/index/unit/langchao.png b/src/forge/Main/img/index/unit/langchao.png new file mode 100644 index 000000000..46a1d70cc Binary files /dev/null and b/src/forge/Main/img/index/unit/langchao.png differ diff --git a/src/forge/Main/img/index/unit/mulan.png b/src/forge/Main/img/index/unit/mulan.png new file mode 100644 index 000000000..8e700754f Binary files /dev/null and b/src/forge/Main/img/index/unit/mulan.png differ diff --git a/src/forge/Main/img/index/unit/xigongye.png b/src/forge/Main/img/index/unit/xigongye.png new file mode 100644 index 000000000..7ec298106 Binary files /dev/null and b/src/forge/Main/img/index/unit/xigongye.png differ diff --git a/src/forge/Main/img/index/unit/xiuos.png b/src/forge/Main/img/index/unit/xiuos.png new file mode 100644 index 000000000..cc9d74223 Binary files /dev/null and b/src/forge/Main/img/index/unit/xiuos.png differ diff --git a/src/forge/Main/img/index/week.png b/src/forge/Main/img/index/week.png new file mode 100644 index 000000000..c967f424d Binary files /dev/null and b/src/forge/Main/img/index/week.png differ diff --git a/src/forge/Main/projecthome/Index.jsx b/src/forge/Main/projecthome/Index.jsx new file mode 100644 index 000000000..3b56b455a --- /dev/null +++ b/src/forge/Main/projecthome/Index.jsx @@ -0,0 +1,161 @@ +import React , { useEffect , useState } from 'react'; +import './Index.scss'; +import SubBanner from './SubBanner'; +import SubUnitBanner from './SubUnitBanner'; +import Icon from '../img/index/icon.png'; +import { Link } from 'react-router-dom'; +import { Spin , Input } from 'antd'; +import SubList from './SubList'; +import more from '../img/index/more.png'; +import axios from 'axios'; +import { getImageUrl } from 'educoder'; +import Nodata from '../../Nodata'; + +const { Search } = Input; + +const LIMIT = 20; +function Index() { + + const [ cateList , setCateList ] = useState(undefined); + const [ projectsList , setProjectsList ] = useState(undefined); + const [ search , setSearch ] = useState(undefined); + const [ cateID, setCateID ] = useState(undefined); + const [ isSpin, setIsSpin ] = useState(true); + + useEffect(()=>{ + getCate(); + },[]) + + useEffect(()=>{ + setIsSpin(true); + getProject(); + },[cateID]) + + function getCate() { + const url = `/project_categories/pinned_index.json`; + axios.get(url).then(result=>{ + if(result && result.data){ + setCateList(result.data.project_categories); + } + }).catch(error=>{}) + } + + function getProject(searchValue) { + const url = `/projects.json`; + axios.get(url,{ + params:{ + pinned:"d", + category_id:cateID, + limit:LIMIT, + search:searchValue + } + }).then(result=>{ + if(result && result.data){ + setProjectsList(result.data.projects); + setIsSpin(false); + } + }).catch(error=>{}) + } + + function changeSearchValue(e){ + setSearch(e.target.value); + } + + function searchFun(value){ + setIsSpin(true); + getProject(value); + } + + return( +
    + + +
    +
    + +
    +
    + 开源项目 + + + 更多 +
    + +
    + { + projectsList && projectsList.length > 0 ? +
    + { + projectsList.map((i,k)=>{ + return( +
  • + { + i.platform === "educoder" ? + + + + : + + } +
    +
    + {i.author && i.author.name}/{i.name} + {i.praises_count > 0 ? {i.praises_count} :"" } + {i.forked_count > 0 ? {i.forked_count}:""} +
    +
    + {i.description} +
    +
    + {i.category && i.category.id ? {i.category.name} :"" } + {i.language && i.language.id ? {i.language.name} :""} + 更新于{i.time_ago} +
    +
    +
  • + ) + }) + } +
    + :"" + } + { + projectsList && projectsList.length === 0 && + } +
    +
    + { + projectsList && projectsList.length > 0 && +
    + 查看更多开源项目 +
    + } +
    +
    + +
    +
    + ) +} +export default Index; \ No newline at end of file diff --git a/src/forge/Main/projecthome/Index.scss b/src/forge/Main/projecthome/Index.scss new file mode 100644 index 000000000..fd4b604e0 --- /dev/null +++ b/src/forge/Main/projecthome/Index.scss @@ -0,0 +1,561 @@ +.banners{ + background: url('../img/index/banner.png') no-repeat top; + min-height: 516px; + background-size: cover; + background-color: #0C2A5B; + .bannersCenter{ + padding-top: 30px; + max-width: 1200px; + margin: 0px auto; + position: relative; + height: 516px; + } + .bTitle{ + height: 30px; + line-height: 30px; + font-size: 30px; + font-weight: 500; + color: #FFFFFF; + margin-bottom: 20px!important; + text-align: center; + span{ + background: linear-gradient(to right,#289AF6 0%, #9E84FF 40%, #FFB03B 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + .bSubTitle{ + text-align: center; + height: 30px; + line-height: 30px; + font-size: 16px; + font-weight: 400; + color: #FFFFFF; + } + .bannerBox{ + background: url('../img/index/box.png') no-repeat; + background-size: 100% 100%; + height: 240px; + width: 380px; + margin:0px auto; + padding:25px 30px 34px; + .bannersProject{ + position: relative; + .slick-list{ + width: 100%; + overflow: hidden; + } + .slick-track{ + display: flex; + li{ + padding:15px 20px; + .projectinfos{ + display: flex; + align-items: center; + width: 100%; + margin-bottom: 13px; + img{ + width: 32px; + height: 32px; + margin-right: 7px; + border-radius: 50%; + } + .name{ + height: 28px; + line-height: 28px; + font-size: 20px; + font-weight: 500; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 250px; + color: #25EBFF; + a{ + color: #25EBFF!important; + } + } + .company{ + height: 20px; + line-height: 20px; + font-size: 14px; + font-weight: 400; + color: #FFFFFF; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 250px; + a{ + color: #FFFFFF!important; + } + } + } + .desc{ + height: 40px; + font-size: 13px; + font-weight: 400; + color: #FFFFFF; + line-height: 20px; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + } + .infoData{ + display: flex; + margin-top: 16px; + justify-content: space-around; + &>span{ + display: flex; + align-items: center; + &>span{ + color: #FFB729; + font-size: 15px; + font-weight: 400; + } + } + img{ + width: 16px; + margin-right: 4px; + } + } + } + } + } + } + .airBubble{ + &>div{ + position: absolute; + height: 410px; + width: 415px; + bottom: 0px; + &.right{ + right: 0px; + } + &.left{ + left: 0px; + } + &.right div, &.left div{ + position: relative; + width: 100%; + height: 100%; + span{ + position: absolute; + border-radius: 50%; + background: linear-gradient(124deg, rgba(255, 255, 255, 0.1) 0%, rgba(5, 200, 220, 0.04) 50%, rgba(5, 200, 220, 0.03) 100%); + box-shadow: 0px 0px 7px 3px rgba(0, 154, 255, 0.19); + border: 1px solid rgba(0, 154, 255, 0.19); + font-size: 14px; + font-weight: 400; + line-height: 17px; + display: flex; + align-items: center; + word-break: break-all; + text-align: center; + padding:5px; + animation: zoomin 1.3s infinite alternate; + &:hover{ + animation:none + } + } + } + &.right span:nth-child(4) a,&.left span:nth-child(1) a,&.left span:nth-child(2) a{ + color: #25EBFF!important; + } + &.right span:nth-child(1) a,&.left span:nth-child(5) a{ + color: #CD8AFF!important; + } + &.right span:nth-child(3) a,&.right span:nth-child(5) a,&.left span:nth-child(6) a{ + color: #FF6125!important; + } + &.left span:nth-child(3) a{ + color: #FF8425!important; + } + &.right span:nth-child(2) a,&.left span:nth-child(4) a{ + color: #8CC2FF!important; + } + &.right span:nth-child(1){ + right: 0px; + height: 120px; + width: 120px; + } + &.right span:nth-child(2){ + right: 160px; + height: 72px; + width: 72px; + bottom: 220px; + padding:0px; + animation-delay: 0.2s; + } + &.right span:nth-child(3){ + right: 300px; + height: 94px; + width: 94px; + bottom: 99px; + padding:8px; + animation-delay: 0.3s; + } + &.right span:nth-child(4){ + right: 156px; + height: 100px; + width: 100px; + bottom: 39px; + font-size: 12px; + animation-delay: 0.2s; + } + &.right span:nth-child(5){ + right: 10px; + height: 94px; + width: 94px; + bottom: 97px; + animation-delay: 0.4s; + } + &.left span:nth-child(1){ + left: 80px; + height: 110px; + width: 110px; + padding:8px; + animation-delay: 0.1s; + } + &.left span:nth-child(2){ + right: 60px; + height: 96px; + width: 96px; + top: 85px; + font-size: 13px; + animation-delay: 0.2s; + } + &.left span:nth-child(3){ + left: 0px; + height: 86px; + width: 86px; + top: 145px; + font-size: 13px; + animation-delay: 0.3s; + } + &.left span:nth-child(4){ + left: 164px; + height: 70px; + width: 70px; + bottom: 158px; + font-size: 12px; + font-size: 12px; + animation-delay: 0.3s; + } + &.left span:nth-child(5){ + left: 35px; + height: 102px; + width: 102px; + bottom: 32px; + font-size: 13px; + animation-delay: 0.4s; + } + &.left span:nth-child(6){ + right: 10px; + height: 114px; + width: 114px; + bottom: 26px; + padding:8px; + } + } + } +} +@keyframes zoomin{ + 0%{-webkit-transform:scale(1.05);transform:scale(1.05)} + 100%{-webkit-transform:scale(0.8);transform:scale(0.8)} +} +@-webkit-keyframes zoomin{ + 0%{-webkit-transform:scale(1.05);transform:scale(1.05)} + 100%{-webkit-transform:scale(0.8);transform:scale(0.8)} +} +.unitBanner{ + padding:29px 0px; + background: #F9F9F9; + .unitContent{ + max-width: 1200px; + margin:0px auto; + .unitTitle{ + height: 28px; + line-height: 28px; + font-size: 20px; + font-weight: 500; + color: #1E1E1E; + display: flex; + align-items: center; + img{ + margin-left: 9px; + } + } + .unitSlider{ + padding:30px 0px 10px; + .slick-list{ + width: 100%; + height: 56px; + overflow: hidden; + .slickline{ + display: flex!important; + align-items: center; + justify-content: space-between; + } + } + } + } +} +.dataPanel{ + width: 1200px; + display: flex; + justify-content: space-between; + padding:30px 0px 60px; + margin:0px auto; + .left{ + width: 850px; + display: flex; + .leftTypes{ + width: 220px; + height: 1576px; + background: url('../img/index/typebg.png'); + background-size: 100% 100%; + box-shadow: 0px 0px 4px 5px rgba(0, 0, 0, 0.02); + a{ + padding:0px 20px; + height: 44px; + margin-top: 10px; + font-size: 16px; + font-weight: 500; + color: #333333; + display: flex; + align-items: center; + cursor: pointer; + &:hover{ + background-color: #F5F5F5; + } + &.active{ + background: linear-gradient(to right,#07228F , #466AFF); + color: #fff!important; + } + img{ + margin-right: 12px; + width: 28px; + } + } + } + .leftLists{ + flex:1; + box-shadow: 0px 0px 4px 5px rgba(0, 0, 0, 0.02); + .leftTitles{ + height: 60px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid rgba(153, 153, 153, 0.16); + padding:0px 20px; + .ant-btn-primary{ + background-color: #466AFF; + border-color: #466AFF; + &:hover,&:active{ + background-color: rgba(70,106,255,0.8); + border-color: rgba(70,106,255,0.8); + } + } + &>span{ + font-size: 18px; + font-weight: 500; + color: #000000; + } + a{ + color: #466AFF!important; + } + } + .leftlistItem{ + padding:0px 20px; + li{ + border-bottom: 1px solid rgba(153, 153, 153, 0.16); + display: flex; + align-items: flex-start; + padding:20px 0px ; + &>a img{ + width: 32px; + height: 32px; + border-radius: 50%; + margin-right: 10px; + } + .itemTitle{ + flex:1; + .item-title-infos{ + height: 22px; + display: flex; + align-items: center; + .infotitle{ + flex:1; + height: 21px; + font-size: 15px; + font-weight: 600; + line-height: 21px; + color: #333!important; + max-width: 458px; + &:hover{ + color: #466AFF!important; + } + } + span{ + margin-left:20px ; + color: #333; + i{ + color: #666; + } + } + } + .item-desc{ + font-size: 14px; + font-weight: 400; + color: #414141; + line-height: 24px; + max-width: 548px; + margin: 5px 0px; + } + .item-data{ + font-size: 13px; + font-weight: 400; + color: #7D7D7D; + height: 20px; + line-height: 20px; + display: flex; + align-items: center; + .category{ + position: relative; + padding-left: 11px; + margin-right: 10px; + &::before{ + position: absolute; + content: ""; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #466AFF; + top: 7px; + left: 0px; + } + } + .language{ + position: relative; + padding-left: 11px; + &::before{ + position: absolute; + content: ""; + width: 1px; + height: 10px; + border-radius: 50%; + border-left: 1px solid #9e9e9e; + bottom: 5px; + left: 0px; + } + } + } + } + } + } + } + .left-bottom-btn{ + display: flex; + justify-content: center; + padding:18px 0px; + a{ + height: 38px; + line-height: 36px; + border-radius: 8px; + border: 1px solid #466AFF; + color: #466AFF; + font-size: 16px; + padding:0px 20px; + img{ + height: 16px; + margin-top: -1px; + margin-left: 8px; + } + } + } + } + .right{ + width: 330px; + &>div{ + box-shadow: 0px 0px 4px 5px rgba(0, 0, 0, 0.02); + margin-bottom: 20px; + } + .partTitle{ + padding:15px; + background: #F6F9FF; + font-size: 18px; + color: #000000; + font-weight: 500; + margin-bottom: 10px; + img{ + width: 33px; + margin-right: 6px; + } + } + .righthotAuthor{ + padding-bottom: 15px; + li{ + padding-left: 15px; + &>div{ + display: flex; + align-items: flex-start; + padding:10px 15px 10px 0px; + border-bottom: 1px solid rgba(153, 153, 153, 0.1); + img{ + width: 32px; + height: 32px; + border-radius: 50%; + margin-right: 8px; + margin-top: 3px; + } + } + &:hover{ + background-color: #F3F3F3; + } + &:last-child > div{ + border-bottom: none; + } + } + } + .hotProjects{ + li{ + padding:10px 15px; + margin-bottom: 10px; + &:hover{ + background-color: #F3F3F3; + } + .mInfos{ + display: flex; + align-items: center; + height: 20px; + .num{ + width: 18px; + height: 18px; + background: #466AFF; + border-radius: 2px; + color: #fff; + text-align: center; + line-height: 18px; + margin-right: 8px; + } + .name{ + flex:1; + font-size: 15px; + } + } + .sInfos{ + background: #F7F8F9; + padding:0px 5px; + font-size: 13px; + font-weight: 400; + color: #666666; + line-height: 24px; + word-break: break-all; + margin-top: 10px; + } + } + } + } +} \ No newline at end of file diff --git a/src/forge/Main/projecthome/SubBanner.jsx b/src/forge/Main/projecthome/SubBanner.jsx new file mode 100644 index 000000000..cb868b943 --- /dev/null +++ b/src/forge/Main/projecthome/SubBanner.jsx @@ -0,0 +1,114 @@ +import React , { useEffect , useState } from 'react'; +import Slider from 'react-slick'; +import { Link } from 'react-router-dom'; +import { getImageUrl } from 'educoder'; +import Eye from '../img/index/eye.png'; +import Data from '../img/index/data.png'; +import Earth from '../img/index/earth.png'; +import axios from 'axios'; + +// const list =[ +// {img:Imgs,name:"矽璓工业物联操作系统XiUOS",company:"泛在操作系统实验室",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"openGauss-operator",company:"华为技术有限公司",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"PaddleDetection 2.0",company:"TrustieMirrors",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"skyline",company:"浪潮信息",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"BitXHub",company:"开放原子开源基金会",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"Device Model",company:"openDACS",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"Gitlink",company:"Gitlink",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"openEuler-datenlord",company:"华为技术有限公司",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"OpenAtom XuperChain",company:"开放原子开源基金会",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"xuos-web",company:"泛在操作系统实验室",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// {img:Imgs,name:"CrowdOS开源项目开发",company:"西北工业大学",desc:"此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情此处为项目介绍详情",look:432,cloud:"云原声",type:"C++"}, +// ] +const settings={ + dots: false, + infinite: true, + speed: 1000, + slidesToShow: 1, + slidesToScroll: 1, + autoplay:true, + arrows:false, + adaptiveHeight:true +} + +function SubBanner() { + + const [ list , setList ] = useState(undefined); + + useEffect(()=>{ + getList(); + },[]) + + function getList() { + const url = `/projects/banner_recommend.json`; + axios.get(url).then(result=>{ + if(result && result.data){ + setList(result.data.projects); + } + }).catch(error=>{}) + } + return( +
    +
    +

    GitLink 确实开源

    +

    新一代开发创新服务平台 让你的创意在这里释放

    +
    + { + list && list.length > 0 ? + + { + list.map((i,k)=>{ + return( +
  • +
    + +
    +

    {i.name}

    +

    {i.author && i.author.name}

    +
    +
    +

    {i.description}

    +
    + {i.visits} + {i.category && i.category.id && {i.category.name}} + {i.language && i.language.id && {i.language.name}} +
    +
  • + ) + }) + } +
    + :"" + } +
    +
    +
    +
    + { + list && list.length > 0 && list.map((i,k)=>{ + return( + k%2 === 0? {i.author && i.author.name}/{i.name} : "" + ) + }) + } +
    +
    + +
    +
    + { + list && list.length > 0 && list.map((i,k)=>{ + return( + k%2 > 0 ? {i.author && i.author.name}/{i.name} : "" + ) + }) + } +
    +
    + +
    +
    +
    + ) +} +export default SubBanner diff --git a/src/forge/Main/projecthome/SubList.jsx b/src/forge/Main/projecthome/SubList.jsx new file mode 100644 index 000000000..7dfed4963 --- /dev/null +++ b/src/forge/Main/projecthome/SubList.jsx @@ -0,0 +1,145 @@ +import React , { useEffect , useState } from 'react'; +import hotAuthor from '../img/index/hotAuthor.png'; +import week from '../img/index/week.png'; +import month from '../img/index/month.png'; +import { Link } from 'react-router-dom'; +import axios from 'axios'; +import { getImageUrl } from 'educoder'; + + +function SubList() { + + const [ weekList ,setWeekList ] = useState(undefined); + const [ monthList ,setMonthList ] = useState(undefined); + const [ authorList ,setAuthorList ] = useState(undefined); + + useEffect(()=>{ + getList(7); + getList(30); + getAuthorList(7); + },[]) + + function getList(time){ + const url = `/project_rank.json`; + axios.get(url,{ + params:{ + time + } + }).then(result=>{ + if(result && result.data){ + time === 7 ? setWeekList(result.data.projects) : setMonthList(result.data.projects); + } + }).catch(error=>{}) + } + function getAuthorList(time){ + const url = `/user_rank.json`; + axios.get(url,{ + params:{ + time + } + }).then(result=>{ + if(result && result.data){ + setAuthorList(result.data.users); + } + }).catch(error=>{}) + } + + return( +
    + { + authorList && authorList.length > 0? +
    +
    本周热门开发者
    +
    + { + authorList.map((i,k)=>{ + return( +
  • +
    + +
    + {i.name} + { + i.project && i.project.name ? +

    + + + {i.project && i.project.name} + +

    + :"" + } +
    +
    +
  • + ) + }) + } +
    +
    + :"" + } + + { + weekList && weekList.length > 0 ? +
    +
    本周热门项目
    +
    + { + weekList.map((i,k)=>{ + return( +
  • +
    + {k+1} + {i.owner && i.owner.name}/{i.name} + + {i.praises} + +
    + {i.description && +
    + {i.description} +
    + } +
  • + ) + }) + } +
    +
    + :"" + } + { + monthList && monthList.length > 0? +
    +
    本月热门项目
    +
    + { + monthList.map((i,k)=>{ + return( +
  • +
    + {k+1} + {i.owner && i.owner.name}/{i.name} + + {i.praises} + +
    + {i.description && +
    + {i.description} +
    + } +
  • + ) + }) + } +
    +
    + :"" + } + +
    + ) +} +export default SubList; \ No newline at end of file diff --git a/src/forge/Main/projecthome/SubUnitBanner.jsx b/src/forge/Main/projecthome/SubUnitBanner.jsx new file mode 100644 index 000000000..1069452dd --- /dev/null +++ b/src/forge/Main/projecthome/SubUnitBanner.jsx @@ -0,0 +1,92 @@ +import React , { useEffect , useState } from 'react'; +import Hot from '../img/index/hot.png'; +import Slider from "react-slick"; +import huawei from '../img/index/unit/huawei.png'; +import langchao from '../img/index/unit/langchao.png'; +import jijinhui from '../img/index/unit/jijinhui.png'; +import mulan from '../img/index/unit/mulan.png'; +import xigongye from '../img/index/unit/xigongye.png'; +import feiteng from '../img/index/unit/feiteng.png'; +import xiuos from '../img/index/unit/xiuos.png'; +import huake from '../img/index/unit/huake.png'; +import axios from 'axios'; +import { Link } from 'react-router-dom'; +import { getImageUrl } from 'educoder'; + +const settings = { + dots: false, + infinite: true, + slidesToShow: 1, + slidesToScroll: 1, + vertical: true, + verticalSwiping: true, + autoplay:true, + arrows:false +}; +// const group_size = 6; +const list =[ + [ + {url:"/Huawei_Technology",avatar_url:huawei,name:"华为技术有限公司"}, + {url:"/openatom_foundation",avatar_url:jijinhui,name:"开放原子开源基金会"}, + {url:"/Inspur",avatar_url:langchao,name:"浪潮信息"}, + {url:"/mulan-community",avatar_url:mulan,name:"木兰开源社区"}, + ], + [ + {url:"/CrowdOS_WeSense",avatar_url:xigongye,name:"西北工业大学"}, + {url:"/pkecosystem",avatar_url:feiteng,name:"PK开源生态项目组"}, + {url:"/xuos",avatar_url:xiuos,name:"泛在操作系统实验室"}, + {url:"/hustos",avatar_url:huake,name:"华中科技大学操作系统团队"}, + ] +] +function SubUnitBanner() { + + // const [ list , setlist ] = useState(undefined); + + // useEffect(()=>{ + // getRecommandOrz(); + // },[]) + + // function getRecommandOrz(params) { + // const url = `/organizations/recommend.json`; + // axios.get(url,{ + // params:{ + // group_size + // } + // }).then(result=>{ + // if(result){ + // setlist(result.data.organizations) + // } + // }).catch(error=>{}) + // } + return( + list && list.length > 0 ? +
    +
    +
    + 精选开源组织 + +
    + + { + list.map((i,k)=>{ + return( +
    + { + i.map((j,k1)=>{ + return( + {j.name} + ) + }) + } +
    + ) + }) + } +
    +
    +
    + :"" + + ) +} +export default SubUnitBanner; \ No newline at end of file diff --git a/src/forge/Main/sub/Contribute.jsx b/src/forge/Main/sub/Contribute.jsx index 76d56dc89..ce14e0cac 100644 --- a/src/forge/Main/sub/Contribute.jsx +++ b/src/forge/Main/sub/Contribute.jsx @@ -31,7 +31,7 @@ function Contribute(props){ } }).then(result=>{ if(result){ - setList(result.data.contributors); + setList(result.data.list); setTotal(result.data.total_count); setIsSpin(false); } diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx index 803ad6aac..8700d0d2f 100644 --- a/src/forge/Main/sub/DetailBanner.jsx +++ b/src/forge/Main/sub/DetailBanner.jsx @@ -48,9 +48,9 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa item.menu_name === "issues" &&
  • - + - 易修(Issue) + 疑修(Issue) {projectDetail && projectDetail.issues_count ? {numFormat(projectDetail.issues_count)} : ""} @@ -61,7 +61,7 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
  • - 合并请求 + 合并请求(PR) {projectDetail && projectDetail.pull_requests_count ? {numFormat(projectDetail.pull_requests_count)} : ""}
  • :"" @@ -80,7 +80,7 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
  • {/* */} - 工作流(beta版) + 引擎(Engine) {projectDetail && projectDetail.ops_count ? {projectDetail.ops_count} : ""}
  • @@ -99,13 +99,22 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa { item.menu_name === "versions" &&
  • - + 里程碑 {projectDetail && projectDetail.versions_count ? {numFormat(projectDetail.versions_count)} :""}
  • } + {/* { + item.menu_name === "wiki" && +
  • + + + 维基(Wiki) + +
  • + } */} { item.menu_name === "activity" &&
  • @@ -116,7 +125,7 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
  • } { - item.menu_name === "settings" && + item.menu_name === "settings" && platform &&
  • 0 ? "iconfont icon-cangkushezhiicon color-grey-3 mr5 font-14":"iconfont icon-cangkushezhiicon color-grey-6 font-14 mr5"}> diff --git a/src/forge/Main/sub/ReadmeCatelogue.jsx b/src/forge/Main/sub/ReadmeCatelogue.jsx index 6dab7d792..a913b152f 100644 --- a/src/forge/Main/sub/ReadmeCatelogue.jsx +++ b/src/forge/Main/sub/ReadmeCatelogue.jsx @@ -1,7 +1,6 @@ import React , { useState } from 'react'; import { Anchor , Input } from 'antd'; import './sub.scss'; -import { useEffect } from 'react'; const { Link } = Anchor; @@ -36,11 +35,11 @@ function ReadmeCatelogue({ menuList , hash }) { { menu && menu.length>0?
    - + { menu.map((item,key)=>{ return( -
    +
    ) diff --git a/src/forge/Main/sub/UpdateDescModal.jsx b/src/forge/Main/sub/UpdateDescModal.jsx index b0291f347..902f2f150 100644 --- a/src/forge/Main/sub/UpdateDescModal.jsx +++ b/src/forge/Main/sub/UpdateDescModal.jsx @@ -46,14 +46,14 @@ function UpdateDescModal({form , visible , onCancel , onOk,desc,website,lesson_u {getFieldDecorator("website",{ rules:[] })( - + )} {getFieldDecorator("lesson_url",{ rules:[] })( - + )} diff --git a/src/forge/Main/sub/sub.scss b/src/forge/Main/sub/sub.scss index 7716f0c50..f284edbb3 100644 --- a/src/forge/Main/sub/sub.scss +++ b/src/forge/Main/sub/sub.scss @@ -34,10 +34,17 @@ padding:15px; border-bottom: 1px solid #eee; } + .ant-anchor{ + padding-left: 0px!important; + .ant-anchor-ink::before{ + width: 0px; + } + } .ant-anchor-wrapper{ margin-left: 0px; - padding:5px 15px; + padding:5px 0px; max-height: 255px!important; + padding-left: 0px!important; .items{ border-radius: 4px; margin-bottom: 5px; diff --git a/src/forge/Main/tree/Index.jsx b/src/forge/Main/tree/Index.jsx index 2fc574349..2829331b9 100644 --- a/src/forge/Main/tree/Index.jsx +++ b/src/forge/Main/tree/Index.jsx @@ -2,19 +2,13 @@ import React , { useEffect , useState } from 'react'; import CopyTool from '../../Component/CopyTool'; import { truncateCommitId } from '../../common/util'; import { Link } from 'react-router-dom'; -import { getImageUrl } from 'educoder'; +import { getImageUrl , turnbar } from 'educoder'; import { Dropdown , Menu , Spin } from 'antd'; import './Index.scss'; import Tree from '../img/tree.png'; import Axios from 'axios'; -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} function Index(props) { const [ list , setList ] = useState([]); const [ isSpin , setIsSpin ] = useState(true); @@ -46,7 +40,7 @@ function Index(props) { return( -
    +
    { list && list.length>0 && list.map((item,key)=>{ return( @@ -91,7 +85,7 @@ function Index(props) {
    { (isManager || isDeveloper) && (projectDetail && projectDetail.type!==2) && - + 合并请求 + + 合并请求 } 下载 diff --git a/src/forge/Main/version/New.jsx b/src/forge/Main/version/New.jsx index 8adde9b01..8cfd912d1 100644 --- a/src/forge/Main/version/New.jsx +++ b/src/forge/Main/version/New.jsx @@ -110,7 +110,8 @@ export default Form.create()( axios.post(url, { ...value, body: desc, - attachment_ids: fileList + attachment_ids: fileList, + target_commitish:branch }) .then(result => { if (result) { @@ -224,7 +225,7 @@ export default Form.create()( 这是一个预览版本 )} -

    +

    diff --git a/src/forge/Main/version/version.js b/src/forge/Main/version/version.js index 2896899fc..2d7312497 100644 --- a/src/forge/Main/version/version.js +++ b/src/forge/Main/version/version.js @@ -6,9 +6,11 @@ import {truncateCommitId} from '../../common/util'; import Empty from './Empty'; import './version.scss'; import axios from 'axios'; +import { Popconfirm } from 'antd' import Tree from '../img/tree-black.png'; import RenderHtml from '../../../components/render-html'; import User from "../../Component/User"; +import DeleteBox from "../../Component/DeleteModal/Index"; function version(props) { const [ data , setData ] = useState(undefined); @@ -73,7 +75,17 @@ function version(props) { {item.name} {data && data.user_admin_permission && type !== 2 && } - {data && data.user_admin_permission && type !== 2 && {deleteRelease(item.version_id)}}>} + {data && data.user_admin_permission && type !== 2 && + {deleteRelease(item.version_id)}} + > + + + }

    diff --git a/src/forge/Merge/CreateMerge.js b/src/forge/Merge/CreateMerge.js index d7a320099..e6d0d0376 100644 --- a/src/forge/Merge/CreateMerge.js +++ b/src/forge/Merge/CreateMerge.js @@ -3,6 +3,8 @@ import { Input, Select, Spin, Alert } from 'antd'; import axios from 'axios'; import MergeForm from './merge_form'; import MergeFooter from './merge_footer'; +import { returnbar , turnbar } from 'educoder'; +import { Base64 } from 'js-base64'; import '../Order/order.css'; import './merge.css'; @@ -72,8 +74,8 @@ class CreateMerge extends Component { pullBranches: undefined, mergeBranches: undefined, mergeProjects: undefined, - merge: mergeBranch || 'master', - pull: pullBranch || 'master', + merge: returnbar(mergeBranch) || 'master', + pull: returnbar(pullBranch) || 'master', id: undefined, // isFork: false, projects_names: undefined, @@ -96,7 +98,7 @@ class CreateMerge extends Component { // 再获取对应的仓库列表、分支列表 // 再调用比较接口 const branchParams = getBranchParams(this.props.location.pathname); - this.getMergeInfo(branchParams); + this.getMergeInfo(branchParams,true); }; componentDidUpdate = (preProps) => { @@ -110,23 +112,28 @@ class CreateMerge extends Component { }; //获取新建合并请求数据 - getMergeInfo = (branchParams) => { + getMergeInfo = (branchParams,init) => { this.setState({ isSpin: true }); - const { pullOwner, pullBranch, mergeOwner, mergeBranch, projectId } = - branchParams; + const { pullOwner, pullBranch, mergeOwner, mergeBranch, projectId } = branchParams; const url = `/${pullOwner}/${projectId}/pulls/new.json`; axios .get(url) .then((result) => { if (result) { + if(init){ + //页面初始化时调用selectProjectName,给is_original、fork_project_id、merge_user_login赋值 + const initUser = result.data.projects_names && result.data.projects_names.filter((item)=>item.project_user_login === branchParams.mergeOwner); + initUser && initUser[0] && this.selectProjectName(initUser[0].id,false,{projects_names: result.data.projects_names,id: result.data.id}); + } + this.setState({isSpin: false}); // 如果url上的分支不存在,取默认值master const noMergeBranch = (result.data.branches || []).filter( - (branch) => branch.name === mergeBranch + (branch) => branch.name === returnbar(mergeBranch) ).length === 0; const noPullBranch = (result.data.branches || []).filter( - (branch) => branch.name === pullBranch + (branch) => branch.name === returnbar(pullBranch) ).length === 0; this.setState({ // isFork: result.data.is_fork, @@ -136,8 +143,8 @@ class CreateMerge extends Component { mergeBranches: result.data.branches, project_id: result.data.project_id, id: result.data.id, - merge: mergeBranch, - pull: pullBranch, + merge: returnbar(mergeBranch), + pull: returnbar(pullBranch), }); //判断源分支是否存在 @@ -148,7 +155,7 @@ class CreateMerge extends Component { isCompareSpin: false, }); }else{ - if(pullOwner === mergeOwner){ + if(pullOwner === returnbar(mergeOwner)){ if (!noMergeBranch) { this.compareProject(true, branchParams); } else { @@ -173,17 +180,14 @@ class CreateMerge extends Component { // compare接口,获取分支对比信息 compareProject = (sameProject, branchParams) => { - // const { project } = this.props; - // const { owner, projectsId } = this.props.match.params; - const { pullOwner, pullBranch, mergeOwner, mergeBranch, projectId } = - branchParams; - + const { pullOwner, pullBranch, mergeOwner, mergeBranch, projectId } = branchParams; let url = `/${mergeOwner}/${projectId}/compare`; if (sameProject) { - url += `/${pullBranch}...${mergeBranch}.json`; + url += `/${Base64.encode(returnbar(pullBranch))}...${Base64.encode(returnbar(mergeBranch))}.json`; } else { - url += `/${mergeBranch}...${pullOwner}/${projectId}:${pullBranch}.json`; + url += `/${Base64.encode(returnbar(mergeBranch))}...${pullOwner}/${projectId}:${Base64.encode(returnbar(pullBranch))}.json`; } + console.log(url); this.setState({ isSpin: false, isCompareSpin: true }); axios .get(url) @@ -253,17 +257,17 @@ class CreateMerge extends Component { let _mergeBranch = type === 'pull' ? mergeBranch : value; if (pullOwner === mergeOwner) { // 如果仓库相同, compare/目标分支...源分支 - _url += `${_mergeBranch}...${_pullBranch}`; + _url += `${turnbar(_mergeBranch)}...${turnbar(_pullBranch)}`; } else { // 如果仓库不同, compare/目标分支...源分支 - _url += `${_mergeBranch}...${pullOwner}:${_pullBranch}`; + _url += `${turnbar(_mergeBranch)}...${pullOwner}:${turnbar(_pullBranch)}`; } this.props.history.push(_url); }; // 切换仓库响应事件,目前仅目标分支可切换仓库 - selectProjectName = (value) => { - const { projects_names, id } = this.state; + selectProjectName = (value, isChangeProject, initPro) => { + const { projects_names, id } = isChangeProject ? this.state : initPro; const { pullOwner, pullBranch } = getBranchParams( this.props.location.pathname ); @@ -274,7 +278,8 @@ class CreateMerge extends Component { // 目标仓库与源仓库不是一个仓库 let is_fork = parseInt(value, 10) !== parseInt(id, 10); this.setState({ - isSpin: true, + // 切换目标仓库时url会发生变化,即有spin效果 + // isSpin: true, // merge_head: is_fork, data: { is_original: is_fork, @@ -284,15 +289,18 @@ class CreateMerge extends Component { : undefined, }, }); - if (login === pullOwner) { - // 如果切换后, 仓库与源仓库一致了 - this.props.history.push( - `/${login}/${identifier}/compare/master...${pullBranch}` - ); - } else { - this.props.history.push( - `/${login}/${identifier}/compare/master...${pullOwner}:${pullBranch}` - ); + // 加上是否需要切换url判断 + if(isChangeProject){ + if (login === pullOwner) { + // 如果切换后, 仓库与源仓库一致了 + this.props.history.push( + `/${login}/${identifier}/compare/master...${turnbar(pullBranch)}` + ); + } else { + this.props.history.push( + `/${login}/${identifier}/compare/master...${pullOwner}:${turnbar(pullBranch)}` + ); + } } // this.newMergelist(login, identifier); }; @@ -354,7 +362,7 @@ class CreateMerge extends Component {
    -
    源分支:
    +
    源分支 :
    this.selectProjectName(e)} + onSelect={(e) => this.selectProjectName(e, true)} > {this.renderProjectNames(mergeProjects)} diff --git a/src/forge/Merge/Files.jsx b/src/forge/Merge/Files.jsx index b4cf5b488..6661c1d3c 100644 --- a/src/forge/Merge/Files.jsx +++ b/src/forge/Merge/Files.jsx @@ -18,7 +18,7 @@ function Files({ data,history,owner,projectsId , parentsSha }){ useEffect(()=>{ document.addEventListener('click',()=>{setIsOpen(false)}) - }) + },[]) function showDown(flag,index,isBin){ if(!isBin){ diff --git a/src/forge/Merge/MergeItem.js b/src/forge/Merge/MergeItem.js index 61477c142..ef0262613 100644 --- a/src/forge/Merge/MergeItem.js +++ b/src/forge/Merge/MergeItem.js @@ -2,15 +2,8 @@ import React, { Component } from "react"; import { Link } from "react-router-dom"; import { Tag } from "antd"; import { AlignCenter } from '../Component/layout'; -import { getImageUrl } from "educoder"; +import { getImageUrl, turnbar } from "educoder"; import "./merge.css"; - -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} class MergeItem extends Component { constructor(props) { super(props); @@ -62,7 +55,7 @@ class MergeItem extends Component {

    @@ -113,9 +106,9 @@ class MergeItem extends Component { className="maxW200px task-hide ver-middle" style={{maxWidth:"200px"}} > {item.is_original - ? item.fork_project_user - : project_author_name} - :{item.pull_request_head} + ? item.fork_project_user_name + : item.author_name} + : {item.pull_request_head} } @@ -136,8 +129,7 @@ class MergeItem extends Component { to={`/${owner}/${projectsId}/tree/${turnbar(item.pull_request_base)}`} className="maxW200px task-hide ver-middle" style={{maxWidth:"200px"}} > - {/* {item.is_fork ? item.pull_request_base : `${item.author_name}:${item.pull_request_base}`} */} - {project_author_name}:{item.pull_request_base} + {project_author_name}: {item.pull_request_base} } diff --git a/src/forge/Merge/MessageCount.js b/src/forge/Merge/MessageCount.js index 6d01e8a37..d7dfe3ca5 100644 --- a/src/forge/Merge/MessageCount.js +++ b/src/forge/Merge/MessageCount.js @@ -2,7 +2,7 @@ import React, { Component } from "react"; import { Tabs } from 'antd'; import { Link } from "react-router-dom"; import axios from "axios"; -import { getImageUrl } from "educoder"; +import { getImageUrl , turnbar } from "educoder"; import { Form, Input, @@ -20,13 +20,6 @@ import "../Order/order.css"; import MergeLinkFooter from "./MergeLinkFooter"; const TextArea = Input.TextArea; - -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} class MessageCount extends Component { constructor(props) { super(props); @@ -365,10 +358,10 @@ class MessageCount extends Component {

    - {data.pull_request.is_original ? data.pull_request.fork_project_user : data.issue.project_author_name}: {data.pull_request && data.pull_request.head} + {data.pull_request.is_original ? data.pull_request.fork_project_user_name : data.issue.author_name}: {data.pull_request && data.pull_request.head} @@ -383,7 +376,7 @@ class MessageCount extends Component { to={`/${owner}/${projectsId}/tree/${data.pull_request.base}`} className="ver-middle task-hide" style={{maxWidth:"200px"}} title={`${data.issue.project_author_name}:${data.pull_request.base}`} > - {data.issue.project_author_name}:{data.pull_request.base} + {data.issue.project_author_name}: {data.pull_request.base}
    diff --git a/src/forge/Merge/UpdateMerge.js b/src/forge/Merge/UpdateMerge.js index 8918db6eb..86a05dc3e 100644 --- a/src/forge/Merge/UpdateMerge.js +++ b/src/forge/Merge/UpdateMerge.js @@ -54,14 +54,14 @@ class UpdateMerge extends Component { const { data, isSpin, pull, merge } = this.state; return (
    -
    +
    {" "} {data ? (
    -
    源分支:
    +
    源分支 :
    diff --git a/src/forge/Merge/merge_form.js b/src/forge/Merge/merge_form.js index e63781391..c6de96388 100644 --- a/src/forge/Merge/merge_form.js +++ b/src/forge/Merge/merge_form.js @@ -25,6 +25,7 @@ class MergeForm extends Component { issue_tags: undefined, issue_versions: undefined, issue_priories: undefined, + atWhoLoginList:undefined }; } @@ -146,7 +147,7 @@ class MergeForm extends Component { } else { values.issue_tag_ids = []; } - const { desc } = this.state; + const { desc , atWhoLoginList } = this.state; if (merge_type === "new") { let url = `/${owner}/${projectsId}/pulls.json`; axios.post(url, { @@ -158,15 +159,16 @@ class MergeForm extends Component { fork_project_id: data && data.fork_project_id, merge_user_login: data && data.merge_user_login, files_count, - commits_count + commits_count, + receivers_login:atWhoLoginList, }) .then((result) => { if (result) { this.setState({ isSpin: false, }); - const { pull_request_id } = result.data; - this.props.history.push(`/${owner}/${projectsId}/pulls/${pull_request_id}`); + const { pull_request_number } = result.data; + this.props.history.push(`/${owner}/${projectsId}/pulls/${pull_request_number}`); const { getDetail } = this.props; getDetail && getDetail(); } else { @@ -189,6 +191,7 @@ class MergeForm extends Component { body: desc, head: pull, base: merge, + receivers_login:atWhoLoginList, }) .then((result) => { if (result) { @@ -225,6 +228,13 @@ class MergeForm extends Component { }); }; + //合并请求中at谁列表(存储:login) + changeAtWhoLoginList = (loginList) =>{ + this.setState({ + atWhoLoginList:loginList, + }); + }; + render() { const { merge_type } = this.props; const { getFieldDecorator } = this.props.form; @@ -273,6 +283,10 @@ class MergeForm extends Component { mdID={"merge-new-description"} initValue={desc} onChange={this.onContentChange} + isCanAtme = {true} + changeAtWhoLoginList = {this.changeAtWhoLoginList} + owner = {owner} + projectsId = {projectsId} >

    diff --git a/src/forge/New/Index.js b/src/forge/New/Index.js index e9aa1f952..0898683f5 100644 --- a/src/forge/New/Index.js +++ b/src/forge/New/Index.js @@ -56,14 +56,6 @@ class Index extends Component { componentDidMount = () => { // 获取拥有者列表 this.getOwner(); - // 获取项目类别 - this.getCategory(); - // 获取项目语言 - this.getLanguage(); - // 获取Gitignore - this.getGitignore(); - // 获取开源许可证 - this.getLicenses(); //判断是否为删除新建项目失败后返回,并执行对应逻辑 this.isDeleteProjectBack(); } @@ -289,7 +281,8 @@ class Index extends Component { let second = first.split('.')[0]; if(!second)return; this.props.form.setFieldsValue({ - repository_name:second + repository_name:second, + name:second }) }else{ this.props.form.setFieldsValue({ @@ -306,6 +299,39 @@ class Index extends Component { }) } + showCateFunc =(e)=>{ + const { CategoryList } = this.state; + this.setState({categoreFlag:e.target.checked}); + // 获取项目类别 + if(e.target.checked && (!CategoryList || (CategoryList && CategoryList.length===0))){ + this.getCategory(); + } + } + showLanguageFunc =(e)=>{ + const { LanguageList } = this.state; + this.setState({languageFlag:e.target.checked}); + // 获取项目语言 + if(e.target.checked && (!LanguageList || (LanguageList && LanguageList.length===0))){ + this.getLanguage(); + } + } + showIgnoreFunc =(e)=>{ + const { GitignoreList } = this.state; + this.setState({ignoreFlag:e.target.checked}) + if(e.target.checked && (!GitignoreList || (GitignoreList && GitignoreList.length===0))){ + // 获取Gitignore + this.getGitignore(); + } + } + showLicenseFunc =(e)=>{ + const { LicensesList } = this.state; + this.setState({licenseFlag:e.target.checked}) + if(e.target.checked && (!LicensesList || (LicensesList && LicensesList.length===0))){ + // 获取开源许可证 + this.getLicenses(); + } + } + render() { const { getFieldDecorator } = this.props.form; // 项目类型:deposit-托管项目,mirror-镜像项目 @@ -471,7 +497,7 @@ class Index extends Component { className="privatePart" > {getFieldDecorator('ignoreFlag')( - this.setState({ignoreFlag:e.target.checked})}>.gitignore + this.showIgnoreFunc(e)}>.gitignore )} { ignoreFlag && @@ -498,7 +524,7 @@ class Index extends Component { className="privatePart" > {getFieldDecorator('licenseFlag')( - this.setState({licenseFlag:e.target.checked})}>开源许可证 + this.showLicenseFunc(e)}>开源许可证 )} { licenseFlag && @@ -545,7 +571,7 @@ class Index extends Component { className="privatePart" > {getFieldDecorator('categoreFlag')( - this.setState({categoreFlag:e.target.checked})}>项目类别 + this.showCateFunc(e)}>项目类别 )} {categoreFlag && @@ -574,7 +600,7 @@ class Index extends Component { className="privatePart" > {getFieldDecorator('languageFlag')( - this.setState({languageFlag:e.target.checked})}>项目语言 + this.showLanguageFunc(e)}>项目语言 )} {languageFlag && diff --git a/src/forge/Newfile/Index.js b/src/forge/Newfile/Index.js index 953f50720..31ef58656 100644 --- a/src/forge/Newfile/Index.js +++ b/src/forge/Newfile/Index.js @@ -10,7 +10,8 @@ class Index extends Component { this.state = { editorValue: "", filename: "", - language: undefined + language: undefined, + checkName:false }; } @@ -26,16 +27,43 @@ class Index extends Component { }; select_language = (e) => { - console.log(e) this.setState({ language: e }) } + checkFileName=(e)=>{ + let value = (e.target.value); + //\需要单独判断 + const str = '!!@/::"“”<《》>||??%'; + let reg = /\\/g; + if(reg.test(value)){ + this.setState({ + checkName:true + }) + }else{ + for(var i=0;i -1){ + this.setState({ + checkName:true + }) + return; + }else{ + this.setState({ + checkName:false + }) + continue; + } + } + } + + } + render() { const { pathname } = this.props.location; - const { filename, language } = this.state; + const { filename, language , checkName } = this.state; const urlroot = pathname.split("newfile")[1]; const file_path = `${urlroot}/${filename}`; const { projectDetail } = this.props; @@ -47,15 +75,17 @@ class Index extends Component { 新建文件

    -
    +
    diff --git a/src/forge/Newfile/UserSubmitComponent.js b/src/forge/Newfile/UserSubmitComponent.js index aa4bba6e9..08cac8d69 100644 --- a/src/forge/Newfile/UserSubmitComponent.js +++ b/src/forge/Newfile/UserSubmitComponent.js @@ -3,23 +3,11 @@ import { getImageUrl } from "educoder"; import { Form, Input, Button, Radio, Icon, Spin } from "antd"; import { Link } from "react-router-dom"; import "./index.css"; +import { turnbar , returnbar } from 'educoder'; import axios from "axios"; const TextArea = Input.TextArea; - -function turnbar(str){ - if(str && str.length>0 && str.indexOf("/")>-1){ - return str.replaceAll('/','%2F'); - } - return str; -} -function returnbar(str){ - if(str && str.length>0 && str.indexOf("%2F")>-1){ - return str.replaceAll('%2F','/'); - } - return str; -} class UserSubmitComponent extends Component { constructor(props) { super(props); @@ -63,13 +51,13 @@ class UserSubmitComponent extends Component { // 提交变更 subMitFrom = () => { - const { filepath, content, editor_type } = this.props; + const { filepath, content, editor_type , checkName} = this.props; const { branch, projectsId , owner } = this.props.match.params; const { submitType, filename } = this.state; this.setState({ isSpin: true }); let path = editor_type === "upload" ? filepath : filepath.substr(1); this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { + if (!err && !checkName) { const url = `/${owner}/${projectsId}/create_file.json`; axios.post(url, { filepath: filename ? filename : path, @@ -103,13 +91,13 @@ class UserSubmitComponent extends Component { // 确认修改文件 UpdateFile = () => { this.setState({ isSpin: true }); - const { branch, detail, content , currentBranch } = this.props; + const { branch, detail, content , currentBranch ,checkName } = this.props; const { projectsId , owner } = this.props.match.params; const { submitType } = this.state; const url = `/${owner}/${projectsId}/update_file.json`; let b = currentBranch || branch; this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { + if (!err && !checkName) { axios .put(url, { filepath: detail.path, @@ -138,6 +126,30 @@ class UserSubmitComponent extends Component { }); }; + checkBranchName=(rule, value, callback)=>{ + if(!value){ + callback(); + } + if (value) { + const str = '^*/'; + let reg = /\\/g; + if(reg.test(value)){ + callback(分支名不能包含下列任何字符:^*\/); + }else{ + for(var i=0;i -1){ + callback(分支名不能包含下列任何字符:^*\/); + return; + }else{ + continue; + } + } + } + } + callback(); + } + render() { const { submitType, filename, isSpin } = this.state; const { getFieldDecorator } = this.props.form; @@ -223,6 +235,9 @@ class UserSubmitComponent extends Component { required: true, message: "请输入分支名称", }, + { + validator:this.checkBranchName + } ], })( .ant-input:last-child{ + border-color: red!important; + border-left-color: #d9d9d9!important; +} .editorBorder .editorBorderBox{ - border:1px solid #eee; + border:1px solid #d0d0d0; border-radius: 2px; + border-bottom: none; } .editorBorder .editorBorderSubmitBox{ padding:20px 0px!important; } +.editorBorderSubmitBox{ + border-top: 1px solid #d0d0d0; +} .userScrew{ margin:20px 0px; border:1px solid #f4f4f4; diff --git a/src/forge/Newfile/m_editor.js b/src/forge/Newfile/m_editor.js index 13d2ec466..58a79403e 100644 --- a/src/forge/Newfile/m_editor.js +++ b/src/forge/Newfile/m_editor.js @@ -1,6 +1,9 @@ import React, { Component } from "react"; -import Editor from "react-monaco-editor"; -// import {UnControlled as CodeMirror} from 'react-codemirror2' +import {UnControlled as CodeMirror} from 'react-codemirror2'; +import 'codemirror/addon/selection/active-line.js'; +import 'codemirror/mode/javascript/javascript.js'; +import 'codemirror/mode/clike/clike'; +import 'codemirror/mode/css/css'; import UserSubmitComponent from "./UserSubmitComponent"; @@ -12,6 +15,7 @@ class m_editor extends Component { super(props); this.state = { editorValue: this.props.content, + changeValue:this.props.content, prevHeight:0 }; } @@ -22,18 +26,18 @@ class m_editor extends Component { }) } } - changeEditor = (editorValue) => { + changeEditor = (editorValue,data) => { this.setState({ - editorValue, + changeValue:editorValue.getValue(), }); }; render() { - const { editorValue } = this.state; - const { readOnly, editorType, language , currentBranch , descName } = this.props; + const { editorValue , changeValue } = this.state; + const { readOnly, editorType, currentBranch , descName , checkName } = this.props; const editor_options = { lineNumbers: "on", - wordWrap: true, //强制换行 + lineWrapping: true, //强制换行 selectOnLineNumbers: true, lineHeight: 24, renderLineHighlight: "line", @@ -46,87 +50,33 @@ class m_editor extends Component { automaticLayout: true, // 自适应布局 overviewRulerBorder: false, // 不要滚动条的边框 scrollBeyondLastLine: false, // 取消代码后面一大段空白 + styleActiveLine:true,//光标代码高亮 minimap: { // 不要小地图 enabled: false, }, }; - - const handleEditorMount = (editor, monaco) => { - editor.onDidChangeModelDecorations(() => { - requestAnimationFrame(updateEditorHeight); // folding - }); - - const updateEditorHeight = () => { - const editorElement = editor.getDomNode(); - - if (!editorElement) { - return; - } - - const padding = 40; - - const lineHeight = editor.getOption( - monaco.editor.EditorOption.lineHeight - ); - - const lineCount = editor.getModel().getLineCount() || 1; - let height = - editor.getTopForLineNumber(lineCount + 1) + - lineHeight + - padding ; - - if(height<400){height = 400;} - - if (this.state.prevHeight !== height) { - this.setState({ - prevHeight:height - }) - // setPrevHeight(height); - editorElement.style.height = `${height}px`; - editor.layout(); - } - }; - - updateEditorHeight(); // typing - }; - - return (
    - - {/* */}
    {!readOnly && ( -
    +
    )} diff --git a/src/forge/Notice/Index.scss b/src/forge/Notice/Index.scss index b00e18a5a..ff43ac112 100644 --- a/src/forge/Notice/Index.scss +++ b/src/forge/Notice/Index.scss @@ -48,6 +48,7 @@ flex:1; p{ margin:0px; + max-width: 660px; } .notifyInfos{ margin-bottom: 8px; diff --git a/src/forge/Order/CopyDetail.js b/src/forge/Order/CopyDetail.js index 906de4be7..d1f628ed4 100644 --- a/src/forge/Order/CopyDetail.js +++ b/src/forge/Order/CopyDetail.js @@ -4,8 +4,6 @@ import OrderItem from './order_form' function CopyDetail(props){ - const operate = props.match.params.operate; - console.log(operate); return( ) diff --git a/src/forge/Order/Detail.js b/src/forge/Order/Detail.js index 4d1b47cfc..4453a7b5c 100644 --- a/src/forge/Order/Detail.js +++ b/src/forge/Order/Detail.js @@ -1,4 +1,4 @@ -import React, { Component } from "react"; +import React, { Component, useRef } from "react"; import { Link } from "react-router-dom"; import axios from "axios"; @@ -7,6 +7,7 @@ import { Form, Popconfirm, Tag, Spin } from "antd"; import Attachments from "../Upload/attachment"; import RenderHtml from "../../components/render-html"; import Comments from "../comments/comments"; +import Claims from "../claims/claims" import "./order.css"; class Detail extends Component { @@ -123,22 +124,6 @@ class Detail extends Component { //复制 copydetail = () => { const { projectsId, orderId, owner } = this.props.match.params; - // const url = `/${owner}/${projectsId}/issues/${orderId}/copy.json`; - // axios - // .post(url, { - // project_id: projectsId, - // id: orderId, - // }) - // .then((result) => { - // if (result) { - // this.props.history.push( - // `/${owner}/${projectsId}/issues/${result.data.issue_id}/copyetail` - // ); - // } - // }) - // .catch((error) => { - // console.log(error); - // }); this.props.history.push( `/${owner}/${projectsId}/issues/${orderId}/copyetail` ); @@ -188,6 +173,15 @@ class Detail extends Component { return ; }; + + bindCommentRef = (commentRef) => { + this.childComment = commentRef; + } + + refreshFunc=()=> { + this.childComment && this.childComment.getjournalslist(); + } + render() { const { projectsId, orderId, owner } = this.props.match.params; const { data, isSpins } = this.state; @@ -252,7 +246,7 @@ class Detail extends Component { 添加于 {data && data.created_at} {data && data.user_permission ? ( - +
    复制 @@ -272,7 +266,7 @@ class Detail extends Component { 编辑 @@ -307,14 +301,19 @@ class Detail extends Component { order_id={orderId} showNotification={this.props.showNotification} {...this.props} + bindCommentRef={this.bindCommentRef} />
    +
    + +
    +

    负责人: - {data && data.assign_user_name ? data.assign_user_name : "--"} + {data && data.assign_user_name ? {data.assign_user_name} : "--"}

    @@ -336,7 +335,7 @@ class Detail extends Component {

    里程碑: - {data && data.version ? data.version : "--"} + {data && data.version ? {data.version} : "--"}

    @@ -346,7 +345,7 @@ class Detail extends Component {

    - 分类: + 类型: {data && data.tracker ? data.tracker : "--"}

    diff --git a/src/forge/Order/MilepostDetail.js b/src/forge/Order/MilepostDetail.js index 0f5d191e0..809051f7b 100644 --- a/src/forge/Order/MilepostDetail.js +++ b/src/forge/Order/MilepostDetail.js @@ -46,7 +46,8 @@ class MilepostDetail extends Component { assigned_to_ids: '负责人', status_ids: "状态", done_ratios: '完成度', - paix: '排序' + paix: '排序', + issueFlag:true } } @@ -54,6 +55,20 @@ class MilepostDetail extends Component { this.getSelectList(); const { page } = this.state; this.getIssueList(page); + // + } + + componentDidUpdate=(prevProps)=>{ + const prebannerList = prevProps && prevProps.bannerList; + const bannerList = this.props && this.props.bannerList; + if(prebannerList !== bannerList){ + if(bannerList && bannerList.length>0){ + let i = bannerList.filter(i=>i.menu_name === "issues"); + this.setState({ + issueFlag:i && i.length === 0 ? false :true + }) + } + } } getSelectList = () => { @@ -209,9 +224,9 @@ class MilepostDetail extends Component { render() { - const { issue_chosen, issues, limit, page, search_count, data, isSpin , status_type } = this.state; + const { issue_chosen, issues, limit, page, search_count, data, isSpin , status_type , issueFlag } = this.state; const { projectsId, meilid ,owner} = this.props.match.params; - + const { current_user , showLoginDialog , projectDetail } = this.props; const menu = (

    this.getOption(e)}> 最新创建 @@ -236,11 +251,21 @@ class MilepostDetail extends Component { 暂无截止时间 } - {data && data.percent && data.percent.toFixed(2)}%完成 + {data && (data.percent || data.percent===0) ? {data.percent > 0 ? data.percent.toFixed(2):data.percent}%完成 :"" }
    - 编辑里程碑 - {this.props.history.push(`/${owner}/${projectsId}/issues/${meilid}/new`)}} className="topWrapper_btn">创建易修 + { + (current_user && current_user.login) && ( projectDetail && projectDetail.permission && projectDetail.permission !== "Reporter") ? + 编辑里程碑 + :"" + } + { + issueFlag ? (current_user && current_user.login ? + {this.props.history.push(`/${owner}/${projectsId}/issues/${meilid}/new`)}} className="topWrapper_btn">创建疑修 + : + 创建疑修 + ):"" + }
    @@ -312,7 +337,7 @@ class MilepostDetail extends Component {
    { search_count > limit? -
    +
    :"" } diff --git a/src/forge/Order/New.js b/src/forge/Order/New.js index f9562a7d0..691b3ad54 100644 --- a/src/forge/Order/New.js +++ b/src/forge/Order/New.js @@ -2,9 +2,23 @@ import React, { Component } from "react"; import OrderForm from './order_form' class New extends Component { + + constructor(props){ + super(props); + this.state = { + type : undefined, + } + } + + componentDidMount = () => { + const searchParams = new URLSearchParams(this.props.location.search.substring(1)); + this.setState({ + type : searchParams.get("type"), + }) + } render() { return ( - + ) } } diff --git a/src/forge/Order/OrderItem.js b/src/forge/Order/OrderItem.js index 081788641..4455d7bad 100644 --- a/src/forge/Order/OrderItem.js +++ b/src/forge/Order/OrderItem.js @@ -49,10 +49,10 @@ class OrderItem extends Component { return ( item &&
    - {current_user && current_user.login && checkbox} + {(current_user && current_user.login) && checkbox}

    - {item.name} + {item.name} {TagInfo(item.priority,"mr10")}

    @@ -94,7 +94,7 @@ class OrderItem extends Component { user_admin_or_member ?

    - +
    @@ -102,7 +102,7 @@ class OrderItem extends Component { this.deletedetail(item.id)} diff --git a/src/forge/Order/UpdateDetail.js b/src/forge/Order/UpdateDetail.js index 0bf4f0f13..06fae4d1a 100644 --- a/src/forge/Order/UpdateDetail.js +++ b/src/forge/Order/UpdateDetail.js @@ -4,6 +4,7 @@ import OrderForm from './order_form' function CopyDetail(props){ const operateName = props.match.params.operateName; + console.log('operateName:'+operateName); return( ) diff --git a/src/forge/Order/index.scss b/src/forge/Order/index.scss index fc88d54d7..124c1fdb4 100644 --- a/src/forge/Order/index.scss +++ b/src/forge/Order/index.scss @@ -49,16 +49,6 @@ justify-content: center } } -// .statusTag{ -// display: block; -// height: 24px; -// line-height: 24px; -// border-radius: 4px; -// padding:0px 12px; -// color: #fff; -// margin:3px 0px 0px 10px; -// } - .updateBtn{ display: block; width:60px; diff --git a/src/forge/Order/newMilepost.js b/src/forge/Order/newMilepost.js index b7d1102dd..789f8a11c 100644 --- a/src/forge/Order/newMilepost.js +++ b/src/forge/Order/newMilepost.js @@ -185,6 +185,7 @@ class NewMilepost extends Component { size="small" dropdownMatchSelectWidth={false} value={String(month)} + style={{ width: 75 }} onChange={selectedMonth => { const newValue = value.clone(); newValue.month(parseInt(selectedMonth, 10)); diff --git a/src/forge/Order/order.css b/src/forge/Order/order.css index 0abd116f2..40adc855b 100644 --- a/src/forge/Order/order.css +++ b/src/forge/Order/order.css @@ -232,6 +232,9 @@ border-bottom: 1px solid #eee; padding: 16px 0px 16px 20px; } +.issueItem:last-child{ + border-bottom: none; +} .issueNo { padding: 0px 5px; border-radius: 4px; @@ -570,6 +573,9 @@ a.issue-type-button.active:hover { .attachment-list-a { color: rgba(0, 0, 0, 0.65) !important; } +.attachment-list-a>span{ + word-break: break-all; +} .btp1 { border-top: 1px solid #f4f4f4; } @@ -692,7 +698,7 @@ a.issue-type-button.active:hover { .issue-edit-form-right{margin-bottom: 0 !important;} .plr10{padding: 0 10px;} .issue-form-index .editormd-toolbar{position: absolute !important;} -.list-right-item-padding{padding: 20px 35px 10px 35px;} +.list-right-item-padding{padding: 20px 35px 10px 35px;margin-bottom: 20px;} .tagColor { display: inline-block; width: 28px; diff --git a/src/forge/Order/order.js b/src/forge/Order/order.js index 7275c759a..f698f3beb 100644 --- a/src/forge/Order/order.js +++ b/src/forge/Order/order.js @@ -6,7 +6,7 @@ import moment from 'moment'; import NoneData from "../Nodata"; import OrderItem from "./OrderItem"; -import CheckProfile from '../Component/ProfileModal/Profile'; +import cookie from 'react-cookies'; import axios from "axios"; @@ -75,11 +75,26 @@ class order extends Component { }; } + + + componentDidMount = () => { - this.getSelectList(); - this.getIssueList('1'); + const datas = cookie.load('states'); + let states = datas === "undefined" ? undefined : datas; + if(states){ + this.setState({ + ...states + },()=>{ + this.getSelectList(); + this.getIssueList(states.status_type); + }) + }else{ + this.getSelectList(); + this.getIssueList('1'); + } }; + getSelectList = () => { this.setState({ isSpin: true @@ -119,7 +134,8 @@ class order extends Component { }) .then((result) => { if (result) { - const issues = result.data.issues + const issues = result.data.issues; + this.saveCookies(status_type); this.setState({ data: result.data, issues: issues, @@ -127,7 +143,8 @@ class order extends Component { isSpin: false, allValue: issues && issues.length > 0 && issues.map((item) => { return (item.id) - }) + }), + status_type }); } }) @@ -136,6 +153,36 @@ class order extends Component { }); }; + saveCookies=(status_type)=>{ + const { projectsId, owner } = this.props.match.params; + const { + select_params, + issue_tag_ids,//标记 + tracker_ids,//类型 + author_ids,//发布人 + assigned_to_ids,//负责人 + author_id,//发布人(用来区分选中的是搜索结果、指派给我、我的发布) + assigned_to_id,//负责人(用来区分选中的是搜索结果、指派给我、我的发布) + fixed_version_ids,//里程碑 + status_ids,//状态 + done_ratios,//完成度 + paix,//排序 + update_author_ids,//更换负责人 + update_fixed_version_idsx,//更换里程碑 + update_status_ids,//修改状态 + begin, + end, + search + } = this.state; + const d = {select_params,assigned_to_ids,status_type,issue_tag_ids,tracker_ids,author_id,assigned_to_id, + author_ids,fixed_version_ids,status_ids,done_ratios,paix,update_author_ids,update_fixed_version_idsx,update_status_ids, + begin,end,search + }; + + let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000); + cookie.save('states', {...d},{ expires: inFifteenMinutes,path:`/` }); + } + getMenu = (e, id, name) => { this.setState({ isSpin: true, @@ -151,7 +198,7 @@ class order extends Component { paix: "最早创建", }); } - this.state.select_params.order_name = e.key; + // this.state.select_params.order_name = e.key; } else if (key_name[0] === "updated_on") { if (e.item.props.value === "desc") { this.setState({ @@ -163,11 +210,18 @@ class order extends Component { }); } } - this.state.select_params.order_name = key_name[0]; - this.state.select_params.order_type = e.item.props.value; - this.state.select_params.page = 1; - const { status_type } = this.state; - this.getIssueList(status_type); + const { select_params } = this.state; + this.setState({ + select_params:{ + ...select_params, + order_name:key_name[0], + order_type:e.item.props.value, + page:1 + } + },()=>{ + const { status_type } = this.state; + this.getIssueList(status_type); + }) }; getOption = (e, id, name, toGet) => { @@ -192,11 +246,12 @@ class order extends Component { select_params, author_id, assigned_to_id + },()=>{ + if (!toGet) { + const { status_type } = this.state; + this.getIssueList(status_type); + } }); - if (!toGet) { - const { status_type } = this.state; - this.getIssueList(status_type); - } }; renderMenu = (array, name, id, toGet) => { @@ -226,15 +281,16 @@ class order extends Component { // 翻页 ChangePage = (page) => { + window.scrollTo(0,0); + const { status_type } = this.state; this.setState({ isSpin: true, checkedValue: [], - all: false + all: false, + },()=>{ + this.state.select_params.page=page; + this.getIssueList(status_type); }); - - const { status_type } = this.state; - this.state.select_params.page = page; - this.getIssueList(status_type); }; // 搜索 @@ -245,18 +301,31 @@ class order extends Component { checkedValue:[], all:undefined }); - const { status_type } = this.state; + const { status_type , select_params } = this.state; - this.state.select_params.search = value; - this.state.select_params.page = 1; - this.getIssueList(status_type); + this.setState({ + select_params:{ + ...select_params, + search:value, + page:1 + } + },()=>{ + this.getIssueList(status_type); + }) }; openorder = (type) => { - this.setState({ + const s = { author_id: undefined, assigned_to_id: undefined, + page:1, + limit:15 + } + this.setState({ status_type: type, + select_params:s, + author_id: undefined, + assigned_to_id: undefined, issue_tag_ids: "标记", tracker_ids: "类型", author_ids: "发布人", @@ -264,25 +333,24 @@ class order extends Component { status_ids: "状态", done_ratios: "完成度", fixed_version_ids:"里程碑", - paix: "排序", checkedValue:[], - all:undefined + all:undefined, + paix: "排序", + },()=>{ + this.getIssueList(type); }); - this.state.select_params.page = 1; - this.state.select_params.limit = 15; - this.getIssueList(type); }; // 筛选:全部、指派给我、由我创建 ChangeAssign = (type) => { const { current_user } = this.props; this.setState({ - isSpin: true, + isSpin: true }); if (type) { if (!current_user) { this.setState({ - isSpin: false, + isSpin: false }); return; } @@ -316,7 +384,7 @@ class order extends Component { this.state.select_params.author_id = undefined; } const { status_type } = this.state; - + this.state.select_params.page = 1; this.getIssueList(status_type); }; @@ -342,22 +410,26 @@ class order extends Component { console.log(error); }); }; - - islogin=()=>{ - this.props.showLoginDialog(); - } - renderNew =()=>{ + + createIssue = () => { const { data } = this.state; + const { projectsId , owner } = this.props.match.params; if(data && data.user_admin_or_member){ - const { projectsId , owner } = this.props.match.params; - return( - {window.open(`/${owner}/${projectsId}/issues/new`,'_blank')}}> - + 创建易修 - - ) + this.props.history.push(`/${owner}/${projectsId}/issues/new`,'_blank'); + }else{ + this.props.showLoginDialog(`/${owner}/${projectsId}/issues/new`); } } + renderNew =()=>{ + return( + // {createIssue()}}> + // + 创建疑修 + // + + 创建疑修 + ) + } + // 修改开始时间 changeBeginTime = (data, value) => { const { status_type } = this.state; @@ -490,6 +562,49 @@ class order extends Component { } }) } + + clearSelectParams=()=>{ + this.setState({ + status_type: "1", // 默认显示开启中的 + issue_tag_ids: "标记", + tracker_ids: "类型", + author_ids: "发布人", + assigned_to_ids: "负责人", + fixed_version_ids: "里程碑", + status_ids: "状态", + done_ratios: "完成度", + paix: "排序", + update_author_ids: "更换负责人", + update_fixed_version_ids: '更换里程碑', + update_status_ids: "修改状态", + begin: '', + end: '', + checkedValue: [], + allValue: [], + all: false, + search:undefined, + select_params: { + assigned_to_id: undefined, // 负责人 + author_id: undefined, // 发布人 + issue_tag_id: undefined, // 标记 + tracker_id: undefined, //类型 + done_ratio: undefined, // 完成度 + status_id: undefined, // 优先级 + fixed_version_id: undefined,//里程碑 + order_name: undefined, + order_type: undefined, + search: undefined, + update_author_id: undefined, + update_fixed_version_id: undefined, + update_status_id: undefined, + page: 1, + limit: 15, + } + },()=>{ + this.getIssueList("1"); + }) + } + menu =()=> ( this.getMenu(e)}> @@ -519,9 +634,8 @@ class order extends Component { isSpin, status_type, select_params, - begin, end, checkedValue, all + begin, end, checkedValue, all,search } = this.state; - return (
    @@ -552,13 +666,17 @@ class order extends Component {
    {this.setState({search:e.target.value})}} />
    + 清除筛选条件
    { - ((current_user && current_user.login) && (data && data.user_admin_or_member)) ? + ((current_user && current_user.login) && (data && data.user_operate_issue)) ? : "" } @@ -604,7 +722,7 @@ class order extends Component { display: current_user && current_user.login === "" ? "none" : "flex", }} - className={author_id ? "active" : ""} + className={ author_id ? "active" : ""} onClick={() => this.ChangeAssign(2)} > @@ -818,14 +936,14 @@ class order extends Component { : ""} + checkbox={current_user &&(data && data.user_operate_issue) ? : ""} search_count={search_count} page={select_params.page} limit={select_params.limit} {...this.props} {...this.state} deletedetail={this.deletedetail} - user_admin_or_member={data && data.user_admin_or_member} + user_admin_or_member={data && data.user_operate_issue} > ) })} @@ -834,10 +952,10 @@ class order extends Component { )} { search_count > select_params.limit ? -
    +
    { @@ -47,6 +48,29 @@ class order_form extends Component { componentDidMount = () => { this.getSelectList(); }; + + copyIssueAtWhoInit = (description) =>{ + if (description.indexOf("@") !== -1){ + this.setState({isSpin: true}); + const { projectsId, owner } = this.props.match.params; + axios.get(`/${owner}/${projectsId}/members.json`).then(response => { + this.setState({ isSpin: false}); + if (response.data.total_count !== 0) { + const allUser = response.data.users; + if (allUser && allUser.length !== 0 && description && description.indexOf("@") !== -1) { + const list = new Set(); + allUser.map(item => { + if (description.indexOf(`[@${item.username}](/${item.login})`) !== -1) { + list.add(item.login); + } + }) + this.setState({ atWhoLoginList: Array.from(list) }); + } + } + }) + } + } + get_detail = () => { this.setState({ isSpin:true @@ -57,10 +81,10 @@ class order_form extends Component { if (result) { let data ={ branch_name: result.data.branch_name, - issue_tag_ids: [ + issue_tag_ids: result.data.issue_tags && result.data.issue_tags[0].id ? - String(result.data.issue_tags[0].id) : "", - ], + String(result.data.issue_tags[0].id) : "" + , fixed_version_id: result.data.fixed_version_id ? String(result.data.fixed_version_id) : "", tracker_id: result.data.tracker_id ? String(result.data.tracker_id) : "", issue_type: result.data.issue_type, @@ -77,6 +101,9 @@ class order_form extends Component { due_date: result.data.due_date, subject: result.data.subject, } + if (this.props.form_type === "copy" && result.data.description){ + this.copyIssueAtWhoInit(result.data.description); + } this.props.form.setFieldsValue({ ...data }); this.setState({ ...data }); } @@ -99,7 +126,22 @@ class order_form extends Component { isSpin:false }); - if(this.props.form_type !== "new"){ + if(this.props.form_type === "feedback"){ + let data ={ + //指定指派成员,类型:缺陷,优先度:正常,issue状态:新增 + tracker_id: "1", + assigned_to_id: window.location.host === "www.gitlink.org.cn" ? "86107":"36480", + priority_id: "2", + status_id: "1", + description:"####问题描述\n\n\n####重现问题步骤\n\n\n####截图\n\n\n####建议解决办法\n", + } + this.setState({ ...data }); + this.props.form.setFieldsValue({ + ...this.state, + fixed_version_id: milepostId || "" + }); + + }else if(this.props.form_type !== "new"){ this.get_detail(); }else{ this.props.form.setFieldsValue({ @@ -127,11 +169,12 @@ class order_form extends Component { // 创建 handleSubmit = () => { - this.setState({ - isSpin: true, - }); + this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { + this.setState({ + isSpin: true, + }); const { form_type } = this.props; const { projectsId , orderId , owner } = this.props.match.params; @@ -152,7 +195,7 @@ class order_form extends Component { if (values.issue_tag_ids.length > 0) { values.issue_tag_ids = [values.issue_tag_ids]; } - const { description, start_date, due_date, issue_type } = this.state; + const { description, start_date, due_date, issue_type , atWhoLoginList } = this.state; if (form_type !== "edit") { const url = `/${owner}/${projectsId}/issues.json`; axios.post(url, { @@ -162,6 +205,7 @@ class order_form extends Component { start_date: start_date, due_date: due_date, issue_type: issue_type, + receivers_login:atWhoLoginList, }).then((result) => { if (result && result.data.id) { this.props.showNotification("任务创建成功!"); @@ -188,6 +232,7 @@ class order_form extends Component { due_date: due_date, issue_type: issue_type, ...values, + receivers_login:atWhoLoginList, }).then((result) => { if (result) { this.props.history.push(`/${owner}/${projectsId}/issues/${orderId}`); @@ -203,9 +248,6 @@ class order_form extends Component { }); } } - this.setState({ - isSpin: false, - }); }); }; @@ -221,6 +263,16 @@ class order_form extends Component { description: value, }); }; + + //issue中at谁列表(存储:login) + changeAtWhoLoginList = (loginList) =>{ + let list = new Set(this.state.atWhoLoginList); + loginList.map(item => list.add(item)); + this.setState({ + atWhoLoginList: Array.from(list), + }); + }; + // 修改开始时间 changeBeginTime = (start_date, value) => { this.setState({ @@ -310,14 +362,14 @@ class order_form extends Component {

    - {form_type === "new" ? "新建" :( form_type === "copy" ? "复制" : "编辑")}易修 + {form_type === "edit" ? "编辑" :( form_type === "copy" ? "复制" : "新建")}疑修

    {getFieldDecorator("subject", { rules: [ { required: true, - message: "请填写易修标题", + message: "请填写疑修标题", }, ] })()} @@ -329,6 +381,10 @@ class order_form extends Component { mdID={"order-new-description"} initValue={description} onChange={this.onContentChange} + isCanAtme = {true} + changeAtWhoLoginList = {this.changeAtWhoLoginList} + owner = {owner} + projectsId = {projectsId} >
    {get_attachments && get_attachments.length > 0 ? ( @@ -363,14 +419,14 @@ class order_form extends Component { onClick={this.handleSubmit} > - {form_type === "new" ? "创建" : "提交"} + {form_type === "new" || form_type === "feedback" ? "创建" : "提交"} diff --git a/src/forge/SecuritySetting/Index.jsx b/src/forge/SecuritySetting/Index.jsx index d9fa1bfac..1cfef0c34 100644 --- a/src/forge/SecuritySetting/Index.jsx +++ b/src/forge/SecuritySetting/Index.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { Route, Switch } from "react-router-dom"; import { withRouter } from "react-router"; @@ -11,8 +11,10 @@ import Loading from "../../Loading"; import { Box , Gap , LongWidth } from '../Component/layout'; import { getImageUrl } from 'educoder'; import { Link } from 'react-router-dom'; +import Avatar from '../users/Avatar/Index'; import './Index.scss'; +import { useEffect } from "react"; const MyNoticeIndex = Loadable({ loader: () => import("./notice/myNotice/Index"), @@ -32,6 +34,10 @@ const Profile = Loadable({ loader: () => import("../users/Material/Index"), loading: Loading, }); +const Password = Loadable({ + loader: () => import("../users/Material/Index"), + loading: Loading, +}); const SSHIndex = Loadable({ loader: () => import("./sub/SSH"), loading: Loading, @@ -43,22 +49,48 @@ const PrivateLetter = Loadable({ }); function Index(props){ - const { current_user,mygetHelmetapi } = props; + const { current_user,mygetHelmetapi , checkIfLogin } = props; const { pathname } = props.location; const notice_url = mygetHelmetapi && mygetHelmetapi.common && mygetHelmetapi.common.notice; + const [ avatarVisible , setAvatarVisible ] = useState(false); + + useEffect(()=>{ + if(checkIfLogin() === false){ + props.history.push('/login'); + } + },[]) + + + function onCancelAvatar(){ + setAvatarVisible(false); + const { resetUserInfo } = props; + resetUserInfo && resetUserInfo(); + } return(
    + { + avatarVisible && + + }
    - +
    + + setAvatarVisible(true)}>修改头像 +
    {current_user && current_user.username}
    • 个人信息
    • -1 ?"active":""}>基本资料
    • +
    • -1 ?"active":""}>密码管理
    {notice_url &&
    • 消息通知
    • @@ -103,6 +135,12 @@ function Index(props){ )} > + ( + + )} + > ( diff --git a/src/forge/SecuritySetting/Index.scss b/src/forge/SecuritySetting/Index.scss index ede91c86d..7d2998765 100644 --- a/src/forge/SecuritySetting/Index.scss +++ b/src/forge/SecuritySetting/Index.scss @@ -193,4 +193,31 @@ } .blue-Purple{ color: #466AFF !important; +} + +.userHeadPhoto{ + width: 48px; + position: relative; + margin:0px auto; + .userUpdateBox{ + font-size: 11px!important; + width: 100%; + height: 100%; + line-height: 48px; + text-align: center; + position: absolute; + left: 0px; + top:0px; + background-color: rgba(0, 0, 0, 0.2); + display: none!important; + color: white!important; + transition: 1s; + border-radius: 50%; + cursor: pointer; + } + &:hover{ + .userUpdateBox{ + display: block!important; + } + } } \ No newline at end of file diff --git a/src/forge/SecuritySetting/notice/myNotice/Index.jsx b/src/forge/SecuritySetting/notice/myNotice/Index.jsx index 226606919..1a8ddf9db 100644 --- a/src/forge/SecuritySetting/notice/myNotice/Index.jsx +++ b/src/forge/SecuritySetting/notice/myNotice/Index.jsx @@ -1,12 +1,13 @@ import React, { useState, useEffect } from 'react'; -import { Link } from 'react-router-dom'; import axios from 'axios'; -import { Badge, Button, Checkbox, Menu, Pagination } from 'antd'; +import { Badge, Checkbox, Menu, Pagination } from 'antd'; import DelModal from '../../../Component/ModalFun'; import NoneData from '../../../Nodata.js'; import { noticeSourceType } from '../../../common/static'; import './Index.scss'; -import '../manager/Index.scss' +import '../manager/Index.scss'; +import { getImageUrl } from 'educoder'; + function MyNotice(props) { let { current_user, resetUserInfo, location, mygetHelmetapi, history}= props; @@ -17,7 +18,7 @@ function MyNotice(props) { const [selectedNum, setSelectedNum] = useState(0);//@我批量删除选择消息条数 const [isBatchDelete, setIsBatchDelete] = useState(false);//@我是否批量删除 const [batchDeleteCheckedAll, setBatchDeleteCheckAll] = useState(false);//@我批量删除--全选 - + const [messageType, setMessageType] = useState(undefined); const [noticeUnreadCount, setNoticeUnreadCount] = useState();//未读系统通知数量 // const [letterUnreadCount, setLetterUnreadCount] = useState(0);//未读私信数量 const [atUnreadCount, setAtUnreadCount] = useState();//未读@我数量 @@ -65,6 +66,7 @@ function MyNotice(props) { setAtUnreadCount(response.data.unread_atme); setMessageList(response.data.messages); setMessTotalCount(response.data.total_count); + setMessageType(response.data.type); } }); } @@ -203,7 +205,46 @@ function MyNotice(props) {
    } - {messageList && messageList.map(item => { + {/* 系统消息 */} + {messageType === "notification" && messageList && messageList.map(item =>{ + return ( +
    +
    + {item.status === 1 ? : } + + {turnToMess(item)}} dangerouslySetInnerHTML={{__html: item.content}}> +
    +
    + {item.time_ago} + {item.status === 1 && readNotice([item.id])}>标记为已读} +
    +
    + ) + })} + + {/* @我消息 */} + {messageType === "atme" && messageList && messageList.map(item =>{ + return ( +
    +
    + + {item.sender && {window.open(`/${item.sender && item.sender.login}`);}}/>} +
    {turnToMess(item)}}> + {item.status === 1 ? : } + {item.sender && } +
    +
    +
    + {item.time_ago} + {!isBatchDelete && item.status === 1 && readNotice([item.id])}>标记为已读}    + {!isBatchDelete && deleteNotice([item.id])}>删除} +
    +
    + ) + })} + + {false && messageList && messageList.map(item => { + console.log('item',item); // 系统消息 if (noticeType === "0") { // 消息类别 @@ -229,7 +270,7 @@ function MyNotice(props) { {item.sender && {window.open(`/${item.sender && item.sender.login}`);}}/>}
    {turnToMess(item)}}> {item.status === 1 ? : } - {item.sender && " + item.sender.name+ " "+ item.content +" 中@我"}}>} + {item.sender && " + item.sender.name+ " "+ item.content}}>}
    diff --git a/src/forge/SecuritySetting/notice/myNotice/Index.scss b/src/forge/SecuritySetting/notice/myNotice/Index.scss index 8eab84c0c..7422fb5aa 100644 --- a/src/forge/SecuritySetting/notice/myNotice/Index.scss +++ b/src/forge/SecuritySetting/notice/myNotice/Index.scss @@ -40,25 +40,8 @@ border-bottom: 0px solid #e8e8e8; } - button{ - padding:0 5px; - } + .but25{height: 32px; } } - -button { - color: #333333; - background: #FAFBFC; - border: 1px solid #D0D0D0; - border-radius: 4px; - height: 32px; -} -button:hover { - background: #F3F4F6; -} -button:active { - background: #EBECF0; -} - .deleteBut{ color: #DF0002; } diff --git a/src/forge/SecuritySetting/sub/SSH.jsx b/src/forge/SecuritySetting/sub/SSH.jsx index 2ca890ea2..baac12ac0 100644 --- a/src/forge/SecuritySetting/sub/SSH.jsx +++ b/src/forge/SecuritySetting/sub/SSH.jsx @@ -54,7 +54,7 @@ function SSH(props) {
    setVisible(false)} onSuccess={onSuccess}/> setVisibleDesc(false)} desc={content}/> -
    +
    SSH密钥
    diff --git a/src/forge/Settings/Collaborator.js b/src/forge/Settings/Collaborator.js index 0a50cae10..cca2520ae 100644 --- a/src/forge/Settings/Collaborator.js +++ b/src/forge/Settings/Collaborator.js @@ -8,15 +8,16 @@ import Group from './CollaboratorGroup'; function Collaborator(props){ const [ nav , setNav] = useState("1"); const [ newId , setNewId] = useState(undefined); + const [ newIdFlag , setNewIdFlag ] = useState(false); const [ addOperation , setAddOperation] = useState(true); const [ newGroupId , setNewGroupId] = useState(undefined); const {projectsId ,owner} = props.match.params; - const author = props && props.projectDetail && props.projectDetail.author; function getID(id){ setNewId(id); + setNewIdFlag(!newIdFlag); } function getGroupID(id){ setNewGroupId(id); @@ -47,7 +48,7 @@ function Collaborator(props){
    { nav === "1" ? - + : } diff --git a/src/forge/Settings/CollaboratorMember.jsx b/src/forge/Settings/CollaboratorMember.jsx index 447e3b262..0f407bf21 100644 --- a/src/forge/Settings/CollaboratorMember.jsx +++ b/src/forge/Settings/CollaboratorMember.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState , useImperativeHandle , forwardRef } from 'react'; import { Dropdown, Menu, Icon , Input , Spin , Table , Tooltip , Pagination , Popconfirm } from "antd"; import axios from 'axios'; import NoneData from "../Nodata"; @@ -12,7 +12,7 @@ const MENU_LIST = [ {id: "Developer",name: "开发者"}, {id: "Reporter",name: "报告者"} ]; -function CollaboratorMember({projectsId,owner,project_id,author,showNotification,newId}){ +function CollaboratorMember({projectsId,owner,project_id,author,showNotification,newId,flag}){ const [ roleName , setRoleName ] = useState(undefined); const [ search , setSearch ] = useState(undefined); const [ page , setPage ] = useState(1); @@ -20,11 +20,12 @@ function CollaboratorMember({projectsId,owner,project_id,author,showNotification const [ role , setRole ] = useState(undefined); const [ listData , setListData ] = useState(undefined); const [ total , setTotal ] = useState(0); + useEffect(()=>{ if(newId){ addCollaborator(newId); } - },[newId]) + },[flag]) // 增加协作者 function addCollaborator(id){ if(id){ @@ -276,4 +277,4 @@ function CollaboratorMember({projectsId,owner,project_id,author,showNotification ) } -export default CollaboratorMember; \ No newline at end of file +export default forwardRef(CollaboratorMember); \ No newline at end of file diff --git a/src/forge/Settings/Index.js b/src/forge/Settings/Index.js index fe546cdf4..a22f55abc 100644 --- a/src/forge/Settings/Index.js +++ b/src/forge/Settings/Index.js @@ -81,7 +81,7 @@ class Index extends Component {

    - Webhooks + 网络钩子

  • diff --git a/src/forge/Settings/Setting.js b/src/forge/Settings/Setting.js index 3fb8423eb..0ffb592ca 100644 --- a/src/forge/Settings/Setting.js +++ b/src/forge/Settings/Setting.js @@ -12,12 +12,12 @@ const { Option } = Select; const menu = [ {name:"主页",index:"home"}, {name:"代码库",index:"code"}, - {name:"易修 (Issue)",index:"issues"}, - {name:"合并请求",index:"pulls"}, - // {name:"Wiki",index:"wiki"}, - {name:"工作流(beta版)",index:"devops"}, + {name:"疑修 (Issue)",index:"issues"}, + {name:"合并请求 (PR)",index:"pulls"}, + {name:"引擎 (Engine)",index:"devops"}, // {name:"资源库",index:"resources"}, {name:"里程碑",index:"versions"}, + // {name:"维基 (Wiki)",index:"wiki"}, {name:"动态",index:"activity"}, ] class Setting extends Component { @@ -148,7 +148,7 @@ class Setting extends Component { update=(values)=>{ const { projectsId , owner } = this.props.match.params; - const { private_check } = this.state; + const { private_check , project_units } = this.state; const url = `/${owner}/${projectsId}.json`; axios.put(url, { name: values.project_name, @@ -165,6 +165,9 @@ class Setting extends Component { const { getDetail } = this.props; getDetail && getDetail(); } + if(project_units!==values.project_units){ + window.location.reload(); + } } this.setState({ loading:false @@ -181,7 +184,7 @@ class Setting extends Component { const { projectsId , owner } = this.props.match.params; const { projectName } = this.state; this.props.confirm({ - content: 该操作无法撤销!且将会一并删除相关的易修、合并请求、工作流、里程碑、动态等数据。
    是否确认删除 {owner}/{projectName}({projectsId})
    , + content: 该操作无法撤销!且将会一并删除相关的疑修、合并请求、工作流、里程碑、动态等数据。
    是否确认删除 {owner}/{projectName}({projectsId})
    , onOk: () => { const url = `/${owner}/${projectsId}.json`; axios.delete(url).then((result) => { @@ -269,6 +272,11 @@ class Setting extends Component { }, ], })()} + { + projectDetail && projectDetail.type && projectDetail.type !== 0 ? + 该项目导入于 {projectDetail.mirror_url} + : "" + }
    可见性 diff --git a/src/forge/Settings/Webhooks/Index.jsx b/src/forge/Settings/Webhooks/Index.jsx index 57df13b47..1cc171c47 100644 --- a/src/forge/Settings/Webhooks/Index.jsx +++ b/src/forge/Settings/Webhooks/Index.jsx @@ -76,10 +76,8 @@ function Index(props) { subTitle={`删除后未来事件将不会推送至此Webhook地址:${url}`} /> - - Webhooks - - + Webhooks(网络钩子) +

    每当特定事件(如push代码,合并请求被编辑)发生时,我们将通过webhook给您提供的远程URL发送post请求。您可以在我们的webhooks指南中了解更多信息

    diff --git a/src/forge/Settings/Webhooks/New.jsx b/src/forge/Settings/Webhooks/New.jsx index 22b3899d7..2fee3bf0e 100644 --- a/src/forge/Settings/Webhooks/New.jsx +++ b/src/forge/Settings/Webhooks/New.jsx @@ -177,12 +177,14 @@ function New({ form , match , showNotification , history }) { onSuccess={onSuccess} title="删除Webhook" content="您确定要删除此Webhook吗?" - subTitle={`删除后未来事件将不会推送至此Webhook地址:${data && data.url}`} + subTitle={`${data && data.url}`} /> - Webhooks - - {id ? "更新" : "添加"}Webhook + + Webhooks + + {id ? "更新" : "添加"}Webhook +

    当webhook被触发时,我们将向以下URL发送通知,包括已选择事件的详细信息。更多信息可查阅webhooks指南

    @@ -197,7 +199,7 @@ function New({ form , match , showNotification , history }) { } ] })( - + )} @@ -258,11 +260,11 @@ function New({ form , match , showNotification , history }) { */} 创建 - 创建分支或标记 + 创建分支或标签 删除 - 删除分支或标记 + 删除分支或标签

    合并请求事件

    @@ -287,10 +289,10 @@ function New({ form , match , showNotification , history }) { 合并请求标签 合并请求的标签被更新或清除 */} - + {/* 合并请求审查 合并请求被批准、拒绝或提出审查意见,审查人员的修改,审查线程已解决或未解决 - + */} {/* 合并请求被同步 合并请求被同步 diff --git a/src/forge/Settings/new_tags.js b/src/forge/Settings/new_tags.js index ed9269cbb..5c882f9cc 100644 --- a/src/forge/Settings/new_tags.js +++ b/src/forge/Settings/new_tags.js @@ -310,7 +310,7 @@ class NewTags extends Component { const columns = [ { title: "颜色代码", - width: "20%", + width: "25%", dataIndex: "color", render: (text, item) => ( @@ -445,7 +445,7 @@ class NewTags extends Component { message: "请填写标记名字", }, ], - })()} + })()} @@ -507,8 +507,8 @@ class NewTags extends Component { >
    +
    + + window.open('https://www.educoder.net', '_blank')}/> +
    + + {/* 大规模实训课程体系 */} +
    + +

    大规模实训课程体系

    +

    谢绝纸上谈兵,精心打造教学、标注、练平一体化的实战环境

    +
    + 实践课程 + 查看更多 +
    +
    +
    window.location.href ='https://www.educoder.net/paths/54'}> + +

    Java项目开发实战入门

    +
    + 10 + 121992 +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/paths/3702'}> + +

    基于TRUSTIE的软件工程实践教…

    +
    + 11 + 2250 +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/paths/85'}> + +

    Python零基础到精通

    +
    + 11 + 114131 +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/paths/936'}> + +

    计算机实验教学中心开放实验

    +
    + 5 + 135381 +
    +

    +
    +
    +
    + 实践项目 + 查看更多 +
    +
    +
    window.location.href = 'https://www.educoder.net/shixuns/zesqa3wi/challenges'}>
    +
    window.location.href = 'https://www.educoder.net/shixuns/ie6zxg7r/challenges'}>
    +
    window.location.href = 'https://www.educoder.net/shixuns/64xb9k2q/challenges'}>
    +
    +
    +
    window.location.href = 'https://www.educoder.net/shixuns/tb7hw62n/challenges'}>
    +
    window.location.href = 'https://www.educoder.net/shixuns/9vhkc6jf/challenges'}>
    +
    window.location.href = 'https://www.educoder.net/shixuns/5xcigsov/challenges'}>
    +
    +
    + + {/* 集成化班级协同空间 */} +
    + +
    +

    集成化班级协同空间

    +

    支持实验、作业、视频、考试、毕设等十余种线上线下管理工具

    +
    + 教学课堂 + 查看更多 +
    +
    +
    window.location.href = 'https://www.educoder.net/classrooms/7ckfx39w/announcement'}> +

    第四届中国软件开源创新大赛培训

    + +

    喻银凤

    +

    +
    +
    + 7241 +

    成员数

    +
    +
    + 18 +

    作业数

    +
    +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/classrooms/fwcka9or/announcement'}> +

    第三届全国高校绿色计算创新大赛培训

    + +

    实践教学

    +

    +
    +
    + 68824 +

    成员数

    +
    +
    + 9 +

    作业数

    +
    +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/classrooms/owftcsph/shixun_homework'}> +

    基于TRUSTIE的软件工程教学

    + +

    朱郑州

    +

    +
    +
    + 61 +

    成员数

    +
    +
    + 34 +

    作业数

    +
    +
    +

    +
    +
    window.location.href = 'https://www.educoder.net/classrooms/2029/announcement'}> +

    计算机程序设计(C语言)

    + +

    拓明福

    +

    +
    +
    + 79753 +

    成员数

    +
    +
    + 105 +

    作业数

    +
    +
    +

    +
    +
    +
    +
    + + {/* 多联盟共建开源竞赛 */} +
    + +
    +

    多联盟共建开源竞赛

    +

    聚焦开源定期开展有奖大型竞赛,让您的作品伴随您成长

    +
    + 在线竞赛 + 查看更多 +
    +
    window.location.href = 'https://www.educoder.net/competitions/index/gcc_2021_projects_type1'}> + +
    +

    第四届中国软件开源创新大赛——开源项目创新赛命题组

    +

    开源项目创新赛聚焦发起或参与开源项目创新开发,设计了命题组和自由组两个组别,其中命题组为参赛团队参与指定开源项目进行贡献。

    +

    竞赛时间:2021/03/31 — 2021/11/30

    +

    报名截至时间:2021/11/30 00:00:00

    +
    +
    +

    奖金

    +

    ¥ 335,000

    +
    +
    +
    window.location.href = 'https://www.educoder.net/competitions/index/gcc_2021_projects_type2'}> + +
    +

    第四届中国软件开源创新大赛——开源项目创新赛自由组

    +

    开源项目创新赛聚焦发起或参与开源项目创新开发,设计了命题和自由组两个组别,其中自由组为参赛团队将科研成果/论文算法开源到竞赛平台并进行持续创新。

    +

    竞赛时间:2021/03/31 — 2021/11/30

    +

    报名时间:2021/11/30 00:00:00

    +
    +
    +

    奖金

    +

    ¥ 235,000

    +
    +
    +
    window.location.href = 'https://www.educoder.net/competitions/index/gcc-courses-2021_type1'}> + +
    +

    第四届中国软件开源创新大赛——开源实践教学赛命题组

    +

    开源实践教学赛聚焦基于开源技术构建在线实践教学资源开展实践教学,设计了命题组和自由组两个组别,其中命题组要求围绕指定开源技术/平台构建符合MOOP规范的实践教学资源并开展实践教学。

    +

    竞赛时间:2021/03/31 — 2021/11/30

    +

    报名时间:2021/11/30 00:00:00

    +
    +
    +

    奖金

    +

    ¥ 335,000

    +
    +
    +
    window.location.href = 'https://www.educoder.net/competitions/index/gcc-courses-2021_type2'}> + +
    +

    第四届中国软件开源创新大赛——开源实践教学赛自由组

    +

    开源实践教学赛聚焦基于开源技术构建在线实践教学资源开展实践教学,设计了命题组和自由组两个组别,其中自由组不限技术/平台、基于实际教学需求构建符合MOOP规范的实践教学资源并开展实践教学。

    +

    竞赛时间:2021/03/31 — 2021/11/30

    +

    报名时间:2021/11/30 00:00:00

    +
    +
    +

    奖金

    +

    ¥ 335,000

    +
    +
    +
    +
    +
    + ) +} +export default TPMIndexHOC(Teaching); \ No newline at end of file diff --git a/src/forge/TeachingPractice/Teaching.scss b/src/forge/TeachingPractice/Teaching.scss new file mode 100644 index 000000000..71eff5057 --- /dev/null +++ b/src/forge/TeachingPractice/Teaching.scss @@ -0,0 +1,257 @@ +.teaching{ + font-family: PingFangSC-Medium, PingFang SC; + font-size: 16px; + color: #333333; + & .tea_title{ + font-size: 38px; + font-weight: bold; + color: #1E1E1E; + line-height: 53px; + margin-bottom: 20px !important; + } + .tea_small_title{ + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid rgba(153, 153, 153, 0.15); + margin: 30px 0; + &>span{ + color: #1E1E1E; + font-size: 20px; + font-weight: bold; + } + & a{ + font-size: 14px; + color: #466AFF; + &:hover{opacity: 0.8; } + } + } + & .tea_part1 .vertical:hover, .tea_part2 .vertical:hover, .tea_part3 .content:hover, .practice div, .tea_head>div div, .tea_head>img{ + cursor: pointer; + } + & .tea_part1>span{ + position: relative; + top: -100px; + } + & .tea_part2_bg>span, .tea_part3_bg>span{ + position: relative; + top: -50px; + } +} +.tea_head{ + display: flex; + justify-content: center; + align-items: center; + background-color: #F9FAFD; + padding: 30px 0 50px; + & div{ + display: flex; + flex-direction: column; + margin-right: 30px; + & .head_til1{ + background-image: url('./image/image20.svg'); + } + & .head_til2{ + background-image: url('./image/image21.svg'); + } + & .head_til3{ + background-image: url('./image/image22.svg'); + } + & div{ + width: 358px; + height: 118px; + line-height: 118px; + padding-left: 40px; + font-size: 18px; + font-weight: bold; + color: #000000; + } + } + & img{ + width: 750px; + height: 410px; + } +} +.tea_part1, .tea_part2, .tea_part3{ + width: 1200px; + margin: 0 auto; + display: flex; + flex-direction: column; + & p{ + margin: 0 auto; + } + & .content{ + display: flex; + justify-content: space-between; + } +} +.tea_part1{ + padding-top: 50px; + & .vertical{ + box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.07); + border-radius: 6px; + & img{ + width: 270px; + } + & p{ + font-weight: bold; + color: #000000; + line-height: 22px; + margin: 25px 0 -5px 20px; + } + & div{ + margin: 15px 0 20px 20px; + & i{margin-right: 5px;} + } + & .hover_bar{ + width: 98%; + height: 4px; + margin-left: 1% !important; + } + &:hover{ + box-shadow: 0px 0px 4px 5px rgba(0, 0, 0, 0.07); + & .hover_bar{background-color: #466AFF;} + } + } + & .practice{ + margin-bottom: 40px; + & div{ + &:hover{ + padding: 3px; + border-radius: 6px; + box-shadow: 0px 0px 8px 7px rgba(0, 0, 0, 0.08); + & img{ + width: 368px; + height: 217px; + } + } + & img{ + border-radius: 6px; + width: 375px; + height: 223px; + } + } + } +} +.tea_part2_bg{ + background: linear-gradient(180deg, #EDF4FF 0%, #EBEDF5 100%); + margin-top: 30px; + & .tea_part2{ + padding: 50px 0 100px; + & .vertical{ + width: 275px; + background: linear-gradient(180deg, #F0F8FF 0%, #FFFFFF 46%, #FFFFFF 76%, #FBFDFF 100%); + box-shadow: 0px 4px 4px 1px rgba(0, 0, 0, 0.05); + border-radius: 4px; + border: 2px solid #FFFFFF; + padding: 20px; + display: flex; + flex-direction: column; + align-items: center; + background-size: 100% 100%; + &>p{ + font-weight: bold; + color: #000000; + line-height: 22px; + } + & img{ + width: 68px; + margin: 40px 0 20px 0; + } + & .thread{ + margin: 20px 0 !important; + border-top: 1px solid #EDEDED; + width: 270px; + } + &>div{ + display: flex; + & div{ + text-align: center; + } + & .mr45{ + margin-right: 45px; + } + & .num{ + font-size: 24px; + font-weight: bold; + color: #466AFF; + line-height: 33px; + } + & p{ + color: #666666; + } + } + & .hover_bar{ + width: 116%; + margin-left: -8% !important; + height: 4px; + position: relative; + top: 23px; + } + &:hover{ + box-shadow: 0px 0px 4px 5px rgba(0, 0, 0, 0.07); + & .hover_bar{background-color: #466AFF;} + } + } + & .classroom1{ + padding: 20px 0 20px 15px; + & .hover_bar{ + width: 104.5%; + margin-left: -5% !important; + } + // background-image: url('./image/image11.svg'); + } + & .classroom2{ + & img{margin: 20px 0;} + // background-image: url('./image/image12.svg'); + } + // & .classroom3{ + // background-image: url('./image/image13.svg'); + // } + // & .classroom4{ + // background-image: url('./image/image14.svg'); + // } + } +} +.tea_part3_bg{ + background: #F6F8FB; + & .tea_part3{ + padding: 80px 0 70px; + & .content{ + padding: 15px 30px; + align-items: center; + &:hover{ + background: #FFFFFF; + box-shadow: 0px 0px 4px 3px rgba(0, 0, 0, 0.06); + border-radius: 6px; + & .center .title{color: #466AFF;} + } + & img{ + width: 300px; + height: 160px; + border-radius: 7px; + margin-right: -50px; + } + & .center{ + width: 57.5%;; + text-align: left; + font-size: 14px; + color: #595959; + & .title{ + color: #26282F; + font-size: 20px; + font-weight: bold; + } + & .tip{ + margin: 5px 0 8px !important; + } + } + & .col85{color: #858999;} + & .col18{color: #181818;} + & .col{ + color: #000000; + font-weight: bold; + } + } + } +} \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/49.png b/src/forge/TeachingPractice/image/49.png new file mode 100644 index 000000000..5139b05a0 Binary files /dev/null and b/src/forge/TeachingPractice/image/49.png differ diff --git a/src/forge/TeachingPractice/image/head.png b/src/forge/TeachingPractice/image/head.png new file mode 100644 index 000000000..5ee8d9cd1 Binary files /dev/null and b/src/forge/TeachingPractice/image/head.png differ diff --git a/src/forge/TeachingPractice/image/image11.svg b/src/forge/TeachingPractice/image/image11.svg new file mode 100644 index 000000000..d5d61fc7b --- /dev/null +++ b/src/forge/TeachingPractice/image/image11.svg @@ -0,0 +1,27 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image12.svg b/src/forge/TeachingPractice/image/image12.svg new file mode 100644 index 000000000..20b8e3fb2 --- /dev/null +++ b/src/forge/TeachingPractice/image/image12.svg @@ -0,0 +1,27 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image13.svg b/src/forge/TeachingPractice/image/image13.svg new file mode 100644 index 000000000..cb9f49bc5 --- /dev/null +++ b/src/forge/TeachingPractice/image/image13.svg @@ -0,0 +1,27 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image14.svg b/src/forge/TeachingPractice/image/image14.svg new file mode 100644 index 000000000..fa634268d --- /dev/null +++ b/src/forge/TeachingPractice/image/image14.svg @@ -0,0 +1,27 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image20.svg b/src/forge/TeachingPractice/image/image20.svg new file mode 100644 index 000000000..efe236146 --- /dev/null +++ b/src/forge/TeachingPractice/image/image20.svg @@ -0,0 +1,110 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image21.svg b/src/forge/TeachingPractice/image/image21.svg new file mode 100644 index 000000000..f74399dd1 --- /dev/null +++ b/src/forge/TeachingPractice/image/image21.svg @@ -0,0 +1,133 @@ + + + 椭圆形 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/image22.svg b/src/forge/TeachingPractice/image/image22.svg new file mode 100644 index 000000000..86909c531 --- /dev/null +++ b/src/forge/TeachingPractice/image/image22.svg @@ -0,0 +1,126 @@ + + + 编组 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/forge/TeachingPractice/image/img1.png b/src/forge/TeachingPractice/image/img1.png new file mode 100644 index 000000000..4c56006d1 Binary files /dev/null and b/src/forge/TeachingPractice/image/img1.png differ diff --git a/src/forge/TeachingPractice/image/img10.png b/src/forge/TeachingPractice/image/img10.png new file mode 100644 index 000000000..583612f32 Binary files /dev/null and b/src/forge/TeachingPractice/image/img10.png differ diff --git a/src/forge/TeachingPractice/image/img15.png b/src/forge/TeachingPractice/image/img15.png new file mode 100644 index 000000000..bb9d729d4 Binary files /dev/null and b/src/forge/TeachingPractice/image/img15.png differ diff --git a/src/forge/TeachingPractice/image/img16.png b/src/forge/TeachingPractice/image/img16.png new file mode 100644 index 000000000..ade9e493a Binary files /dev/null and b/src/forge/TeachingPractice/image/img16.png differ diff --git a/src/forge/TeachingPractice/image/img17.png b/src/forge/TeachingPractice/image/img17.png new file mode 100644 index 000000000..34a622e14 Binary files /dev/null and b/src/forge/TeachingPractice/image/img17.png differ diff --git a/src/forge/TeachingPractice/image/img18.png b/src/forge/TeachingPractice/image/img18.png new file mode 100644 index 000000000..e5224d507 Binary files /dev/null and b/src/forge/TeachingPractice/image/img18.png differ diff --git a/src/forge/TeachingPractice/image/img2.png b/src/forge/TeachingPractice/image/img2.png new file mode 100644 index 000000000..51faaf24e Binary files /dev/null and b/src/forge/TeachingPractice/image/img2.png differ diff --git a/src/forge/TeachingPractice/image/img3.png b/src/forge/TeachingPractice/image/img3.png new file mode 100644 index 000000000..8e5f6e390 Binary files /dev/null and b/src/forge/TeachingPractice/image/img3.png differ diff --git a/src/forge/TeachingPractice/image/img4.png b/src/forge/TeachingPractice/image/img4.png new file mode 100644 index 000000000..63c82cad3 Binary files /dev/null and b/src/forge/TeachingPractice/image/img4.png differ diff --git a/src/forge/TeachingPractice/image/img5.png b/src/forge/TeachingPractice/image/img5.png new file mode 100644 index 000000000..e0d8c244a Binary files /dev/null and b/src/forge/TeachingPractice/image/img5.png differ diff --git a/src/forge/TeachingPractice/image/img6.png b/src/forge/TeachingPractice/image/img6.png new file mode 100644 index 000000000..12d147e72 Binary files /dev/null and b/src/forge/TeachingPractice/image/img6.png differ diff --git a/src/forge/TeachingPractice/image/img7.png b/src/forge/TeachingPractice/image/img7.png new file mode 100644 index 000000000..d3af4dc84 Binary files /dev/null and b/src/forge/TeachingPractice/image/img7.png differ diff --git a/src/forge/TeachingPractice/image/img8.png b/src/forge/TeachingPractice/image/img8.png new file mode 100644 index 000000000..59b0b57e1 Binary files /dev/null and b/src/forge/TeachingPractice/image/img8.png differ diff --git a/src/forge/TeachingPractice/image/img9.png b/src/forge/TeachingPractice/image/img9.png new file mode 100644 index 000000000..e7581866d Binary files /dev/null and b/src/forge/TeachingPractice/image/img9.png differ diff --git a/src/forge/Team/Component/AddMemberBox.jsx b/src/forge/Team/Component/AddMemberBox.jsx new file mode 100644 index 000000000..77b0786aa --- /dev/null +++ b/src/forge/Team/Component/AddMemberBox.jsx @@ -0,0 +1,69 @@ +import React ,{ useState , useEffect } from 'react'; +import { Modal , Spin } from 'antd'; +import axios from 'axios'; + +function AddMemberBox({className,orzId,history,OIdentifier}){ + const [ visible , setVisible ] = useState(false); + const [ isSpin , setIsSpin ] = useState(true); + const [ list , setList ] = useState(undefined); + + useEffect(()=>{ + if(visible && orzId){ + InitData(); + } + },[orzId,visible]) + + function InitData(){ + const url = `/organizations/${orzId}/teams.json`; + axios.get(url,{ + params:{ + is_full:true + } + }).then(result=>{ + if(result){ + setList(result.data.teams); + setIsSpin(false); + } + }).catch(error=>{}) + } + + function chooseGroup(id){ + history.push(`/${OIdentifier}/teams/${id}/setting/member`); + } + return( +
    + setVisible(false)} + footer={null} + className="addMemberBody" + > +
    +

    请选择想要添加成员的组织团队

    + +
    + { + list && list.length > 0 ? +
      + { + list.map((i,k)=>{ + return( +
    • chooseGroup(i.id)}>{i.nickname}
    • + ) + }) + } +
    + :"" + } +
    +
    +
    +
    + setVisible(true)}>+ 添加成员 +
    + ) +} +export default AddMemberBox; \ No newline at end of file diff --git a/src/forge/Team/Group/GroupDetails.jsx b/src/forge/Team/Group/GroupDetails.jsx index ba5693865..1122ce724 100644 --- a/src/forge/Team/Group/GroupDetails.jsx +++ b/src/forge/Team/Group/GroupDetails.jsx @@ -117,8 +117,8 @@ export default ((props) => {
    {group.description ? group.description : "暂无描述"}
    -

    管理员团队对 所有仓库 具有操作权限,且对组织具有 管理员权限

    -

    此外,该团队拥有了 创建仓库 的权限:成员可以在组织中创建新的仓库。

    +

    组织的Owner团队拥有更改组织设置,在组织内新建仓库,新建组织团队等权限。

    +

    此外,Owner团队成员对当前组织下所有项目均具有仓库管理员权限,组织下其他团队的权限可由Owner团队成员自由制定。

    {group.is_admin ? : ""}
    diff --git a/src/forge/Team/Group/GroupForm.jsx b/src/forge/Team/Group/GroupForm.jsx index f9b47b86c..a949eafd5 100644 --- a/src/forge/Team/Group/GroupForm.jsx +++ b/src/forge/Team/Group/GroupForm.jsx @@ -157,6 +157,17 @@ export default Form.create()( setAuth(params.target.value) } + function checkname(rule, value, callback){ + if(!value){ + callback(); + } + if(value && !value.match(/^[a-zA-Z][a-zA-Z\d]{3,14}$/)){ + callback("只能使用英文字母和数字,以字母开头,长度为4到15个字符"); + } + callback(); + } + + function checkname(rule, value, callback){ if(!value){ callback(); diff --git a/src/forge/Team/Index.scss b/src/forge/Team/Index.scss index 112379734..0538c4660 100644 --- a/src/forge/Team/Index.scss +++ b/src/forge/Team/Index.scss @@ -369,4 +369,48 @@ } .hide{ display: none; +} + +.addMemberBtn{ + display: flex; + height: 34px; + line-height: 32px; + padding:0px 14px; + border-radius: 3px; + border:1px solid #d0d0d0; + font-size: 14px; + &:hover{ + border-color: #466AFF; + } +} + +.addMemberBody{ + .ant-modal-body{ + padding:0px; + } + .addForGroupList{ + padding:20px 40px; + max-height: 315px; + overflow-y: auto; + ul{ + display: flex; + flex-wrap: wrap; + width: 450px; + margin:0px auto; + } + li{ + cursor: pointer; + border:1px solid #d0d0d0; + border-radius:4px; + margin:0px 10px 15px 10px!important; + height: 40px; + line-height: 40px; + width: 130px; + text-align: center; + &.active,&:hover{ + color: #fff; + background-color: rgba(65, 84, 241, 1); + } + } + } } \ No newline at end of file diff --git a/src/forge/Team/ListItem.jsx b/src/forge/Team/ListItem.jsx index a908f80bb..ab9d64f27 100644 --- a/src/forge/Team/ListItem.jsx +++ b/src/forge/Team/ListItem.jsx @@ -10,14 +10,10 @@ function ListItem({item,key,OIdentifier}) { {item.name} { item.forked_from_project_id && } { - item.type && item.type !== 0 ? - item.type === 2 ? + item.type && item.type === 2 ? - : - - - :"" + :"" } diff --git a/src/forge/Team/Setting/TeamSettingCommon.jsx b/src/forge/Team/Setting/TeamSettingCommon.jsx index e4f5cf7a6..3e0389e36 100644 --- a/src/forge/Team/Setting/TeamSettingCommon.jsx +++ b/src/forge/Team/Setting/TeamSettingCommon.jsx @@ -74,6 +74,7 @@ export default Form.create()( function getImage(image){ setImageFlag(true); setImage(image); + console.log(image); } // 删除组织 @@ -107,6 +108,7 @@ export default Form.create()( } callback(); } + return(
    @@ -176,12 +178,12 @@ export default Form.create()( '最大仓库数:', "max_repo_creation", [], - ,false,false, + ,false,false, "当输入栏为空时,默认数量无限制" )}

    选择头像:

    - - + +
    diff --git a/src/forge/Team/Setting/TeamSettingMember.jsx b/src/forge/Team/Setting/TeamSettingMember.jsx index 1ead66e99..9124390f6 100644 --- a/src/forge/Team/Setting/TeamSettingMember.jsx +++ b/src/forge/Team/Setting/TeamSettingMember.jsx @@ -7,36 +7,27 @@ import styled from 'styled-components'; import { getImageUrl } from 'educoder'; import axios from 'axios'; import { Link } from 'react-router-dom'; +import AddMemberBox from '../Component/AddMemberBox'; const Img = styled.img`{ width:30px; height:30px; border-radius:50%; }` - -const demoData = [ - { - img:"images/avatars/User/g", - name:"蔡世", - email:"1149225589@qq.com", - team:"caicaizi", - role:"管理者", - operation:"移除成员", - } -] -export default (({organizeDetail})=>{ - const [ choiceId , serChoiceId ] = useState(undefined); +const limit = 15; +export default (({organizeDetail,history,match})=>{ + const OIdentifier = match.params.OIdentifier; const [ page , setPage ] = useState(1); - const [ limit , setLimit ] = useState(15); const [ total , setTotal ] = useState(0); const [ search , setSearch ] = useState(undefined); - const [ data , setData ] = useState(demoData); + const [ data , setData ] = useState(undefined); useEffect(()=>{ if(organizeDetail && organizeDetail.id){ getData(search); } - },[organizeDetail,search]) + },[organizeDetail,search,page]) + function getData(search){ const url = `/organizations/${organizeDetail.id}/organization_users.json`; @@ -127,6 +118,12 @@ export default (({organizeDetail})=>{ + 添加用户 */} +
    diff --git a/src/forge/Team/TeamMember.jsx b/src/forge/Team/TeamMember.jsx index 0a5abe1e3..7bffb65d2 100644 --- a/src/forge/Team/TeamMember.jsx +++ b/src/forge/Team/TeamMember.jsx @@ -4,9 +4,11 @@ import Cards from '../Component/MemberCards'; import axios from 'axios'; import Nodata from '../Nodata'; import { Pagination , Spin } from 'antd'; +import AddMemberBox from './Component/AddMemberBox'; -const limit = 15; -function TeamMember({organizeDetail,current_user}){ +const limit = 16; +function TeamMember({organizeDetail,current_user,history,match}){ + const OIdentifier = match.params.OIdentifier; const [ page , setPage ] = useState(1); const [ total , setTotal ] = useState(0); const [ isSpin , setIsSpin ] = useState(true); @@ -22,7 +24,7 @@ function TeamMember({organizeDetail,current_user}){ setIsSpin(true); const url = `/organizations/${organizeDetail.id}/organization_users.json`; axios.get(url,{ - page,limit + params:{page,limit} }).then(result=>{ if(result && result.data){ setList(result.data.organization_users); @@ -34,7 +36,17 @@ function TeamMember({organizeDetail,current_user}){ return( - 组织成员 + 组织成员 + { + organizeDetail && organizeDetail.is_admin && + + } +
    { @@ -64,7 +76,7 @@ function TeamMember({organizeDetail,current_user}){ { total >limit &&
    - setPage(page)}/> + setPage(p)}/>
    } diff --git a/src/forge/Upload/Index.js b/src/forge/Upload/Index.js index 713803aa3..203242110 100644 --- a/src/forge/Upload/Index.js +++ b/src/forge/Upload/Index.js @@ -61,10 +61,13 @@ class Index extends Component { handleChange = (info) => { const { changeIsComplete } = this.props; changeIsComplete && changeIsComplete(true); - if (info.file.status === 'uploading' || info.file.status === 'done' || info.file.status === 'removed') { - let fileList = info.fileList; - this.setState({ fileList: appendFileSizeToUploadFileAll(fileList) }); - this.fileIdList(fileList); + const file = info.file; + if(file && file.type){ + if (info.file.status === 'uploading' || info.file.status === 'done' || info.file.status === 'removed') { + let fileList = info.fileList; + this.setState({ fileList: appendFileSizeToUploadFileAll(fileList) }); + this.fileIdList(fileList); + } } } @@ -77,6 +80,11 @@ class Index extends Component { } beforeUpload = (file) => { + console.log(file); + if(file && !file.type){ + this.props.showNotification(`暂不支持此格式文件的上传!`); + return; + } const { size } = this.props; const isLt100M = file.size / 1024 / 1024 < size; if (!isLt100M) { diff --git a/src/forge/Upload/attachment.js b/src/forge/Upload/attachment.js index 9918363df..677b48ee8 100644 --- a/src/forge/Upload/attachment.js +++ b/src/forge/Upload/attachment.js @@ -138,6 +138,7 @@ class Attachment extends Component { to={`${item.url}`} target="_blank" className="attachment-list-a" + download > {item.title} diff --git a/src/forge/UsersList/fork_users.js b/src/forge/UsersList/fork_users.js index 23cd5bead..a3d9c2a2d 100644 --- a/src/forge/UsersList/fork_users.js +++ b/src/forge/UsersList/fork_users.js @@ -27,7 +27,7 @@ class ForkUsers extends Component { }); const { projectsId , owner } = this.props.match.params; - const url = `/${owner}/${projectsId}/members.json`; + const url = `/${owner}/${projectsId}/forks.json`; axios .get(url, { params: { diff --git a/src/forge/Version/version.js b/src/forge/Version/version.js new file mode 100644 index 000000000..99223e1d6 --- /dev/null +++ b/src/forge/Version/version.js @@ -0,0 +1,122 @@ +import React, { Component } from "react"; +import { Link } from 'react-router-dom'; +import { Spin } from 'antd'; +import NoneData from '../Nodata'; +import './version.css'; +import axios from 'axios'; +import RenderHtml from '../../components/render-html'; + +/** + * issue_chosen:下拉的筛选列表, + * data:列表接口返回的所有数据, + * issues:列表数组, + * isSpin:加载中, + */ +class version extends Component { + constructor(props) { + super(props); + this.state = { + issue_chosen: undefined, + data: undefined, + releases:undefined, + issues: undefined, + isSpin: true, + search: undefined, + search_count: undefined, + } + } + + componentDidMount = () => { + this.getIssueList(); + } + // 获取列表数据 + getIssueList = () => { + const { projectsId, owner } = this.props.match.params; + const url = `/${owner}/${projectsId}/releases.json`; + axios.get(url).then((result) => { + if (result) { + this.setState({ + data: result.data, + releases:result.data.releases, + issues: result.data.issues, + isSpin: false + }) + } + }).catch((error) => { + console.log(error); + }) + } + + // 显示版本描述 + showBody=(key,flag)=>{ + let { releases } = this.state; + releases[key].bodyshow = !flag; + this.setState({ + releases + }) + } + + renderList = (releases) => { + const { projectsId , owner } = this.props.match.params; + if (releases && releases.length > 0) { + return ( + releases.map((item, key) => { + return ( +
    + + {item.draft} + {item.created_at} + + + {item.tag_name} + + +
    + + {item.name} + (编辑) + + + this.showBody(key,item.bodyshow)}> + {item.user_name}:发布了这个版本,并在发布后提交给{item.target_commitish} + + { + item.bodyshow && + } + +

    + TAR + ZIP +

    +
    +
    + ) + }) + ) + } else if (releases && releases.length === 0) { + return ( ) + } + } + + render() { + const { projectsId ,owner } = this.props.match.params; + const { data , releases , isSpin } = this.state + + return ( +
    +
    + 版本发布 + { + data && data.user_permission ? + + 发布新版 + : '' + } +
    +
    +
    {this.renderList(releases)}
    +
    +
    + ) + } +} +export default version; \ No newline at end of file diff --git a/src/forge/Wiki/fetch.js b/src/forge/Wiki/fetch.js index ccb9676a2..ec3abf870 100644 --- a/src/forge/Wiki/fetch.js +++ b/src/forge/Wiki/fetch.js @@ -1,106 +1,13 @@ -import { notification ,message} from 'antd'; -import axios from 'axios'; -import cookie from 'react-cookies'; -import Login from './components/Login'; -let actionUrl = ''; -if (window.location.href.indexOf('localhost') > -1) { - // actionUrl = 'http://117.50.100.12:8008'; - // actionUrl = 'http://192.168.31.74:8081'; - actionUrl = "https://test-search.trustie.net"; -} else if(window.location.href.indexOf('testforgeplus')>-1){ - actionUrl = "https://test-search.trustie.net"; - // actionUrl = 'https://testforgeplus.trustie.net'; - axios.defaults.withCredentials = true; -}else if (window.location.href.indexOf('wiki-api') > -1) { - actionUrl = "https://wiki-api.trustie.net"; - axios.defaults.withCredentials = true; -} +import javaFetch from '../javaFetch'; + +let settings = JSON.parse(localStorage.chromesetting); +let actionUrl = settings && settings.common.wiki; + +const service = javaFetch(actionUrl); export const httpUrl = actionUrl; -export const TokenKey = 'autologin_trustie'; - -// 创建axios实例 -const service = axios.create({ - baseURL: httpUrl, - timeout: 10000, // 请求超时时间 -}); - -// request拦截器 -service.interceptors.request.use(config => { - if (cookie.load(TokenKey)) { - console.log(cookie.load(TokenKey)); - config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改 - } - if (window.location.port === "3007") { - // 模拟token为登录用户 - const taskToken = sessionStorage.taskToken; - if (config.url.indexOf('?') === -1) { - config.url = `${config.url}?token=${taskToken}`; - } else { - config.url = `${config.url}&token=${taskToken}`; - } - } - return config; -}, error => { - // Do something with request error - console.log(error); // for debug - // Promise.reject(error); -}); -// respone拦截器 -service.interceptors.response.use( - response => { - const res = response||{}; - if (res.status === 400) { - message.error(res.data.message || '操作失败'); - return Promise.reject('error'); - } - if (res.status === 401) { - message.error(res.data.message || '登录信息已过期'); - return Promise.reject('error'); - } - if (res.status === 403) { - message.error(res.data.message || '无权限!'); - return Promise.reject('error'); - } - if (res.status === 40001) { - notification.open({ - message: "提示", - description: '账户或密码错误!', - }); - return Promise.reject('error'); - } - if (response.status !== 200 && res.status !== 200) { - notification.open({ - message: "提示", - description: res.message, - }); - } else { - return response.data; - } - }, - error => { - console.log(error); - let res = error.response||{}; - if (res.status === 400) { - message.error(res.data.message || '操作失败'); - return Promise.reject('error'); - } - if (res.status === 401) { - message.error(res.data.message || '登录信息已过期'); - Login(); - return Promise.reject('error'); - } - if (res.status === 403) { - message.error(res.data.message || '无权限!'); - return Promise.reject('error'); - } - notification.open({ - message: "提示", - description: error.message, - }); - return Promise.reject(error); - } -); - export default service; + + + diff --git a/src/forge/claims/claim.scss b/src/forge/claims/claim.scss new file mode 100644 index 000000000..a8bbac40e --- /dev/null +++ b/src/forge/claims/claim.scss @@ -0,0 +1,73 @@ +.infoCount{ + display: inline-block; + width: 24px; + text-align: center; + height: 24px; + line-height: 24px; + background-color:rgba(153, 153, 153, 0.13);; + color:#666; + border-radius: 12px; + margin-left: 6px; + font-size: 12px; + } + + .menuPanels{ + width: 295px; + .leftline{ + position: relative; + color: #666; + height: 16px; + margin-left: 14px; + font-size: 12px; + &::before{ + position: absolute; + left: -7px; + top:3px; + height: 12px; + width: 1px; + background-color: #999; + content: ""; + } + } + } + + .downMenu{ + width: 329px; + background-color: #fff; + box-shadow: 0px 1px 8px 1px rgba(212, 212, 212, 0.5); + padding-bottom: 14px; + .ant-menu-item{ + height: 50px; + line-height: 50px; + } + } + + .claimNote_input{ + // up, right, botton, left + margin: 5px 10px 5px 10px; + padding-top: 10px; + padding-bottom: 10px; + } + + .claimNote{ + // up, right, botton, left + margin: 5px 14px 0px 14px; + padding-bottom: 5px; + } + .attrPerson{ + padding-top: 12px; + display: flex; + flex-wrap: wrap; + padding-bottom: 2px; + a{ + margin: 0px 10px 10px 0px; + img{ + border-radius: 50%; + width: 40px; + height: 40px; + } + &:nth-child(4n){ + margin-right: 0px; + } + } + } \ No newline at end of file diff --git a/src/forge/claims/claims.js b/src/forge/claims/claims.js new file mode 100644 index 000000000..d098923b0 --- /dev/null +++ b/src/forge/claims/claims.js @@ -0,0 +1,288 @@ +import React, { Component } from "react"; +import axios from "axios"; +import { AlignCenter , FlexAJ } from '../Component/layout'; +import { Popover, List, Button, Dropdown, Input} from "antd"; +import { Link } from "react-router-dom"; +import { getImageUrl } from "educoder"; +import "./claim.scss" +const { TextArea } = Input; + +class claims extends React.Component { + constructor(props) { + super(props); + this.state = { + claimerdata: new Array(), + currentUserClaimed:0, + issue_id:this.props.issue_id, + claimNoteBody:'', + claimNoteBodyChanged:false, + claimNotePop:false + }; + + }; + + getClaimers = ()=>{ + const {issue_id} = this.state; + axios.get(`/issues/${issue_id}/claims.json`) + .then((result) => { + if(result){ + this.setState({ + claimerdata: result.data.claimers, + currentUserClaimed: result.data.currentUserclaimed, + }); + } + }).catch(function (error) { + console.log(error); + }); + }; + + delClaim = () => { + if (this.props.checkIfLogin() === false) { + this.props.showLoginDialog(); + return; + } else { + const {issue_id} = this.state; + axios({ + method: 'delete', + url: `/issues/${issue_id}/claims.json` + }).then(result => { + this.setState({ + claimerdata: result.data.claimers, + currentUserClaimed: result.data.currentUserclaimed, + claimNotePop:false, + claimNoteBody:'', + }); + const { refreshFunc } = this.props; + refreshFunc && refreshFunc(); + }) + .catch(error => { + console.log(error); + }); + } + }; + + changeClaimNote = (e)=>{ + this.setState({ + claimNoteBody: e.target.value, + claimNoteBodyChanged: true, + }); + }; + + yesClaim = ()=>{ + const {issue_id,claimNoteBody} = this.state; + const { refreshFunc } = this.props; + + axios.post(`/issues/${issue_id}/claims.json`, { + claim_note: claimNoteBody + }) + .then(result => { + this.setState({ + claimerdata: result.data.claimers, + currentUserClaimed: result.data.currentUserclaimed, + claimNotePop:false, + }); + refreshFunc && refreshFunc(); + }) + .catch(error => { + console.log(error); + }); + }; + + addClaim = ()=> { + if (this.props.checkIfLogin() === false) { + this.props.showLoginDialog(); + return; + }else{ + this.setState({ + claimNotePop: true, + }); + } + + }; + + updateClaim = (claimId,key)=>{ + const {issue_id,claimNoteBody,claimNoteBodyChanged} = this.state; + const { refreshFunc } = this.props; + if(claimNoteBodyChanged){ + axios.put(`/issues/${issue_id}/claims.json`, { + claim_note: claimNoteBody, + claim_id: claimId + }) + .then(result => { + this.setState({ + claimerdata: result.data.claimers, + currentUserClaimed: result.data.currentUserclaimed, + }); + refreshFunc && refreshFunc(); + }) + .catch(error => { + console.log(error); + }); + } + this.setVisibleFunc(false,key) + }; + + + + cancleClaim = ()=>{ + this.setState({ + claimNotePop: false, + }) + }; + + componentDidMount = () => { + this.getClaimers(); + }; + + + setVisibleFunc = (flag,index) => { + const {claimerdata} = this.state + var lx = claimerdata.concat(); + lx.map(i=>i.visible =false); + if(flag){ + lx[index].visible = flag; + } + lx.splice(); + this.setState({ + claimerdata:lx + }) + } + + render() { + const { + claimerdata, + currentUserClaimed, + issue_id + } = this.state; + + const rednerlist = (item)=>{ + return ( +
    + + + + + {item && item.user_name} + + 声明于 {item.created_at} +
    + ); + }; + + const renderClaim = ()=>{ + return( +
    + 声明留言:
    +
    diff --git a/src/modules/user/FindPasswordComponent.js b/src/modules/user/FindPasswordComponent.js index 85f0285a8..c753c66e8 100644 --- a/src/modules/user/FindPasswordComponent.js +++ b/src/modules/user/FindPasswordComponent.js @@ -699,7 +699,7 @@ class LoginRegisterComponent extends Component { {/*onBlur={(e) => this.inputOnBlur(e)}*/} this.inputOnBlurzhuche(e)} onChange={this.loginInputonChange} style={{marginTop: '10px', height: "38px"}}> { diff --git a/src/modules/user/LoginRegisterComponent.js b/src/modules/user/LoginRegisterComponent.js index db369458b..a6ba6570e 100644 --- a/src/modules/user/LoginRegisterComponent.js +++ b/src/modules/user/LoginRegisterComponent.js @@ -7,6 +7,7 @@ import axios from 'axios'; import CheckInputysl1 from './CheckInputysl'; import CheckInputysl2 from './CheckInputysl'; import Notcompletedysl from './Notcompletedysl'; +import Educoder from '../login/educoder.png'; import './common.css' import './commontwo.css' const { TabPane } = Tabs; @@ -64,8 +65,8 @@ class LoginRegisterComponent extends Component { MyEduCoderModals:false, registered:undefined, Phonenumberisnotcodmms:undefined, - weixinlogin:false, - qqlogin:false + weixinlogin:false, + qqlogin:false } } if(props.loginstatus === false){ @@ -103,8 +104,8 @@ class LoginRegisterComponent extends Component { MyEduCoderModals:false, registered:undefined, Phonenumberisnotcodmms:undefined, - weixinlogin:false, - qqlogin:false + weixinlogin:false, + qqlogin:false } } } @@ -128,25 +129,25 @@ class LoginRegisterComponent extends Component { changeType = () => { this.setState({classpass: 'password'}); } - IsPC=()=>{ - var userAgentInfo = navigator.userAgent; - var Agents = ["Android", "iPhone", - "SymbianOS", "Windows Phone", - "iPad", "iPod"]; - var flag = true; - for (var v = 0; v < Agents.length; v++) { - if (userAgentInfo.indexOf(Agents[v]) > 0) { - flag = false; - break; - } - } - return flag; - } + IsPC=()=>{ + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", + "SymbianOS", "Windows Phone", + "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; + } componentDidMount = () => { - let flag = this.IsPC(); //true为PC端,false为手机端 - this.setState({ - isphone:flag - }) + let flag = this.IsPC(); //true为PC端,false为手机端 + this.setState({ + isphone:flag + }) // console.log("componentDidUpdate"); // console.log(this.props); let pcipns=this.IsPC(); @@ -917,33 +918,33 @@ class LoginRegisterComponent extends Component { }) }; - openweixinlogin=()=>{ - this.setState({ - weixinlogin:true - }) - } - hideweixinlogin=()=>{ - this.setState({ - weixinlogin:false, - qqlogin:false, + openweixinlogin=()=>{ + this.setState({ + weixinlogin:true + }) + } + hideweixinlogin=()=>{ + this.setState({ + weixinlogin:false, + qqlogin:false, tab:["0"] - }) - } + }) + } - openqqlogin=()=>{ - this.setState({ - qqlogin:true - }) - //window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2f${window.location.host}%2otherloginqq&response_type=code` - window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginqq&state=null,${window.location.host}&response_type=code` - // window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginstart&tp=qq&response_type=code` - } + openqqlogin=()=>{ + this.setState({ + qqlogin:true + }) + //window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2f${window.location.host}%2otherloginqq&response_type=code` + window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginqq&state=null,${window.location.host}&response_type=code` + // window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginstart&tp=qq&response_type=code` + } - openphoneqqlogin=()=>{ - window.open( - `https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&pt_3rd_aid=101508858&daid=383&pt_skey_valid=0&style=35&s_url=http%3A%2F%2Fconnect.qq.com&refer_cgi=authorize&which=&client_id=101508858&response_type=code&scope=get_user_info&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginqq&state=null,${window.location.host}&response_type=code` - ) - } + openphoneqqlogin=()=>{ + window.open( + `https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&pt_3rd_aid=101508858&daid=383&pt_skey_valid=0&style=35&s_url=http%3A%2F%2Fconnect.qq.com&refer_cgi=authorize&which=&client_id=101508858&response_type=code&scope=get_user_info&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginqq&state=null,${window.location.host}&response_type=code` + ) + } render() { const { // 登录 @@ -968,7 +969,7 @@ class LoginRegisterComponent extends Component { readAgreement, pciphone, Phonenumberisnotcodmms, - weixinlogin + weixinlogin } = this.state // height: 346px; if (this.state.seconds === 0) { @@ -979,8 +980,8 @@ class LoginRegisterComponent extends Component { return (
    + // style={ parseInt(tab[0])==0?{height: "366px"} :{height: "510px"}} + >
    - {weixinlogin===false&&this.props.weixinlogin===undefined? + {weixinlogin===false&&this.props.weixinlogin===undefined? 登录 注册 :""} - { - weixinlogin===false&&parseInt(tab[0])==0 && + { + weixinlogin===false&&parseInt(tab[0])==0 &&
    - this.postLogin()} size={"large"}>登录 - {this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?this.state.isphone===true?

    - - ———————— 快速登录 ———————— -

    -

    :

    - ———————— 快速登录 ———————— -

    -

    :""} +

    + ———————— 快速登录 ———————— +

    + + educoder登录 + +
    +

    } { - weixinlogin===false&&parseInt(tab[0])==1 && + weixinlogin===false&&parseInt(tab[0])==1 &&
    -
    } - {this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?我已阅读并同意 - - 《服务协议条款》 - :""} + + 《服务协议条款》 + :""} - {this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?this.state.isphone===true?

    - - ———————— 快速登录 ———————— -

    -

    :

    - ———————— 快速登录 ———————— -

    -

    :"" - } +

    + ———————— 快速登录 ———————— +

    + + educoder登录 + +
    +

    } - {weixinlogin===true?:""} - {weixinlogin===true?

    - this.hideweixinlogin()}>返回登录注册 -

    :""} + {weixinlogin===true?:""} + {weixinlogin===true?

    + this.hideweixinlogin()}>返回登录注册 +

    :""}
    @@ -1306,3 +1278,4 @@ class LoginRegisterComponent extends Component { } export default (LoginRegisterComponent); +