├── .eslintrc.json ├── .gitignore ├── .vscode └── launch.json ├── LICENSE ├── package-lock.json ├── package.json ├── readme.md ├── src ├── cli.js ├── index.js ├── summary.js └── winnowing.js ├── test ├── TestProject-VerySame-0.sb3 ├── TestProject-VerySame-1.sb3 ├── TestProject0.sb3 ├── TestProject1.sb3 └── test.js └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "extends": [ 9 | "standard" 10 | ], 11 | "globals": { 12 | "Atomics": "readonly", 13 | "SharedArrayBuffer": "readonly" 14 | }, 15 | "parserOptions": { 16 | "ecmaVersion": 2018 17 | }, 18 | "rules": { 19 | "indent": [2, 4] 20 | } 21 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // 使用 IntelliSense 了解相关属性。 3 | // 悬停以查看现有属性的描述。 4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "启动程序", 11 | "skipFiles": [ 12 | "/**" 13 | ], 14 | "program": "${workspaceFolder}\\test\\test.js" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scratch-source-comparer", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "src/index.js", 6 | "bin": { 7 | "scsc": "src/cli.js" 8 | }, 9 | "scripts": { 10 | "start": "node src/cli", 11 | "test": "node test/test" 12 | }, 13 | "keywords": [ 14 | "scratch", 15 | "comparer" 16 | ], 17 | "author": "", 18 | "license": "AGPL-3.0-or-later", 19 | "dependencies": { 20 | "beautify": "0.0.8", 21 | "chalk": "^3.0.0", 22 | "colors": "^1.4.0", 23 | "image-js": "^0.21.9", 24 | "js-beautify": "^1.10.3", 25 | "jszip": "^3.2.2", 26 | "leven": "^3.1.0", 27 | "md5": "^2.2.1", 28 | "p-progress": "^0.4.2", 29 | "prettydiff": "^101.2.6", 30 | "progress-promise": "0.0.6", 31 | "scratch-vm": "^0.2.0-prerelease.20200402182733" 32 | }, 33 | "devDependencies": { 34 | "eslint": "^6.8.0", 35 | "eslint-config-standard": "^14.1.0", 36 | "eslint-plugin-import": "^2.20.1", 37 | "eslint-plugin-node": "^11.0.0", 38 | "eslint-plugin-promise": "^4.2.1", 39 | "eslint-plugin-standard": "^4.0.1" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Scratch Source Comparer 2 | 3 | A program to compare the same between two scratch project. 4 | 5 | Under construction, the code is a mess and full of chinese now, don't use for learning programing. 6 | 7 | # Usage (CLI) 8 | 9 | ```bash 10 | npm i scratch-source-comparer -g 11 | scsc (project file) (been compared project file) 12 | ``` 13 | -------------------------------------------------------------------------------- /src/cli.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const { promises: fs, existsSync } = require('fs') 3 | const compare = require('./index') 4 | const getSummary = require('./summary') 5 | const chalk = require('chalk') 6 | const { resolve } = require('path') 7 | 8 | const clog = (...args) => console.log(chalk(...args)) 9 | const err = (...args) => console.log(chalk.red('[Error]'), ...args) 10 | 11 | async function main () { 12 | clog`{blue.bold S}{blue cratch}{blue.bold S}{blue ource}{blue.bold C}{blue omparer}\n{yellow by SteveXMH}` 13 | if (process.argv.length <= 2 || process.argv.includes('--help')) { 14 | clog`Usage: {yellow npm start (FilePath1) (FilePath2)}` 15 | clog` Or: {yellow scsc (FilePath1) (FilePath2)} (If you used \`npm i scratch-source-comparer -g\` to install this)` 16 | return 17 | } 18 | const [file0, file1] = [resolve(__dirname, process.argv[process.argv.length - 2]), resolve(__dirname, process.argv[process.argv.length - 1])] 19 | try { 20 | if (!existsSync(file0) || !(await existsSync(file0)).isFile()) { 21 | err('File1 is not existed: ', file0) 22 | return 23 | } 24 | if (!existsSync(file1) || !(await fs.stat(file1)).isFile()) { 25 | err('File2 is not existed.', file1) 26 | return 27 | } 28 | } catch (err) { 29 | 30 | } 31 | const [read0, read1] = await Promise.all([fs.readFile(file0), fs.readFile(file1)]) 32 | clog`Comparing {yellow ${file0}}\n and {yellow ${file1}}` 33 | const result = await compare(read0, read1) 34 | let proj0samularty = 0 35 | let proj1samularty = 0 36 | for (const block in result.code.code0.same) { 37 | if (block !== 'length') { 38 | proj0samularty += result.code.code0.same[block].simularty 39 | } 40 | } 41 | for (const block in result.code.code1.same) { 42 | if (block !== 'length') { 43 | proj1samularty += result.code.code1.same[block].simularty 44 | } 45 | } 46 | 47 | const final = (result.assets.objectSameAmount0 / result.assets.objectAmount1 * 0.3) + (proj1samularty / result.code.code1length * 0.7) 48 | const summary = getSummary(final, true) 49 | 50 | clog`{green.bold Result}:` 51 | clog`Project 1: {yellow ${file0}}` 52 | clog`Project 2: {yellow ${file1}}` 53 | clog`{green Assets result}:` 54 | clog`Project 1's assets amount: {yellow ${result.assets.objectSameAmount0}}` 55 | clog`Project 2's assets amount: {yellow ${result.assets.objectSameAmount1}}` 56 | clog`Project 1's same assets amount: {yellow ${result.assets.objectAmount0}}` 57 | clog`Project 2's same assets amount: {yellow ${result.assets.objectAmount1}}` 58 | clog`Project 1 same assets proportion: {yellow ${result.assets.objectSameAmount0 / result.assets.objectAmount0 * 100}%}` 59 | clog`Project 2 same assets proportion: {yellow ${result.assets.objectSameAmount1 / result.assets.objectAmount1 * 100}%}` 60 | clog`Same list:` 61 | for (const key in result.assets.objectSameKey0) { 62 | clog` - {yellow ${result.assets.objectSameKey0[key]}}` 63 | } 64 | clog`Project 2's assets amount same to Project 1's: {yellow ${result.assets.objectSameAmount1}}` 65 | clog`Same list:` 66 | for (const key in result.assets.objectSameKey1) { 67 | clog` - {yellow ${result.assets.objectSameKey0[key]}}` 68 | } 69 | clog`{green Code result}:` 70 | clog`Project 1's program trees amount: {yellow ${result.code.code0length}}` 71 | clog`Project 2's program trees amount: {yellow ${result.code.code1length}}` 72 | clog`Project 1's program trees same amount: {yellow ${result.code.code0.length}}` 73 | clog`Project 2's program trees same amount: {yellow ${result.code.code1.length}}` 74 | clog`Project 1's program tree same proportion: {yellow ${proj0samularty / result.code.code0length * 100}%}` 75 | clog`Project 2's program tree same proportion: {yellow ${proj1samularty / result.code.code1length * 100}%}` 76 | clog`{green Final result}:` 77 | clog`Project simularty: {yellow ${final * 100}%}` 78 | clog`Summary: ${summary}` 79 | } 80 | 81 | main() 82 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // const summary = require('./summary') 3 | const prettydiff = require('prettydiff') 4 | const VisualMachine = require('scratch-vm/src/index') 5 | const minilog = require('minilog') 6 | // TODO: Use imagejs to compare images 7 | const imagejs = require('image-js') 8 | const isNode = !(typeof window !== 'undefined' && window !== null) 9 | const md5 = data => isNode ? require('crypto').createHash('md5').update(data).digest('hex') : require('md5')(data) 10 | const jszip = require('jszip') 11 | // Prevent blocking 12 | /** @returns {Promise} */ 13 | const waitTick = () => new Promise(resolve => setTimeout(resolve, 0)) 14 | 15 | // The md5 inside this list will be ignored in compare. 16 | const ignoreMD5List = [ 17 | '83a9787d4cb6f3b7632b4ddfebf74367', 18 | '83c36d806dc92327b9e7049a565c6bff', 19 | 'cd21514d0531fdffb22204e0ec5ed84a', 20 | 'b7853f557e4426412e64bb3da6531a99', 21 | 'ee1c4946b2fbefa4479c1cd60653fb46', 22 | 'd6118ccd46404fb73d4e9454d610b9ac', 23 | '8b8a0a49e7f5ece89ada8c069bf5a7ff', 24 | '547019f968041480c14ddf76113bae3d', 25 | '7085b3e5732e3689a4ba6a8ad98be814', 26 | '9e4bdaa40445a5cf843ffb031838b295', 27 | 'b578feebd8a0bdba72e38dc61887cce1', 28 | 'd8e8f89e256b5c131593c0919581a34f', 29 | '' 30 | ] 31 | 32 | class Block { 33 | // 传入工程模块原型创建模块对象 34 | constructor (protoBlock) { 35 | this.opcode = protoBlock.opcode 36 | this.next = protoBlock.next 37 | this.parent = protoBlock.parent 38 | this.inputs = protoBlock.inputs 39 | this.fields = protoBlock.fields 40 | this.shadow = protoBlock.shadow 41 | this.topLevel = protoBlock.topLevel 42 | this.x = protoBlock.x 43 | this.y = protoBlock.y 44 | } 45 | 46 | get type () { return 'steve-block' }; 47 | // 转换成字符串 48 | toFormatedString (indent = 0) { 49 | let ret = `${this.topLevel ? 'function ' : ''}${this.opcode}()${this.topLevel ? '' : ';'}` 50 | if (this.opcode === 'control_if' || 51 | this.opcode === 'control_if_else') { 52 | ret = 'if(true){' 53 | } else if (this.opcode === 'control_forever' || 54 | this.opcode === 'control_repeat' || 55 | this.opcode === 'control_repeat_until' || 56 | this.opcode === 'control_while' || 57 | this.opcode === 'control_for_each') { 58 | ret = 'while(true)' 59 | } 60 | if (this.topLevel) ret += '{' 61 | if (this.next) { 62 | ret += ` ${this.next.toFormatedString(indent + 1)}` 63 | } 64 | if (this.inputs.SUBSTACK) { 65 | ret += `{${this.inputs.SUBSTACK[1].toFormatedString(indent + 1)}}` 66 | } 67 | if (this.inputs.SUBSTACK2) { 68 | ret += `else{${this.inputs.SUBSTACK2[1].toFormatedString(indent + 1)}}` 69 | } 70 | if (this.topLevel || 71 | this.opcode === 'control_if' || 72 | this.opcode === 'control_if_else') ret += `${'\t'.repeat(indent)}}` 73 | return ret 74 | }; 75 | } 76 | 77 | // 将模块链接成一个树表 78 | function fixBlock (block, blocks) { 79 | if (typeof block !== 'object') throw new Error('没有传入模块参数!') 80 | if (typeof blocks !== 'object') throw new Error('没有传入模块表参数!') 81 | 82 | const b = new Block(block) 83 | if (b.next) { 84 | b.next = fixBlock(blocks[b.next], blocks) 85 | b.next.parent = b 86 | } 87 | if (b.inputs.SUBSTACK && b.inputs.SUBSTACK[1]) { 88 | b.inputs.SUBSTACK[1] = fixBlock(blocks[b.inputs.SUBSTACK[1]], blocks) 89 | b.inputs.SUBSTACK[1].parent = b 90 | } else { 91 | b.inputs.SUBSTACK = undefined 92 | } 93 | 94 | if (b.inputs.SUBSTACK2 && b.inputs.SUBSTACK2[1]) { 95 | b.inputs.SUBSTACK2[1] = fixBlock(blocks[b.inputs.SUBSTACK2[1]], blocks) 96 | b.inputs.SUBSTACK2[1].parent = b 97 | } else { 98 | b.inputs.SUBSTACK2 = undefined 99 | } 100 | 101 | return b 102 | } 103 | 104 | async function compareCode (project0, project1, progress = () => {}) { 105 | let total = 0 106 | let cur = 0 107 | async function makeCodeTree (project) { 108 | const array = [] 109 | for (const target of project.targets) { 110 | for (const id in target.blocks) { 111 | await waitTick() 112 | const block = target.blocks[id] 113 | if (block instanceof Object && !(block instanceof Array)) { // Array is an independent variable 114 | if (block.opcode && 115 | block.opcode.startsWith('event_') && 116 | block.opcode !== 'event_broadcastandwait' && 117 | block.opcode !== 'event_broadcast') { // Event hat block 118 | array.push({ 119 | id, 120 | code: fixBlock(block, target.blocks).toFormatedString() 121 | }) 122 | total++ 123 | progress({ text: `正在构建伪代码 (${total})`, progress: 50 + total * 0.02 }) 124 | } else if (block.opcode) { 125 | switch (block.opcode) { // Some special hat blocks. 126 | case 'procedures_definition': 127 | case 'control_start_as_clone': 128 | array.push({ 129 | id, 130 | code: fixBlock(block, target.blocks).toFormatedString() 131 | }) 132 | total++ 133 | progress({ text: `正在构建伪代码 (${total})`, progress: 50 + total * 0.02 }) 134 | break 135 | default: 136 | } 137 | } 138 | } 139 | } 140 | } 141 | return array 142 | } 143 | async function compareTree (codeTrees0, codeTrees1) { 144 | const result = { same: {}, length: 0 } 145 | const sameObj = result.same 146 | for (const tree0 of codeTrees0) { 147 | prettydiff.options.source = tree0.code 148 | let samest = null 149 | for (const tree1 of codeTrees1) { 150 | await waitTick() 151 | let equalsLines = 0 152 | let changedLine = 0 153 | if (tree0.code === tree1.code) { 154 | sameObj[tree0.id] = { 155 | simularTo: tree1.id, 156 | code0: tree0.code, 157 | code1: tree1.code, 158 | // isEqual: true, 159 | simularty: 1 // They are the same 160 | } 161 | result.length++ 162 | break 163 | } else { // Use prettydiff 164 | try { 165 | prettydiff.options.diff = tree1.code 166 | const prettyResult = JSON.parse(prettydiff()) 167 | prettyResult.diff.forEach(v => { 168 | switch (v[0]) { 169 | case '=': 170 | equalsLines++ 171 | // eslint-disable-next-line no-fallthrough 172 | case '+': 173 | case 'r': 174 | changedLine++ 175 | break 176 | case '-': 177 | changedLine-- 178 | break 179 | } 180 | }) 181 | if ((!samest || equalsLines / changedLine > samest.simularty) && equalsLines < changedLine) { 182 | samest = { 183 | simularTo: tree1.id, 184 | simularty: equalsLines / changedLine, 185 | code0: tree0.code, 186 | code1: tree1.code 187 | } 188 | } 189 | } catch (err) { 190 | // console.warn(err) 191 | samest = null 192 | } 193 | // console.log(prettyResult) 194 | } 195 | } 196 | if (!sameObj[tree0.id] && samest && samest.simularty > 0.8) { 197 | sameObj[tree0.id] = { 198 | simularTo: samest.simularTo, 199 | simularty: samest.simularty, 200 | code0: samest.code0, 201 | code1: samest.code1 202 | } 203 | result.length++ 204 | } 205 | cur++ 206 | progress({ text: `正在比对代码 (${cur}/${total})`, progress: 60 + ((cur / total) * 35) }) 207 | } 208 | return result 209 | } 210 | const result = {} 211 | const codeTrees0 = await makeCodeTree(project0) 212 | const codeTrees1 = await makeCodeTree(project1) 213 | prettydiff.options.diff_format = 'json' 214 | result.code0length = codeTrees0.length 215 | result.code1length = codeTrees1.length 216 | result.code0 = await compareTree(codeTrees0, codeTrees1) 217 | result.code1 = await compareTree(codeTrees1, codeTrees0) 218 | // console.log(codeTrees0[0]) 219 | return result 220 | } 221 | 222 | /** 223 | * Compare the same between two objects 224 | * @param {Object} o0 First object 225 | * @param {Array} o1 Second object 226 | * @param {Hash} h0 Second object 227 | * @param {Object} h1 Second object 228 | * @returns {Promise<{o0:number,o1:number,o0l:number,o1l:number}>} The result 229 | */ 230 | async function compareAssets ({ o0, o1, h0, h1, progress = () => {} }) { 231 | const result = { 232 | objectSameAmount0: 0, 233 | objectSameAmount1: 0, 234 | objectAmount0: 0, 235 | objectAmount1: 0, 236 | objectSame0: [], 237 | objectSame1: [], 238 | objectSameKey0: {}, 239 | objectSameKey1: {} 240 | } 241 | 242 | for (const okey in o0) { 243 | const item = o0[okey] 244 | result.objectAmount0++ 245 | if (ignoreMD5List.indexOf(item) !== -1) continue 246 | for (const key in o1) { 247 | await waitTick() 248 | const comp = o1[key] 249 | if (comp === item) { 250 | result.objectSame0.push(item) 251 | result.objectSameKey0[item] = okey 252 | result.objectSameAmount0++ 253 | break 254 | } 255 | } 256 | } 257 | for (const okey in o1) { 258 | const item = o1[okey] 259 | result.objectAmount1++ 260 | if (ignoreMD5List.indexOf(item) !== -1) continue 261 | for (const key in o0) { 262 | await waitTick() 263 | const comp = o0[key] 264 | if (comp === item) { 265 | result.objectSame1.push(item) 266 | result.objectSameKey1[item] = okey 267 | result.objectSameAmount1++ 268 | break 269 | } 270 | } 271 | } 272 | return result 273 | } 274 | 275 | async function transferSb2IfNeed (proj) { 276 | const projJSON = JSON.parse(await proj.file('project.json').async('string')) 277 | if (projJSON.objName !== undefined) { 278 | const vm = new VisualMachine() 279 | await vm.loadProject(projJSON) 280 | proj.file('project.json', vm.toJSON()) 281 | return jszip.loadAsync(vm.saveProjectSb3()) 282 | } 283 | } 284 | 285 | /** 286 | * Compare two project, return a result object. 287 | * @param {Buffer|ArrayBuffer|String|Blob|ReadableStream} project0 The project to compare. 288 | * @param {Buffer|ArrayBuffer|String|Blob|ReadableStream} project1 The project to be compared. 289 | * @param {Function} progress A function which will be invoked while comparing, taking a progress message as an argument. 290 | * @returns {Promise} The result. 291 | */ 292 | async function compare (project0, project1, progress = () => {}) { 293 | progress({ text: '正在转换工程版本', progress: 0 }) 294 | minilog.disable() 295 | const [zip0, zip1] = await Promise.all([jszip.loadAsync(project0), jszip.loadAsync(project1)]) 296 | transferSb2IfNeed(zip0) 297 | transferSb2IfNeed(zip1) 298 | progress({ text: '正在打开', progress: 0 }) 299 | const md50 = {} 300 | const md51 = {} 301 | const imgHash0 = {} 302 | const imgHash1 = {} 303 | const threads = [] 304 | const result = {} 305 | let fileTotal = 0 306 | let fileLoaded = 0 307 | /** 308 | * Collect file hash from zip. 309 | * @param {jszip} zip The JSZip Object contains file. 310 | * @param {Array} array An array object stores hashes. 311 | */ 312 | function collectHash (zip, array) { 313 | zip.forEach((rpath, file) => { 314 | if (rpath === 'project.json') return 315 | fileTotal++ 316 | threads.push((async () => { 317 | const data = await file.async('uint8array') 318 | const hash = md5(data) 319 | if (ignoreMD5List.indexOf(hash) === -1) { 320 | if (rpath.endsWith('.png')) { 321 | array[rpath] = md5(data) 322 | } else { 323 | array[rpath] = md5(data) 324 | } 325 | await waitTick() 326 | } 327 | fileLoaded++ 328 | progress({ text: `收集资源文件中 (${fileLoaded}/${fileTotal})`, progress: 5 + ((fileLoaded / fileTotal) * 30) }) 329 | // } 330 | })()) 331 | }) 332 | } 333 | 334 | collectHash(zip0, md50, imgHash0) 335 | collectHash(zip1, md51, imgHash1) 336 | await Promise.all(threads) 337 | // console.log(md50, md51) 338 | progress({ text: '对比资源文件中', progress: 35 }) 339 | result.assets = await compareAssets({ o0: md50, o1: md51, h0: imgHash0, h1: imgHash1, progress }) 340 | progress({ text: '分析代码中', progress: 50 }) 341 | const [projectJson0, projectJson1] = await Promise.all([ 342 | (async () => JSON.parse(await zip0.file('project.json').async('string')))(), 343 | (async () => JSON.parse(await zip1.file('project.json').async('string')))() 344 | ]) 345 | result.code = await compareCode(projectJson0, projectJson1, progress) 346 | progress({ text: '完成!', progress: 1 }) 347 | return result 348 | } 349 | 350 | module.exports = compare 351 | -------------------------------------------------------------------------------- /src/summary.js: -------------------------------------------------------------------------------- 1 | const chalk = require('chalk') 2 | 3 | const summaryList = [ 4 | [0.01, 'Completely different', chalk.gray], 5 | [0.1, 'A little same', chalk.cyan], 6 | [0.2, 'A few same', chalk.green], 7 | [0.5, 'Something same', chalk.yellow], 8 | [0.8, 'A lot of same', chalk.red], 9 | [1, 'Very same', chalk.bgYellow.red], 10 | [0, 'They are the same', chalk.bgRed.white], 11 | [0, 'Something is wrong', chalk.bgWhite.black] 12 | ] 13 | 14 | module.exports = (num, color = false) => { 15 | for (let i = 0; i < 6; i++) { 16 | if (num < summaryList[i][0]) { 17 | return color ? summaryList[i][2](summaryList[i][1]) : summaryList[i][1] 18 | } 19 | } 20 | if (num >= 1) { 21 | return color ? summaryList[6][2](summaryList[6][1]) : summaryList[6][1] 22 | } else { 23 | return color ? summaryList[7][2](summaryList[7][1]) : summaryList[7][1] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/winnowing.js: -------------------------------------------------------------------------------- 1 | const isNode = !(typeof window !== 'undefined' && window !== null) 2 | const md5 = data => isNode ? require('crypto').createHash('md5').update(data).digest('hex') : require('md5')(data) 3 | 4 | /** 5 | * @template T 6 | * @param {Generator} g 7 | * @returns {T} 8 | */ 9 | function genArray (g) { 10 | const result = [] 11 | for (const item of g) { 12 | result.push(item) 13 | } 14 | return result 15 | } 16 | 17 | class Winnowing { 18 | /** 19 | * 创建一个字符串指纹算法对象 20 | * @param {number} k 字符串分组长度 21 | * @param {number} w 窗口长度 22 | */ 23 | constructor (k = 5, w = 10) { 24 | this.k = k 25 | this.w = w 26 | this.str = '' 27 | } 28 | 29 | /** 30 | * 计算字符串,并取其中一段作为数字传回 31 | * @param {string} str 需要计算的字符串 32 | * @private 33 | */ 34 | _hash (str) { 35 | return parseInt(md5(str).substr(0, 8), 16) 36 | } 37 | 38 | /** 39 | * 对数组或字符串进行 k-grams 分组 40 | * @template T[] 41 | * @param {T[]} l 需要计算的数组 42 | * @param {number} size 分组大小 43 | * @yields {T} 44 | * @generator 45 | * @private 46 | */ 47 | * _kgrams (l, size) { 48 | const n = l.length 49 | if (n < size) { 50 | yield l 51 | } else { 52 | for (let i = 0; i < n - size + 1; i++) { 53 | yield l.slice(i, i + size) 54 | } 55 | } 56 | } 57 | 58 | /** 59 | * 计算字符串,返回一个指纹字符串 60 | * @param {string} str 需要计算的字符串 61 | */ 62 | fingerprint (str) { 63 | let minNum = Number.MAX_SAFE_INTEGER 64 | const result = [] 65 | const kstr = genArray(this._kgrams(str, this.k)).map(this._hash) 66 | for (const item of this._kgrams(kstr, this.w)) { 67 | minNum = item[0] 68 | for (const i of item) { 69 | if (minNum < i) { 70 | minNum = i 71 | } 72 | } 73 | result.push(minNum) 74 | } 75 | return result 76 | } 77 | } 78 | 79 | module.exports = Winnowing 80 | -------------------------------------------------------------------------------- /test/TestProject-VerySame-0.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Steve-xmh/scratch-source-comparer/939949fb018b089015e154e62f4244b0c6bd8aa5/test/TestProject-VerySame-0.sb3 -------------------------------------------------------------------------------- /test/TestProject-VerySame-1.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Steve-xmh/scratch-source-comparer/939949fb018b089015e154e62f4244b0c6bd8aa5/test/TestProject-VerySame-1.sb3 -------------------------------------------------------------------------------- /test/TestProject0.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Steve-xmh/scratch-source-comparer/939949fb018b089015e154e62f4244b0c6bd8aa5/test/TestProject0.sb3 -------------------------------------------------------------------------------- /test/TestProject1.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Steve-xmh/scratch-source-comparer/939949fb018b089015e154e62f4244b0c6bd8aa5/test/TestProject1.sb3 -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | const comparer = require('../src') 2 | const fs = require('fs') 3 | const { join } = require('path') 4 | /* 5 | comparer(fs.readFileSync(join(__dirname, './TestProject0.sb3')), fs.readFileSync(join(__dirname, './TestProject1.sb3'))) 6 | .then((v) => console.log(v)) 7 | */ 8 | let lastLen = 0 9 | comparer( 10 | fs.readFileSync(join(__dirname, './TestProject-VerySame-0.sb3')), 11 | fs.readFileSync(join(__dirname, './TestProject-VerySame-1.sb3')), 12 | msg => { 13 | const printStr = msg.progress.toFixed(2) + ' ' + msg.text 14 | process.stdout.write(printStr + ' '.repeat((lastLen - printStr.length) > 0 ? (lastLen - printStr.length) : 0) + '\r') 15 | lastLen = printStr.length 16 | } 17 | ).then(async (v) => { 18 | process.stdout.write(' '.repeat(lastLen) + '\n') 19 | console.log(v) 20 | console.log(`Generated json length: ${JSON.stringify(v).length}`) 21 | }) 22 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4= 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/helper-validator-identifier@^7.9.0": 13 | version "7.9.0" 14 | resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.9.0.tgz?cache=0&sync_timestamp=1584719193803&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" 15 | integrity sha1-rVNWKn/Cmzuakbv30QOX/RRjRu0= 16 | 17 | "@babel/highlight@^7.8.3": 18 | version "7.9.0" 19 | resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" 20 | integrity sha1-TptFzLgreWBycbKXmtgse2gWMHk= 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.9.0" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@types/color-name@^1.1.1": 27 | version "1.1.1" 28 | resolved "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&sync_timestamp=1580841414080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 29 | integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA= 30 | 31 | "@types/node@^12.7.1", "@types/node@^12.7.2": 32 | version "12.12.34" 33 | resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-12.12.34.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.12.34.tgz#0a5d6ae5d22612f0cf5f10320e1fc5d2a745dcb8" 34 | integrity sha1-Cl1q5dImEvDPXxAyDh/F0qdF3Lg= 35 | 36 | "@types/pako@^1.0.1": 37 | version "1.0.1" 38 | resolved "https://registry.npm.taobao.org/@types/pako/download/@types/pako-1.0.1.tgz#33b237f3c9aff44d0f82fe63acffa4a365ef4a61" 39 | integrity sha1-M7I388mv9E0Pgv5jrP+ko2XvSmE= 40 | 41 | "@vernier/godirect@1.5.0": 42 | version "1.5.0" 43 | resolved "https://registry.npm.taobao.org/@vernier/godirect/download/@vernier/godirect-1.5.0.tgz#0c6f08dcf8ab90abda96c219b4f2dcbbcd29f778" 44 | integrity sha1-DG8I3PirkKvalsIZtPLcu80p93g= 45 | 46 | abbrev@1: 47 | version "1.1.1" 48 | resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 49 | integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= 50 | 51 | acorn-jsx@^5.2.0: 52 | version "5.2.0" 53 | resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz?cache=0&sync_timestamp=1582724321020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 54 | integrity sha1-TGYGkXPW/daO2FI5/CViJhgrLr4= 55 | 56 | acorn@^7.1.1: 57 | version "7.1.1" 58 | resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz?cache=0&sync_timestamp=1583796706535&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" 59 | integrity sha1-41Zo3gtALzWd5RXFSCoaufiaab8= 60 | 61 | aggregate-error@^3.0.0: 62 | version "3.0.1" 63 | resolved "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" 64 | integrity sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA= 65 | dependencies: 66 | clean-stack "^2.0.0" 67 | indent-string "^4.0.0" 68 | 69 | ajv-keywords@^3.1.0: 70 | version "3.4.1" 71 | resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" 72 | integrity sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo= 73 | 74 | ajv@6.3.0: 75 | version "6.3.0" 76 | resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.3.0.tgz?cache=0&sync_timestamp=1582379551272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.3.0.tgz#1650a41114ef00574cac10b8032d8f4c14812da7" 77 | integrity sha1-FlCkERTvAFdMrBC4Ay2PTBSBLac= 78 | dependencies: 79 | fast-deep-equal "^1.0.0" 80 | fast-json-stable-stringify "^2.0.0" 81 | json-schema-traverse "^0.3.0" 82 | 83 | ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: 84 | version "6.12.0" 85 | resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.12.0.tgz?cache=0&sync_timestamp=1582379551272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" 86 | integrity sha1-BtYLlth7hFSlrauobnhU2mKdtLc= 87 | dependencies: 88 | fast-deep-equal "^3.1.1" 89 | fast-json-stable-stringify "^2.0.0" 90 | json-schema-traverse "^0.4.1" 91 | uri-js "^4.2.2" 92 | 93 | ansi-escapes@^4.2.1: 94 | version "4.3.1" 95 | resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz?cache=0&sync_timestamp=1583072804444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 96 | integrity sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE= 97 | dependencies: 98 | type-fest "^0.11.0" 99 | 100 | ansi-regex@^4.1.0: 101 | version "4.1.0" 102 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 103 | integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= 104 | 105 | ansi-regex@^5.0.0: 106 | version "5.0.0" 107 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 108 | integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= 109 | 110 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 111 | version "3.2.1" 112 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 113 | integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= 114 | dependencies: 115 | color-convert "^1.9.0" 116 | 117 | ansi-styles@^4.1.0: 118 | version "4.2.1" 119 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 120 | integrity sha1-kK51xCTQCNJiTFvynq0xd+v881k= 121 | dependencies: 122 | "@types/color-name" "^1.1.1" 123 | color-convert "^2.0.1" 124 | 125 | argparse@^1.0.7: 126 | version "1.0.10" 127 | resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 128 | integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= 129 | dependencies: 130 | sprintf-js "~1.0.2" 131 | 132 | array-includes@^3.0.3: 133 | version "3.1.1" 134 | resolved "https://registry.npm.taobao.org/array-includes/download/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" 135 | integrity sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g= 136 | dependencies: 137 | define-properties "^1.1.3" 138 | es-abstract "^1.17.0" 139 | is-string "^1.0.5" 140 | 141 | array.prototype.flat@^1.2.1: 142 | version "1.2.3" 143 | resolved "https://registry.npm.taobao.org/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" 144 | integrity sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs= 145 | dependencies: 146 | define-properties "^1.1.3" 147 | es-abstract "^1.17.0-next.1" 148 | 149 | arraybuffer-loader@^1.0.6: 150 | version "1.0.8" 151 | resolved "https://registry.npm.taobao.org/arraybuffer-loader/download/arraybuffer-loader-1.0.8.tgz#3e326be5cdf6454782362823d43a8c33bb1dd276" 152 | integrity sha1-PjJr5c32RUeCNigj1DqMM7sd0nY= 153 | dependencies: 154 | loader-utils "^1.1.0" 155 | 156 | asn1@~0.2.3: 157 | version "0.2.4" 158 | resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 159 | integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY= 160 | dependencies: 161 | safer-buffer "~2.1.0" 162 | 163 | assert-plus@1.0.0, assert-plus@^1.0.0: 164 | version "1.0.0" 165 | resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 166 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 167 | 168 | astral-regex@^1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 171 | integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= 172 | 173 | asynckit@^0.4.0: 174 | version "0.4.0" 175 | resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 176 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 177 | 178 | atob@2.1.2: 179 | version "2.1.2" 180 | resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 181 | integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= 182 | 183 | aws-sign2@~0.7.0: 184 | version "0.7.0" 185 | resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 186 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 187 | 188 | aws4@^1.8.0: 189 | version "1.9.1" 190 | resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 191 | integrity sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4= 192 | 193 | balanced-match@^1.0.0: 194 | version "1.0.0" 195 | resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 196 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 197 | 198 | bcrypt-pbkdf@^1.0.0: 199 | version "1.0.2" 200 | resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 201 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 202 | dependencies: 203 | tweetnacl "^0.14.3" 204 | 205 | beautify@0.0.8: 206 | version "0.0.8" 207 | resolved "https://registry.npm.taobao.org/beautify/download/beautify-0.0.8.tgz#e4ff755c2cd56727de0ccc1e6cc5d3ca0c52088d" 208 | integrity sha1-5P91XCzVZyfeDMwebMXTygxSCI0= 209 | dependencies: 210 | cssbeautify "^0.3.1" 211 | html "^1.0.0" 212 | js-beautify "^1.6.4" 213 | 214 | big.js@^5.2.2: 215 | version "5.2.2" 216 | resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 217 | integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg= 218 | 219 | blob-util@^2.0.2: 220 | version "2.0.2" 221 | resolved "https://registry.npm.taobao.org/blob-util/download/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" 222 | integrity sha1-O048KBERu38REoUYAGzcYLQDoes= 223 | 224 | brace-expansion@^1.1.7: 225 | version "1.1.11" 226 | resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 227 | integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= 228 | dependencies: 229 | balanced-match "^1.0.0" 230 | concat-map "0.0.1" 231 | 232 | btoa@1.2.1: 233 | version "1.2.1" 234 | resolved "https://registry.npm.taobao.org/btoa/download/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" 235 | integrity sha1-AamQn4ssk/a/aAuiYTHrMPf6PXM= 236 | 237 | buffer-from@^1.0.0: 238 | version "1.1.1" 239 | resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 240 | integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8= 241 | 242 | callsites@^3.0.0: 243 | version "3.1.0" 244 | resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 245 | integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= 246 | 247 | canny-edge-detector@^1.0.0: 248 | version "1.0.0" 249 | resolved "https://registry.npm.taobao.org/canny-edge-detector/download/canny-edge-detector-1.0.0.tgz#41f4cc3e09c0802a5269a05e7bff3dbf09169c97" 250 | integrity sha1-QfTMPgnAgCpSaaBee/89vwkWnJc= 251 | 252 | canvas-toBlob@1.0.0: 253 | version "1.0.0" 254 | resolved "https://registry.npm.taobao.org/canvas-toBlob/download/canvas-toBlob-1.0.0.tgz#9bf32b286bb4e125218b208eecc8321fd033e6c3" 255 | integrity sha1-m/MrKGu04SUhiyCO7MgyH9Az5sM= 256 | 257 | caseless@~0.12.0: 258 | version "0.12.0" 259 | resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 260 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 261 | 262 | chalk@^2.0.0, chalk@^2.1.0: 263 | version "2.4.2" 264 | resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 265 | integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= 266 | dependencies: 267 | ansi-styles "^3.2.1" 268 | escape-string-regexp "^1.0.5" 269 | supports-color "^5.3.0" 270 | 271 | chalk@^3.0.0: 272 | version "3.0.0" 273 | resolved "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 274 | integrity sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ= 275 | dependencies: 276 | ansi-styles "^4.1.0" 277 | supports-color "^7.1.0" 278 | 279 | chardet@^0.7.0: 280 | version "0.7.0" 281 | resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 282 | integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= 283 | 284 | charenc@~0.0.1: 285 | version "0.0.2" 286 | resolved "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" 287 | integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= 288 | 289 | clean-stack@^2.0.0: 290 | version "2.2.0" 291 | resolved "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 292 | integrity sha1-7oRy27Ep5yezHooQpCfe6d/kAIs= 293 | 294 | cli-cursor@^3.1.0: 295 | version "3.1.0" 296 | resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 297 | integrity sha1-JkMFp65JDR0Dvwybp8kl0XU68wc= 298 | dependencies: 299 | restore-cursor "^3.1.0" 300 | 301 | cli-width@^2.0.0: 302 | version "2.2.0" 303 | resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 304 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 305 | 306 | color-convert@^1.9.0: 307 | version "1.9.3" 308 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 309 | integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= 310 | dependencies: 311 | color-name "1.1.3" 312 | 313 | color-convert@^2.0.1: 314 | version "2.0.1" 315 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 316 | integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= 317 | dependencies: 318 | color-name "~1.1.4" 319 | 320 | color-functions@^3.0.1: 321 | version "3.0.1" 322 | resolved "https://registry.npm.taobao.org/color-functions/download/color-functions-3.0.1.tgz#a207e2d4a0975dccc72fcd37cce12d2d4bf8b674" 323 | integrity sha1-ogfi1KCXXczHL803zOEtLUv4tnQ= 324 | 325 | color-name@1.1.3: 326 | version "1.1.3" 327 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 328 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 329 | 330 | color-name@~1.1.4: 331 | version "1.1.4" 332 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 333 | integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= 334 | 335 | colors@^1.4.0: 336 | version "1.4.0" 337 | resolved "https://registry.npm.taobao.org/colors/download/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 338 | integrity sha1-xQSRR51MG9rtLJztMs98fcI2D3g= 339 | 340 | combined-stream@^1.0.6, combined-stream@~1.0.6: 341 | version "1.0.8" 342 | resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 343 | integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= 344 | dependencies: 345 | delayed-stream "~1.0.0" 346 | 347 | commander@^2.19.0: 348 | version "2.20.3" 349 | resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 350 | integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM= 351 | 352 | concat-map@0.0.1: 353 | version "0.0.1" 354 | resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 355 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 356 | 357 | concat-stream@^1.4.7: 358 | version "1.6.2" 359 | resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 360 | integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ= 361 | dependencies: 362 | buffer-from "^1.0.0" 363 | inherits "^2.0.3" 364 | readable-stream "^2.2.2" 365 | typedarray "^0.0.6" 366 | 367 | config-chain@^1.1.12: 368 | version "1.1.12" 369 | resolved "https://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" 370 | integrity sha1-D96NCRIA616AjK8l/mGMAvSOTvo= 371 | dependencies: 372 | ini "^1.3.4" 373 | proto-list "~1.2.1" 374 | 375 | contains-path@^0.1.0: 376 | version "0.1.0" 377 | resolved "https://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 378 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 379 | 380 | core-js@~2.3.0: 381 | version "2.3.0" 382 | resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" 383 | integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= 384 | 385 | core-util-is@1.0.2, core-util-is@~1.0.0: 386 | version "1.0.2" 387 | resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 388 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 389 | 390 | cross-spawn@^6.0.5: 391 | version "6.0.5" 392 | resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 393 | integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= 394 | dependencies: 395 | nice-try "^1.0.4" 396 | path-key "^2.0.1" 397 | semver "^5.5.0" 398 | shebang-command "^1.2.0" 399 | which "^1.2.9" 400 | 401 | crypt@~0.0.1: 402 | version "0.0.2" 403 | resolved "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" 404 | integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= 405 | 406 | cssbeautify@^0.3.1: 407 | version "0.3.1" 408 | resolved "https://registry.npm.taobao.org/cssbeautify/download/cssbeautify-0.3.1.tgz#12dd1f734035c2e6faca67dcbdcef74e42811397" 409 | integrity sha1-Et0fc0A1wub6ymfcvc73TkKBE5c= 410 | 411 | dashdash@^1.12.0: 412 | version "1.14.1" 413 | resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 414 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 415 | dependencies: 416 | assert-plus "^1.0.0" 417 | 418 | debug@^2.6.9: 419 | version "2.6.9" 420 | resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 421 | integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= 422 | dependencies: 423 | ms "2.0.0" 424 | 425 | debug@^4.0.1: 426 | version "4.1.1" 427 | resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 428 | integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= 429 | dependencies: 430 | ms "^2.1.1" 431 | 432 | decode-html@2.0.0: 433 | version "2.0.0" 434 | resolved "https://registry.npm.taobao.org/decode-html/download/decode-html-2.0.0.tgz#7d0a887ce44280e60978a707ebb7f8081fd61eaa" 435 | integrity sha1-fQqIfORCgOYJeKcH67f4CB/WHqo= 436 | 437 | deep-is@~0.1.3: 438 | version "0.1.3" 439 | resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 440 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 441 | 442 | define-properties@^1.1.2, define-properties@^1.1.3: 443 | version "1.1.3" 444 | resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 445 | integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= 446 | dependencies: 447 | object-keys "^1.0.12" 448 | 449 | delayed-stream@~1.0.0: 450 | version "1.0.0" 451 | resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 452 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 453 | 454 | diff-match-patch@1.0.4: 455 | version "1.0.4" 456 | resolved "https://registry.npm.taobao.org/diff-match-patch/download/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1" 457 | integrity sha1-asS1UjdGN2HE2vDcYD64aRJHRLE= 458 | 459 | doctrine@1.5.0: 460 | version "1.5.0" 461 | resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 462 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 463 | dependencies: 464 | esutils "^2.0.2" 465 | isarray "^1.0.0" 466 | 467 | doctrine@^3.0.0: 468 | version "3.0.0" 469 | resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 470 | integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE= 471 | dependencies: 472 | esutils "^2.0.2" 473 | 474 | dom-serializer@0: 475 | version "0.2.2" 476 | resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" 477 | integrity sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E= 478 | dependencies: 479 | domelementtype "^2.0.1" 480 | entities "^2.0.0" 481 | 482 | dom-walk@^0.1.0: 483 | version "0.1.2" 484 | resolved "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" 485 | integrity sha1-DFSL7wSPTR8qlySQAiNgYNqj/YQ= 486 | 487 | domelementtype@1, domelementtype@^1.3.0: 488 | version "1.3.1" 489 | resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" 490 | integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= 491 | 492 | domelementtype@^2.0.1: 493 | version "2.0.1" 494 | resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" 495 | integrity sha1-H4vf6R9aeAYydOgDtL3O326U+U0= 496 | 497 | domhandler@^2.3.0: 498 | version "2.4.2" 499 | resolved "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" 500 | integrity sha1-iAUJfpM9ZehVRvcm1g9euItE+AM= 501 | dependencies: 502 | domelementtype "1" 503 | 504 | domutils@^1.5.1: 505 | version "1.7.0" 506 | resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" 507 | integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= 508 | dependencies: 509 | dom-serializer "0" 510 | domelementtype "1" 511 | 512 | ecc-jsbn@~0.1.1: 513 | version "0.1.2" 514 | resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 515 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 516 | dependencies: 517 | jsbn "~0.1.0" 518 | safer-buffer "^2.1.0" 519 | 520 | editorconfig@^0.15.3: 521 | version "0.15.3" 522 | resolved "https://registry.npm.taobao.org/editorconfig/download/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" 523 | integrity sha1-vvhMTnX7jcsM5c7o79UcFZmb78U= 524 | dependencies: 525 | commander "^2.19.0" 526 | lru-cache "^4.1.5" 527 | semver "^5.6.0" 528 | sigmund "^1.0.1" 529 | 530 | emoji-regex@^7.0.1: 531 | version "7.0.3" 532 | resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 533 | integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= 534 | 535 | emoji-regex@^8.0.0: 536 | version "8.0.0" 537 | resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 538 | integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= 539 | 540 | emojis-list@^3.0.0: 541 | version "3.0.0" 542 | resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" 543 | integrity sha1-VXBmIEatKeLpFucariYKvf9Pang= 544 | 545 | entities@^1.1.1: 546 | version "1.1.2" 547 | resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 548 | integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= 549 | 550 | entities@^2.0.0: 551 | version "2.0.0" 552 | resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" 553 | integrity sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q= 554 | 555 | error-ex@^1.2.0: 556 | version "1.3.2" 557 | resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 558 | integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8= 559 | dependencies: 560 | is-arrayish "^0.2.1" 561 | 562 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: 563 | version "1.17.4" 564 | resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" 565 | integrity sha1-467fGXBrIOfCWUw1/A1XYFp54YQ= 566 | dependencies: 567 | es-to-primitive "^1.2.1" 568 | function-bind "^1.1.1" 569 | has "^1.0.3" 570 | has-symbols "^1.0.1" 571 | is-callable "^1.1.5" 572 | is-regex "^1.0.5" 573 | object-inspect "^1.7.0" 574 | object-keys "^1.1.1" 575 | object.assign "^4.1.0" 576 | string.prototype.trimleft "^2.1.1" 577 | string.prototype.trimright "^2.1.1" 578 | 579 | es-to-primitive@^1.2.1: 580 | version "1.2.1" 581 | resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 582 | integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo= 583 | dependencies: 584 | is-callable "^1.1.4" 585 | is-date-object "^1.0.1" 586 | is-symbol "^1.0.2" 587 | 588 | es6-promise@~3.0.2: 589 | version "3.0.2" 590 | resolved "https://registry.npm.taobao.org/es6-promise/download/es6-promise-3.0.2.tgz?cache=0&sync_timestamp=1579714331016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes6-promise%2Fdownload%2Fes6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" 591 | integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= 592 | 593 | escape-string-regexp@^1.0.5: 594 | version "1.0.5" 595 | resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 596 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 597 | 598 | eslint-config-standard@^14.1.0: 599 | version "14.1.1" 600 | resolved "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" 601 | integrity sha1-gwqOROeu995nRkl5rQa0BgJsVuo= 602 | 603 | eslint-import-resolver-node@^0.3.2: 604 | version "0.3.3" 605 | resolved "https://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" 606 | integrity sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ= 607 | dependencies: 608 | debug "^2.6.9" 609 | resolve "^1.13.1" 610 | 611 | eslint-module-utils@^2.4.1: 612 | version "2.5.2" 613 | resolved "https://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" 614 | integrity sha1-eHj3UEgk4bhX3SUFtZqOXtompwg= 615 | dependencies: 616 | debug "^2.6.9" 617 | pkg-dir "^2.0.0" 618 | 619 | eslint-plugin-es@^3.0.0: 620 | version "3.0.0" 621 | resolved "https://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-3.0.0.tgz#98cb1bc8ab0aa807977855e11ad9d1c9422d014b" 622 | integrity sha1-mMsbyKsKqAeXeFXhGtnRyUItAUs= 623 | dependencies: 624 | eslint-utils "^2.0.0" 625 | regexpp "^3.0.0" 626 | 627 | eslint-plugin-import@^2.20.1: 628 | version "2.20.1" 629 | resolved "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.20.1.tgz?cache=0&sync_timestamp=1580631067124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-import%2Fdownload%2Feslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" 630 | integrity sha1-gCQjGW3LEdnOhDWl/AKm07RpObM= 631 | dependencies: 632 | array-includes "^3.0.3" 633 | array.prototype.flat "^1.2.1" 634 | contains-path "^0.1.0" 635 | debug "^2.6.9" 636 | doctrine "1.5.0" 637 | eslint-import-resolver-node "^0.3.2" 638 | eslint-module-utils "^2.4.1" 639 | has "^1.0.3" 640 | minimatch "^3.0.4" 641 | object.values "^1.1.0" 642 | read-pkg-up "^2.0.0" 643 | resolve "^1.12.0" 644 | 645 | eslint-plugin-node@^11.0.0: 646 | version "11.0.0" 647 | resolved "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" 648 | integrity sha1-NllEuwgExdHVARgqm8QaD/7+1yY= 649 | dependencies: 650 | eslint-plugin-es "^3.0.0" 651 | eslint-utils "^2.0.0" 652 | ignore "^5.1.1" 653 | minimatch "^3.0.4" 654 | resolve "^1.10.1" 655 | semver "^6.1.0" 656 | 657 | eslint-plugin-promise@^4.2.1: 658 | version "4.2.1" 659 | resolved "https://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" 660 | integrity sha1-hF/YsiYK2PglZMEiL85ErXHZQYo= 661 | 662 | eslint-plugin-standard@^4.0.1: 663 | version "4.0.1" 664 | resolved "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" 665 | integrity sha1-/wUZ9/+v8RT3bRvXw5lu7w9uILQ= 666 | 667 | eslint-scope@^5.0.0: 668 | version "5.0.0" 669 | resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 670 | integrity sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k= 671 | dependencies: 672 | esrecurse "^4.1.0" 673 | estraverse "^4.1.1" 674 | 675 | eslint-utils@^1.4.3: 676 | version "1.4.3" 677 | resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 678 | integrity sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8= 679 | dependencies: 680 | eslint-visitor-keys "^1.1.0" 681 | 682 | eslint-utils@^2.0.0: 683 | version "2.0.0" 684 | resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" 685 | integrity sha1-e+HMcPJ6cqds0UqmmLyr7WiQ4c0= 686 | dependencies: 687 | eslint-visitor-keys "^1.1.0" 688 | 689 | eslint-visitor-keys@^1.1.0: 690 | version "1.1.0" 691 | resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 692 | integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI= 693 | 694 | eslint@^6.8.0: 695 | version "6.8.0" 696 | resolved "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" 697 | integrity sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s= 698 | dependencies: 699 | "@babel/code-frame" "^7.0.0" 700 | ajv "^6.10.0" 701 | chalk "^2.1.0" 702 | cross-spawn "^6.0.5" 703 | debug "^4.0.1" 704 | doctrine "^3.0.0" 705 | eslint-scope "^5.0.0" 706 | eslint-utils "^1.4.3" 707 | eslint-visitor-keys "^1.1.0" 708 | espree "^6.1.2" 709 | esquery "^1.0.1" 710 | esutils "^2.0.2" 711 | file-entry-cache "^5.0.1" 712 | functional-red-black-tree "^1.0.1" 713 | glob-parent "^5.0.0" 714 | globals "^12.1.0" 715 | ignore "^4.0.6" 716 | import-fresh "^3.0.0" 717 | imurmurhash "^0.1.4" 718 | inquirer "^7.0.0" 719 | is-glob "^4.0.0" 720 | js-yaml "^3.13.1" 721 | json-stable-stringify-without-jsonify "^1.0.1" 722 | levn "^0.3.0" 723 | lodash "^4.17.14" 724 | minimatch "^3.0.4" 725 | mkdirp "^0.5.1" 726 | natural-compare "^1.4.0" 727 | optionator "^0.8.3" 728 | progress "^2.0.0" 729 | regexpp "^2.0.1" 730 | semver "^6.1.2" 731 | strip-ansi "^5.2.0" 732 | strip-json-comments "^3.0.1" 733 | table "^5.2.3" 734 | text-table "^0.2.0" 735 | v8-compile-cache "^2.0.3" 736 | 737 | espree@^6.1.2: 738 | version "6.2.1" 739 | resolved "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1583870554969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" 740 | integrity sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o= 741 | dependencies: 742 | acorn "^7.1.1" 743 | acorn-jsx "^5.2.0" 744 | eslint-visitor-keys "^1.1.0" 745 | 746 | esprima@^4.0.0: 747 | version "4.0.1" 748 | resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 749 | integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= 750 | 751 | esquery@^1.0.1: 752 | version "1.1.0" 753 | resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" 754 | integrity sha1-xcC2bzg+dlZAT4azEzTXJSTt20g= 755 | dependencies: 756 | estraverse "^4.0.0" 757 | 758 | esrecurse@^4.1.0: 759 | version "4.2.1" 760 | resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 761 | integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8= 762 | dependencies: 763 | estraverse "^4.1.0" 764 | 765 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 766 | version "4.3.0" 767 | resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 768 | integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= 769 | 770 | esutils@^2.0.2: 771 | version "2.0.3" 772 | resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 773 | integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= 774 | 775 | extend@~3.0.2: 776 | version "3.0.2" 777 | resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 778 | integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= 779 | 780 | external-editor@^3.0.3: 781 | version "3.1.0" 782 | resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 783 | integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= 784 | dependencies: 785 | chardet "^0.7.0" 786 | iconv-lite "^0.4.24" 787 | tmp "^0.0.33" 788 | 789 | extsprintf@1.3.0: 790 | version "1.3.0" 791 | resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 792 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 793 | 794 | extsprintf@^1.2.0: 795 | version "1.4.0" 796 | resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 797 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 798 | 799 | fast-bmp@^1.0.0: 800 | version "1.0.0" 801 | resolved "https://registry.npm.taobao.org/fast-bmp/download/fast-bmp-1.0.0.tgz#7de95f42c290484090ae2c70ab25440673acca37" 802 | integrity sha1-felfQsKQSECQrixwqyVEBnOsyjc= 803 | dependencies: 804 | iobuffer "^3.1.0" 805 | 806 | fast-deep-equal@^1.0.0: 807 | version "1.1.0" 808 | resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 809 | integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= 810 | 811 | fast-deep-equal@^3.1.1: 812 | version "3.1.1" 813 | resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 814 | integrity sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ= 815 | 816 | fast-jpeg@^1.0.1: 817 | version "1.0.1" 818 | resolved "https://registry.npm.taobao.org/fast-jpeg/download/fast-jpeg-1.0.1.tgz#bd545ec6cd82430ca5ded4bd30bbd061fafecf8b" 819 | integrity sha1-vVRexs2CQwyl3tS9MLvQYfr+z4s= 820 | dependencies: 821 | iobuffer "^2.1.0" 822 | tiff "^2.0.0" 823 | 824 | fast-json-stable-stringify@^2.0.0: 825 | version "2.1.0" 826 | resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 827 | integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM= 828 | 829 | fast-levenshtein@~2.0.6: 830 | version "2.0.6" 831 | resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 832 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 833 | 834 | fast-list@^1.0.3: 835 | version "1.0.3" 836 | resolved "https://registry.npm.taobao.org/fast-list/download/fast-list-1.0.3.tgz#f5d5754a7c1cbf682a15961ef9a063897571eaa1" 837 | integrity sha1-9dV1Snwcv2gqFZYe+aBjiXVx6qE= 838 | 839 | fast-png@^5.0.2: 840 | version "5.0.2" 841 | resolved "https://registry.npm.taobao.org/fast-png/download/fast-png-5.0.2.tgz#2e689005ef89cbe4ba0200ff43f7da171a83ab5d" 842 | integrity sha1-LmiQBe+Jy+S6AgD/Q/faFxqDq10= 843 | dependencies: 844 | "@types/pako" "^1.0.1" 845 | iobuffer "^5.0.2" 846 | pako "^1.0.10" 847 | 848 | fft.js@^4.0.3: 849 | version "4.0.3" 850 | resolved "https://registry.npm.taobao.org/fft.js/download/fft.js-4.0.3.tgz#b0084efa94188febdd1cffe68691f4c85a0fb8cb" 851 | integrity sha1-sAhO+pQYj+vdHP/mhpH0yFoPuMs= 852 | 853 | figures@^3.0.0: 854 | version "3.2.0" 855 | resolved "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz?cache=0&sync_timestamp=1581865740608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 856 | integrity sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8= 857 | dependencies: 858 | escape-string-regexp "^1.0.5" 859 | 860 | file-entry-cache@^5.0.1: 861 | version "5.0.1" 862 | resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 863 | integrity sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w= 864 | dependencies: 865 | flat-cache "^2.0.1" 866 | 867 | file-saver@^2.0.2: 868 | version "2.0.2" 869 | resolved "https://registry.npm.taobao.org/file-saver/download/file-saver-2.0.2.tgz#06d6e728a9ea2df2cce2f8d9e84dfcdc338ec17a" 870 | integrity sha1-BtbnKKnqLfLM4vjZ6E383DOOwXo= 871 | 872 | file-type@^10.10.0: 873 | version "10.11.0" 874 | resolved "https://registry.npm.taobao.org/file-type/download/file-type-10.11.0.tgz?cache=0&sync_timestamp=1583907106149&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" 875 | integrity sha1-KWHQnkZ1ufuaPua2npzSP0P9GJA= 876 | 877 | find-up@^2.0.0, find-up@^2.1.0: 878 | version "2.1.0" 879 | resolved "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 880 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 881 | dependencies: 882 | locate-path "^2.0.0" 883 | 884 | flat-cache@^2.0.1: 885 | version "2.0.1" 886 | resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 887 | integrity sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA= 888 | dependencies: 889 | flatted "^2.0.0" 890 | rimraf "2.6.3" 891 | write "1.0.3" 892 | 893 | flatted@^2.0.0: 894 | version "2.0.1" 895 | resolved "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" 896 | integrity sha1-aeV8qo8OrLwoHS4stFjUb9tEngg= 897 | 898 | forever-agent@~0.6.1: 899 | version "0.6.1" 900 | resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 901 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 902 | 903 | form-data@~2.3.2: 904 | version "2.3.3" 905 | resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 906 | integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y= 907 | dependencies: 908 | asynckit "^0.4.0" 909 | combined-stream "^1.0.6" 910 | mime-types "^2.1.12" 911 | 912 | format-message-formats@^6.2.0: 913 | version "6.2.0" 914 | resolved "https://registry.npm.taobao.org/format-message-formats/download/format-message-formats-6.2.0.tgz#231c2a3d2806e3200331c7aa06430cb403f58792" 915 | integrity sha1-IxwqPSgG4yADMceqBkMMtAP1h5I= 916 | 917 | format-message-interpret@^6.2.0: 918 | version "6.2.3" 919 | resolved "https://registry.npm.taobao.org/format-message-interpret/download/format-message-interpret-6.2.3.tgz#ee72fe924102c7d3f0c2d12797f53d8d93795810" 920 | integrity sha1-7nL+kkECx9PwwtEnl/U9jZN5WBA= 921 | dependencies: 922 | format-message-formats "^6.2.0" 923 | lookup-closest-locale "^6.2.0" 924 | 925 | format-message-parse@^6.2.0: 926 | version "6.2.3" 927 | resolved "https://registry.npm.taobao.org/format-message-parse/download/format-message-parse-6.2.3.tgz#1393d9e2bc598603a36be992379781a78d1b6c08" 928 | integrity sha1-E5PZ4rxZhgOja+mSN5eBp40bbAg= 929 | 930 | format-message@6.2.1: 931 | version "6.2.1" 932 | resolved "https://registry.npm.taobao.org/format-message/download/format-message-6.2.1.tgz#90a27d28960d4114f99912fd51cda1789bdd3ff0" 933 | integrity sha1-kKJ9KJYNQRT5mRL9Uc2heJvdP/A= 934 | dependencies: 935 | format-message-formats "^6.2.0" 936 | format-message-interpret "^6.2.0" 937 | format-message-parse "^6.2.0" 938 | lookup-closest-locale "^6.2.0" 939 | 940 | fs.realpath@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 943 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 944 | 945 | function-bind@^1.1.1: 946 | version "1.1.1" 947 | resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 948 | integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= 949 | 950 | functional-red-black-tree@^1.0.1: 951 | version "1.0.1" 952 | resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 953 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 954 | 955 | getpass@^0.1.1: 956 | version "0.1.7" 957 | resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 958 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 959 | dependencies: 960 | assert-plus "^1.0.0" 961 | 962 | glob-parent@^5.0.0: 963 | version "5.1.0" 964 | resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 965 | integrity sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI= 966 | dependencies: 967 | is-glob "^4.0.1" 968 | 969 | glob@^7.1.3: 970 | version "7.1.6" 971 | resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 972 | integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= 973 | dependencies: 974 | fs.realpath "^1.0.0" 975 | inflight "^1.0.4" 976 | inherits "2" 977 | minimatch "^3.0.4" 978 | once "^1.3.0" 979 | path-is-absolute "^1.0.0" 980 | 981 | global@~4.3.0: 982 | version "4.3.2" 983 | resolved "https://registry.npm.taobao.org/global/download/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" 984 | integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= 985 | dependencies: 986 | min-document "^2.19.0" 987 | process "~0.5.1" 988 | 989 | globals@^12.1.0: 990 | version "12.4.0" 991 | resolved "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1583747623625&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 992 | integrity sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg= 993 | dependencies: 994 | type-fest "^0.8.1" 995 | 996 | graceful-fs@^4.1.2: 997 | version "4.2.3" 998 | resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 999 | integrity sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM= 1000 | 1001 | har-schema@^2.0.0: 1002 | version "2.0.0" 1003 | resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1004 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1005 | 1006 | har-validator@~5.1.3: 1007 | version "5.1.3" 1008 | resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1009 | integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA= 1010 | dependencies: 1011 | ajv "^6.5.5" 1012 | har-schema "^2.0.0" 1013 | 1014 | has-flag@^3.0.0: 1015 | version "3.0.0" 1016 | resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1017 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1018 | 1019 | has-flag@^4.0.0: 1020 | version "4.0.0" 1021 | resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1022 | integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= 1023 | 1024 | has-own@^1.0.1: 1025 | version "1.0.1" 1026 | resolved "https://registry.npm.taobao.org/has-own/download/has-own-1.0.1.tgz#7cc78a63e5ffde330fa8d0a6ddaca4a70c495579" 1027 | integrity sha1-fMeKY+X/3jMPqNCm3aykpwxJVXk= 1028 | 1029 | has-symbols@^1.0.0, has-symbols@^1.0.1: 1030 | version "1.0.1" 1031 | resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1032 | integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= 1033 | 1034 | has@^1.0.3: 1035 | version "1.0.3" 1036 | resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1037 | integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= 1038 | dependencies: 1039 | function-bind "^1.1.1" 1040 | 1041 | hosted-git-info@^2.1.4: 1042 | version "2.8.8" 1043 | resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 1044 | integrity sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg= 1045 | 1046 | html@^1.0.0: 1047 | version "1.0.0" 1048 | resolved "https://registry.npm.taobao.org/html/download/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" 1049 | integrity sha1-pUT6nqVJK/s6LMqCEKEL57WvH2E= 1050 | dependencies: 1051 | concat-stream "^1.4.7" 1052 | 1053 | htmlparser2@3.10.0: 1054 | version "3.10.0" 1055 | resolved "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.0.tgz?cache=0&sync_timestamp=1582421747970&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" 1056 | integrity sha1-X15CLc9hGcDZg+02Jgzp3tC+5GQ= 1057 | dependencies: 1058 | domelementtype "^1.3.0" 1059 | domhandler "^2.3.0" 1060 | domutils "^1.5.1" 1061 | entities "^1.1.1" 1062 | inherits "^2.0.1" 1063 | readable-stream "^3.0.6" 1064 | 1065 | http-signature@~1.2.0: 1066 | version "1.2.0" 1067 | resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1585808974134&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1068 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1069 | dependencies: 1070 | assert-plus "^1.0.0" 1071 | jsprim "^1.2.2" 1072 | sshpk "^1.7.0" 1073 | 1074 | iconv-lite@^0.4.24: 1075 | version "0.4.24" 1076 | resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1077 | integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= 1078 | dependencies: 1079 | safer-buffer ">= 2.1.2 < 3" 1080 | 1081 | ignore@^4.0.6: 1082 | version "4.0.6" 1083 | resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1084 | integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= 1085 | 1086 | ignore@^5.1.1: 1087 | version "5.1.4" 1088 | resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" 1089 | integrity sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8= 1090 | 1091 | image-js@^0.21.9: 1092 | version "0.21.9" 1093 | resolved "https://registry.npm.taobao.org/image-js/download/image-js-0.21.9.tgz#eb79f68f0f9c446ba5236e58d4ea50730ccff7d8" 1094 | integrity sha1-63n2jw+cRGulI25Y1OpQcwzP99g= 1095 | dependencies: 1096 | blob-util "^2.0.2" 1097 | canny-edge-detector "^1.0.0" 1098 | color-functions "^3.0.1" 1099 | fast-bmp "^1.0.0" 1100 | fast-jpeg "^1.0.1" 1101 | fast-list "^1.0.3" 1102 | fast-png "^5.0.2" 1103 | has-own "^1.0.1" 1104 | image-type "^4.1.0" 1105 | is-array-type "^1.0.0" 1106 | is-integer "^1.0.7" 1107 | jpeg-js "^0.3.7" 1108 | js-priority-queue "^0.1.5" 1109 | ml-convolution "^0.2.0" 1110 | ml-disjoint-set "^1.0.0" 1111 | ml-matrix "^5.2.1" 1112 | ml-matrix-convolution "0.4.3" 1113 | ml-regression "^4.4.2" 1114 | monotone-chain-convex-hull "^1.0.0" 1115 | new-array "^1.0.0" 1116 | num-sort "^1.0.0" 1117 | robust-point-in-polygon "^1.0.3" 1118 | tiff "^4.0.0" 1119 | web-worker-manager "^0.2.0" 1120 | 1121 | image-type@^4.1.0: 1122 | version "4.1.0" 1123 | resolved "https://registry.npm.taobao.org/image-type/download/image-type-4.1.0.tgz#72a88d64ff5021371ed67b9a466442100be57cd1" 1124 | integrity sha1-cqiNZP9QITce1nuaRmRCEAvlfNE= 1125 | dependencies: 1126 | file-type "^10.10.0" 1127 | 1128 | immediate@~3.0.5: 1129 | version "3.0.6" 1130 | resolved "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 1131 | integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= 1132 | 1133 | immutable@3.8.1: 1134 | version "3.8.1" 1135 | resolved "https://registry.npm.taobao.org/immutable/download/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" 1136 | integrity sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI= 1137 | 1138 | import-fresh@^3.0.0: 1139 | version "3.2.1" 1140 | resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1141 | integrity sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY= 1142 | dependencies: 1143 | parent-module "^1.0.0" 1144 | resolve-from "^4.0.0" 1145 | 1146 | imurmurhash@^0.1.4: 1147 | version "0.1.4" 1148 | resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1149 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1150 | 1151 | indent-string@^4.0.0: 1152 | version "4.0.0" 1153 | resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 1154 | integrity sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE= 1155 | 1156 | inflight@^1.0.4: 1157 | version "1.0.6" 1158 | resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1159 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1160 | dependencies: 1161 | once "^1.3.0" 1162 | wrappy "1" 1163 | 1164 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 1165 | version "2.0.4" 1166 | resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1167 | integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= 1168 | 1169 | ini@^1.3.4: 1170 | version "1.3.5" 1171 | resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1172 | integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= 1173 | 1174 | inquirer@^7.0.0: 1175 | version "7.1.0" 1176 | resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-7.1.0.tgz?cache=0&sync_timestamp=1583819732252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" 1177 | integrity sha1-EpigGFmIPhfHJkuChwrhA0+S3Sk= 1178 | dependencies: 1179 | ansi-escapes "^4.2.1" 1180 | chalk "^3.0.0" 1181 | cli-cursor "^3.1.0" 1182 | cli-width "^2.0.0" 1183 | external-editor "^3.0.3" 1184 | figures "^3.0.0" 1185 | lodash "^4.17.15" 1186 | mute-stream "0.0.8" 1187 | run-async "^2.4.0" 1188 | rxjs "^6.5.3" 1189 | string-width "^4.1.0" 1190 | strip-ansi "^6.0.0" 1191 | through "^2.3.6" 1192 | 1193 | iobuffer@^2.1.0: 1194 | version "2.1.0" 1195 | resolved "https://registry.npm.taobao.org/iobuffer/download/iobuffer-2.1.0.tgz#074882d24020a85db6a5042a0418ef9b6b2e616a" 1196 | integrity sha1-B0iC0kAgqF22pQQqBBjvm2suYWo= 1197 | 1198 | iobuffer@^3.1.0: 1199 | version "3.2.0" 1200 | resolved "https://registry.npm.taobao.org/iobuffer/download/iobuffer-3.2.0.tgz#9234f4d2cb1042818704f07d1f5c833f41327e26" 1201 | integrity sha1-kjT00ssQQoGHBPB9H1yDP0EyfiY= 1202 | dependencies: 1203 | utf8 "^2.1.2" 1204 | 1205 | iobuffer@^5.0.2: 1206 | version "5.0.2" 1207 | resolved "https://registry.npm.taobao.org/iobuffer/download/iobuffer-5.0.2.tgz#90f6ead2afd24cc9d2f2befbbb2a501552d70d4f" 1208 | integrity sha1-kPbq0q/STMnS8r77uypQFVLXDU8= 1209 | 1210 | is-any-array@^0.0.3: 1211 | version "0.0.3" 1212 | resolved "https://registry.npm.taobao.org/is-any-array/download/is-any-array-0.0.3.tgz#cbdd8c7189d47b53b050969245f4ef7e55550b9b" 1213 | integrity sha1-y92McYnUe1OwUJaSRfTvflVVC5s= 1214 | 1215 | is-array-type@^1.0.0: 1216 | version "1.0.0" 1217 | resolved "https://registry.npm.taobao.org/is-array-type/download/is-array-type-1.0.0.tgz#0bd8a263430319c8fa32fa7af260140f4762b506" 1218 | integrity sha1-C9iiY0MDGcj6Mvp68mAUD0ditQY= 1219 | 1220 | is-arrayish@^0.2.1: 1221 | version "0.2.1" 1222 | resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1223 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1224 | 1225 | is-buffer@~1.1.1: 1226 | version "1.1.6" 1227 | resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1228 | integrity sha1-76ouqdqg16suoTqXsritUf776L4= 1229 | 1230 | is-callable@^1.1.4, is-callable@^1.1.5: 1231 | version "1.1.5" 1232 | resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1233 | integrity sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs= 1234 | 1235 | is-date-object@^1.0.1: 1236 | version "1.0.2" 1237 | resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1238 | integrity sha1-vac28s2P0G0yhE53Q7+nSUw7/X4= 1239 | 1240 | is-extglob@^2.1.1: 1241 | version "2.1.1" 1242 | resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1243 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1244 | 1245 | is-finite@^1.0.0: 1246 | version "1.1.0" 1247 | resolved "https://registry.npm.taobao.org/is-finite/download/is-finite-1.1.0.tgz?cache=0&sync_timestamp=1581061203638&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-finite%2Fdownload%2Fis-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" 1248 | integrity sha1-kEE1x3+0LAZB1qobzbxNqo2ggvM= 1249 | 1250 | is-fullwidth-code-point@^2.0.0: 1251 | version "2.0.0" 1252 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1253 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1254 | 1255 | is-fullwidth-code-point@^3.0.0: 1256 | version "3.0.0" 1257 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1258 | integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= 1259 | 1260 | is-function@^1.0.1: 1261 | version "1.0.1" 1262 | resolved "https://registry.npm.taobao.org/is-function/download/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" 1263 | integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= 1264 | 1265 | is-glob@^4.0.0, is-glob@^4.0.1: 1266 | version "4.0.1" 1267 | resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1268 | integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= 1269 | dependencies: 1270 | is-extglob "^2.1.1" 1271 | 1272 | is-integer@^1.0.6, is-integer@^1.0.7: 1273 | version "1.0.7" 1274 | resolved "https://registry.npm.taobao.org/is-integer/download/is-integer-1.0.7.tgz#6bde81aacddf78b659b6629d629cadc51a886d5c" 1275 | integrity sha1-a96Bqs3feLZZtmKdYpytxRqIbVw= 1276 | dependencies: 1277 | is-finite "^1.0.0" 1278 | 1279 | is-promise@^2.1.0: 1280 | version "2.1.0" 1281 | resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1282 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1283 | 1284 | is-regex@^1.0.5: 1285 | version "1.0.5" 1286 | resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 1287 | integrity sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4= 1288 | dependencies: 1289 | has "^1.0.3" 1290 | 1291 | is-string@^1.0.5: 1292 | version "1.0.5" 1293 | resolved "https://registry.npm.taobao.org/is-string/download/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 1294 | integrity sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y= 1295 | 1296 | is-symbol@^1.0.2: 1297 | version "1.0.3" 1298 | resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1299 | integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= 1300 | dependencies: 1301 | has-symbols "^1.0.1" 1302 | 1303 | is-typedarray@~1.0.0: 1304 | version "1.0.0" 1305 | resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1306 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1307 | 1308 | isarray@^1.0.0, isarray@~1.0.0: 1309 | version "1.0.0" 1310 | resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1311 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1312 | 1313 | isexe@^2.0.0: 1314 | version "2.0.0" 1315 | resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisexe%2Fdownload%2Fisexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1316 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1317 | 1318 | isstream@~0.1.2: 1319 | version "0.1.2" 1320 | resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1321 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1322 | 1323 | jpeg-js@^0.3.7: 1324 | version "0.3.7" 1325 | resolved "https://registry.npm.taobao.org/jpeg-js/download/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" 1326 | integrity sha1-RxqJ0GARZAWS0xQVhghpAXKxAo0= 1327 | 1328 | js-beautify@^1.10.3, js-beautify@^1.6.4: 1329 | version "1.10.3" 1330 | resolved "https://registry.npm.taobao.org/js-beautify/download/js-beautify-1.10.3.tgz#c73fa10cf69d3dfa52d8ed624f23c64c0a6a94c1" 1331 | integrity sha1-xz+hDPadPfpS2O1iTyPGTApqlME= 1332 | dependencies: 1333 | config-chain "^1.1.12" 1334 | editorconfig "^0.15.3" 1335 | glob "^7.1.3" 1336 | mkdirp "~0.5.1" 1337 | nopt "~4.0.1" 1338 | 1339 | js-md5@0.7.3: 1340 | version "0.7.3" 1341 | resolved "https://registry.npm.taobao.org/js-md5/download/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2" 1342 | integrity sha1-tPL7sLMnRV9ZjWcn447Ccs0Jw/I= 1343 | 1344 | js-priority-queue@^0.1.5: 1345 | version "0.1.5" 1346 | resolved "https://registry.npm.taobao.org/js-priority-queue/download/js-priority-queue-0.1.5.tgz#f71e9b2120c91e8a1ddab3b7d347dac01d81e837" 1347 | integrity sha1-9x6bISDJHood2rO300fawB2B6Dc= 1348 | 1349 | js-tokens@^4.0.0: 1350 | version "4.0.0" 1351 | resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1352 | integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= 1353 | 1354 | js-yaml@^3.13.1: 1355 | version "3.13.1" 1356 | resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1357 | integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= 1358 | dependencies: 1359 | argparse "^1.0.7" 1360 | esprima "^4.0.0" 1361 | 1362 | jsbn@~0.1.0: 1363 | version "0.1.1" 1364 | resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1365 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1366 | 1367 | json-schema-traverse@^0.3.0: 1368 | version "0.3.1" 1369 | resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1370 | integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= 1371 | 1372 | json-schema-traverse@^0.4.1: 1373 | version "0.4.1" 1374 | resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1375 | integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= 1376 | 1377 | json-schema@0.2.3: 1378 | version "0.2.3" 1379 | resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1380 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1381 | 1382 | json-stable-stringify-without-jsonify@^1.0.1: 1383 | version "1.0.1" 1384 | resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1385 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1386 | 1387 | json-stringify-safe@~5.0.1: 1388 | version "5.0.1" 1389 | resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1390 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1391 | 1392 | json5@^1.0.1: 1393 | version "1.0.1" 1394 | resolved "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1395 | integrity sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4= 1396 | dependencies: 1397 | minimist "^1.2.0" 1398 | 1399 | jsprim@^1.2.2: 1400 | version "1.4.1" 1401 | resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1402 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1403 | dependencies: 1404 | assert-plus "1.0.0" 1405 | extsprintf "1.3.0" 1406 | json-schema "0.2.3" 1407 | verror "1.10.0" 1408 | 1409 | jszip@3.1.5: 1410 | version "3.1.5" 1411 | resolved "https://registry.npm.taobao.org/jszip/download/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" 1412 | integrity sha1-48KmxtcGrG5gMxQDbUPNQL7v3zc= 1413 | dependencies: 1414 | core-js "~2.3.0" 1415 | es6-promise "~3.0.2" 1416 | lie "~3.1.0" 1417 | pako "~1.0.2" 1418 | readable-stream "~2.0.6" 1419 | 1420 | jszip@^3.1.5: 1421 | version "3.3.0" 1422 | resolved "https://registry.npm.taobao.org/jszip/download/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271" 1423 | integrity sha1-KdcsIaVJkPqIWxH8hD2zIGQNUnE= 1424 | dependencies: 1425 | lie "~3.3.0" 1426 | pako "~1.0.2" 1427 | readable-stream "~2.3.6" 1428 | set-immediate-shim "~1.0.1" 1429 | 1430 | jszip@^3.2.2: 1431 | version "3.2.2" 1432 | resolved "https://registry.npm.taobao.org/jszip/download/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" 1433 | integrity sha1-sUOBbffhBqlZepTHdJM4WtylvR0= 1434 | dependencies: 1435 | lie "~3.3.0" 1436 | pako "~1.0.2" 1437 | readable-stream "~2.3.6" 1438 | set-immediate-shim "~1.0.1" 1439 | 1440 | leven@^3.1.0: 1441 | version "3.1.0" 1442 | resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1443 | integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I= 1444 | 1445 | levn@^0.3.0, levn@~0.3.0: 1446 | version "0.3.0" 1447 | resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1448 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1449 | dependencies: 1450 | prelude-ls "~1.1.2" 1451 | type-check "~0.3.2" 1452 | 1453 | lie@~3.1.0: 1454 | version "3.1.1" 1455 | resolved "https://registry.npm.taobao.org/lie/download/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" 1456 | integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= 1457 | dependencies: 1458 | immediate "~3.0.5" 1459 | 1460 | lie@~3.3.0: 1461 | version "3.3.0" 1462 | resolved "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1463 | integrity sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o= 1464 | dependencies: 1465 | immediate "~3.0.5" 1466 | 1467 | load-json-file@^2.0.0: 1468 | version "2.0.0" 1469 | resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1470 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1471 | dependencies: 1472 | graceful-fs "^4.1.2" 1473 | parse-json "^2.2.0" 1474 | pify "^2.0.0" 1475 | strip-bom "^3.0.0" 1476 | 1477 | loader-utils@^1.0.0, loader-utils@^1.1.0: 1478 | version "1.4.0" 1479 | resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" 1480 | integrity sha1-xXm140yzSxp07cbB+za/o3HVphM= 1481 | dependencies: 1482 | big.js "^5.2.2" 1483 | emojis-list "^3.0.0" 1484 | json5 "^1.0.1" 1485 | 1486 | locate-path@^2.0.0: 1487 | version "2.0.0" 1488 | resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1489 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1490 | dependencies: 1491 | p-locate "^2.0.0" 1492 | path-exists "^3.0.0" 1493 | 1494 | lodash@^4.17.14, lodash@^4.17.15: 1495 | version "4.17.19" 1496 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" 1497 | integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== 1498 | 1499 | lookup-closest-locale@^6.2.0: 1500 | version "6.2.0" 1501 | resolved "https://registry.npm.taobao.org/lookup-closest-locale/download/lookup-closest-locale-6.2.0.tgz#57f665e604fd26f77142d48152015402b607bcf3" 1502 | integrity sha1-V/Zl5gT9JvdxQtSBUgFUArYHvPM= 1503 | 1504 | lru-cache@^4.1.5: 1505 | version "4.1.5" 1506 | resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1507 | integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= 1508 | dependencies: 1509 | pseudomap "^1.0.2" 1510 | yallist "^2.1.2" 1511 | 1512 | md5@^2.2.1: 1513 | version "2.2.1" 1514 | resolved "https://registry.npm.taobao.org/md5/download/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" 1515 | integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= 1516 | dependencies: 1517 | charenc "~0.0.1" 1518 | crypt "~0.0.1" 1519 | is-buffer "~1.1.1" 1520 | 1521 | microee@0.0.6: 1522 | version "0.0.6" 1523 | resolved "https://registry.npm.taobao.org/microee/download/microee-0.0.6.tgz#a12bdb0103681e8b126a9b071eba4c467c78fffe" 1524 | integrity sha1-oSvbAQNoHosSapsHHrpMRnx4//4= 1525 | 1526 | mime-db@1.43.0: 1527 | version "1.43.0" 1528 | resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 1529 | integrity sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg= 1530 | 1531 | mime-types@^2.1.12, mime-types@~2.1.19: 1532 | version "2.1.26" 1533 | resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 1534 | integrity sha1-nJIfwJt+FJpl39wNpNIJlyALCgY= 1535 | dependencies: 1536 | mime-db "1.43.0" 1537 | 1538 | mimic-fn@^2.1.0: 1539 | version "2.1.0" 1540 | resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1541 | integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= 1542 | 1543 | min-document@^2.19.0: 1544 | version "2.19.0" 1545 | resolved "https://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" 1546 | integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= 1547 | dependencies: 1548 | dom-walk "^0.1.0" 1549 | 1550 | minilog@3.1.0: 1551 | version "3.1.0" 1552 | resolved "https://registry.npm.taobao.org/minilog/download/minilog-3.1.0.tgz#d2d0f1887ca363d1acf0ea86d5c4df293b3fb675" 1553 | integrity sha1-0tDxiHyjY9Gs8OqG1cTfKTs/tnU= 1554 | dependencies: 1555 | microee "0.0.6" 1556 | 1557 | minimatch@^3.0.4: 1558 | version "3.0.4" 1559 | resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimatch%2Fdownload%2Fminimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1560 | integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= 1561 | dependencies: 1562 | brace-expansion "^1.1.7" 1563 | 1564 | minimist@^1.2.0, minimist@^1.2.5: 1565 | version "1.2.5" 1566 | resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1567 | integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= 1568 | 1569 | mkdirp@^0.5.1, mkdirp@~0.5.1: 1570 | version "0.5.3" 1571 | resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" 1572 | integrity sha1-WlFLcXklkoeVKIHpRBDsVGVln4w= 1573 | dependencies: 1574 | minimist "^1.2.5" 1575 | 1576 | ml-array-max@^1.1.1, ml-array-max@^1.1.2: 1577 | version "1.1.2" 1578 | resolved "https://registry.npm.taobao.org/ml-array-max/download/ml-array-max-1.1.2.tgz#ac14a4954ebdb9f401774cc1572fce439e12f94d" 1579 | integrity sha1-rBSklU69ufQBd0zBVy/OQ54S+U0= 1580 | dependencies: 1581 | is-any-array "^0.0.3" 1582 | 1583 | ml-array-min@^1.1.2: 1584 | version "1.1.2" 1585 | resolved "https://registry.npm.taobao.org/ml-array-min/download/ml-array-min-1.1.2.tgz#a084370fe78998a4131d566d066ee01bccce253a" 1586 | integrity sha1-oIQ3D+eJmKQTHVZtBm7gG8zOJTo= 1587 | dependencies: 1588 | is-any-array "^0.0.3" 1589 | 1590 | ml-array-rescale@^1.2.1: 1591 | version "1.3.0" 1592 | resolved "https://registry.npm.taobao.org/ml-array-rescale/download/ml-array-rescale-1.3.0.tgz#424baa931d4b874b18f4a8e52957c7d6deb29ddc" 1593 | integrity sha1-Qkuqkx1Lh0sY9KjlKVfH1t6yndw= 1594 | dependencies: 1595 | is-any-array "^0.0.3" 1596 | ml-array-max "^1.1.2" 1597 | ml-array-min "^1.1.2" 1598 | 1599 | ml-convolution@^0.2.0: 1600 | version "0.2.0" 1601 | resolved "https://registry.npm.taobao.org/ml-convolution/download/ml-convolution-0.2.0.tgz#374659a6f75c98324ef7d61766c1e6209caff594" 1602 | integrity sha1-N0ZZpvdcmDJO99YXZsHmIJyv9ZQ= 1603 | dependencies: 1604 | fft.js "^4.0.3" 1605 | next-power-of-two "^1.0.0" 1606 | 1607 | ml-disjoint-set@^1.0.0: 1608 | version "1.0.0" 1609 | resolved "https://registry.npm.taobao.org/ml-disjoint-set/download/ml-disjoint-set-1.0.0.tgz#6cd8e583eef5a02585348b98d0df21fd83ef6082" 1610 | integrity sha1-bNjlg+71oCWFNIuY0N8h/YPvYII= 1611 | 1612 | ml-distance-euclidean@^1.0.0: 1613 | version "1.0.0" 1614 | resolved "https://registry.npm.taobao.org/ml-distance-euclidean/download/ml-distance-euclidean-1.0.0.tgz#08447c2233641a2b2a9b4c29e5f792d28f1d5b95" 1615 | integrity sha1-CER8IjNkGisqm0wp5feS0o8dW5U= 1616 | 1617 | ml-distance-euclidean@^2.0.0: 1618 | version "2.0.0" 1619 | resolved "https://registry.npm.taobao.org/ml-distance-euclidean/download/ml-distance-euclidean-2.0.0.tgz#3a668d236649d1b8fec96380b9435c6f42c9a817" 1620 | integrity sha1-OmaNI2ZJ0bj+yWOAuUNcb0LJqBc= 1621 | 1622 | ml-fft@1.3.5: 1623 | version "1.3.5" 1624 | resolved "https://registry.npm.taobao.org/ml-fft/download/ml-fft-1.3.5.tgz#effc1f3c5d0b803a0b39738feb3dacd27c145010" 1625 | integrity sha1-7/wfPF0LgDoLOXOP6z2s0nwUUBA= 1626 | 1627 | ml-kernel-gaussian@^2.0.1: 1628 | version "2.0.2" 1629 | resolved "https://registry.npm.taobao.org/ml-kernel-gaussian/download/ml-kernel-gaussian-2.0.2.tgz#2d1a1130d3205e551e7d1dbe642b8f150076e6c0" 1630 | integrity sha1-LRoRMNMgXlUefR2+ZCuPFQB25sA= 1631 | dependencies: 1632 | ml-distance-euclidean "^2.0.0" 1633 | 1634 | ml-kernel-polynomial@^2.0.0: 1635 | version "2.0.1" 1636 | resolved "https://registry.npm.taobao.org/ml-kernel-polynomial/download/ml-kernel-polynomial-2.0.1.tgz#ae99e26892f5763185e2334bad862adc5733c599" 1637 | integrity sha1-rpniaJL1djGF4jNLrYYq3FczxZk= 1638 | 1639 | ml-kernel-sigmoid@^1.0.0: 1640 | version "1.0.1" 1641 | resolved "https://registry.npm.taobao.org/ml-kernel-sigmoid/download/ml-kernel-sigmoid-1.0.1.tgz#3eb4419a97d68d299dd6faffa8dca0fb91dd3300" 1642 | integrity sha1-PrRBmpfWjSmd1vr/qNyg+5HdMwA= 1643 | 1644 | ml-kernel@^2.0.0: 1645 | version "2.3.4" 1646 | resolved "https://registry.npm.taobao.org/ml-kernel/download/ml-kernel-2.3.4.tgz#7f6cdd5a3a9b1b6ee3c34bfd15c181664a0661dd" 1647 | integrity sha1-f2zdWjqbG27jw0v9FcGBZkoGYd0= 1648 | dependencies: 1649 | ml-distance-euclidean "^1.0.0" 1650 | ml-kernel-gaussian "^2.0.1" 1651 | ml-kernel-polynomial "^2.0.0" 1652 | ml-kernel-sigmoid "^1.0.0" 1653 | ml-matrix "^5.0.0" 1654 | 1655 | ml-matrix-convolution@0.4.3: 1656 | version "0.4.3" 1657 | resolved "https://registry.npm.taobao.org/ml-matrix-convolution/download/ml-matrix-convolution-0.4.3.tgz#cbc75346b8996caf24a9b431bbad47f9ad2a4c11" 1658 | integrity sha1-y8dTRriZbK8kqbQxu61H+a0qTBE= 1659 | dependencies: 1660 | ml-fft "1.3.5" 1661 | ml-stat "^1.2.0" 1662 | 1663 | ml-matrix@^5.0.0, ml-matrix@^5.0.1, ml-matrix@^5.2.1: 1664 | version "5.3.0" 1665 | resolved "https://registry.npm.taobao.org/ml-matrix/download/ml-matrix-5.3.0.tgz#2154902a3380f6a0874ab9a2539a09e873e8db92" 1666 | integrity sha1-IVSQKjOA9qCHSrmiU5oJ6HPo25I= 1667 | dependencies: 1668 | ml-array-max "^1.1.1" 1669 | ml-array-rescale "^1.2.1" 1670 | 1671 | ml-regression-base@^1.0.0, ml-regression-base@^1.1.1, ml-regression-base@^1.2.0: 1672 | version "1.2.1" 1673 | resolved "https://registry.npm.taobao.org/ml-regression-base/download/ml-regression-base-1.2.1.tgz#ce4de3ddb635af2536e8f5bfaa1910ae1f5552ec" 1674 | integrity sha1-zk3j3bY1ryU26PW/qhkQrh9VUuw= 1675 | 1676 | ml-regression-exponential@^1.0.0: 1677 | version "1.0.1" 1678 | resolved "https://registry.npm.taobao.org/ml-regression-exponential/download/ml-regression-exponential-1.0.1.tgz#f5eedba31a3e0bcfbbb92c26c590f9d02970e7d0" 1679 | integrity sha1-9e7boxo+C8+7uSwmxZD50Clw59A= 1680 | dependencies: 1681 | ml-regression-base "^1.1.1" 1682 | ml-regression-simple-linear "^1.0.1" 1683 | 1684 | ml-regression-multivariate-linear@^1.0.0: 1685 | version "1.2.0" 1686 | resolved "https://registry.npm.taobao.org/ml-regression-multivariate-linear/download/ml-regression-multivariate-linear-1.2.0.tgz#cfb33ffacd7e153d33b7481ef9f5d094d954689e" 1687 | integrity sha1-z7M/+s1+FT0zt0ge+fXQlNlUaJ4= 1688 | dependencies: 1689 | ml-matrix "^5.0.1" 1690 | ml-regression-base "^1.2.0" 1691 | 1692 | ml-regression-polynomial@^1.0.0: 1693 | version "1.0.3" 1694 | resolved "https://registry.npm.taobao.org/ml-regression-polynomial/download/ml-regression-polynomial-1.0.3.tgz#bd77838c8b673ddcc6ad6e53959a9a97789b80c5" 1695 | integrity sha1-vXeDjItnPdzGrW5TlZqal3ibgMU= 1696 | dependencies: 1697 | ml-matrix "^5.0.0" 1698 | ml-regression-base "^1.1.1" 1699 | 1700 | ml-regression-power@^1.0.0: 1701 | version "1.0.1" 1702 | resolved "https://registry.npm.taobao.org/ml-regression-power/download/ml-regression-power-1.0.1.tgz#5b877934e921b51c1203d2760ee5abe82e6a454b" 1703 | integrity sha1-W4d5NOkhtRwSA9J2DuWr6C5qRUs= 1704 | dependencies: 1705 | ml-regression-base "^1.2.0" 1706 | ml-regression-simple-linear "^1.0.2" 1707 | 1708 | ml-regression-robust-polynomial@^1.0.0: 1709 | version "1.0.1" 1710 | resolved "https://registry.npm.taobao.org/ml-regression-robust-polynomial/download/ml-regression-robust-polynomial-1.0.1.tgz#870793f61bde021d002e439ebb4064428ed9d888" 1711 | integrity sha1-hweT9hveAh0ALkOeu0BkQo7Z2Ig= 1712 | dependencies: 1713 | ml-matrix "^5.0.0" 1714 | ml-regression-base "^1.2.0" 1715 | 1716 | ml-regression-simple-linear@^1.0.0, ml-regression-simple-linear@^1.0.1, ml-regression-simple-linear@^1.0.2: 1717 | version "1.0.2" 1718 | resolved "https://registry.npm.taobao.org/ml-regression-simple-linear/download/ml-regression-simple-linear-1.0.2.tgz#d99fe95be9178c3bf045cc58490b1e62851336af" 1719 | integrity sha1-2Z/pW+kXjDvwRcxYSQseYoUTNq8= 1720 | dependencies: 1721 | ml-regression-base "^1.0.0" 1722 | 1723 | ml-regression-theil-sen@^1.0.0: 1724 | version "1.0.0" 1725 | resolved "https://registry.npm.taobao.org/ml-regression-theil-sen/download/ml-regression-theil-sen-1.0.0.tgz#fb33c67ca88cd182c9eee999cecccd7aad5c2bc8" 1726 | integrity sha1-+zPGfKiM0YLJ7umZzszNeq1cK8g= 1727 | dependencies: 1728 | ml-regression-base "^1.2.0" 1729 | ml-stat "^1.3.3" 1730 | 1731 | ml-regression@^4.4.2: 1732 | version "4.4.2" 1733 | resolved "https://registry.npm.taobao.org/ml-regression/download/ml-regression-4.4.2.tgz#d19b376bcc990968cda0d9c3e59f04fd12b91a5f" 1734 | integrity sha1-0Zs3a8yZCWjNoNnD5Z8E/RK5Gl8= 1735 | dependencies: 1736 | is-integer "^1.0.6" 1737 | ml-kernel "^2.0.0" 1738 | ml-matrix "^5.0.0" 1739 | ml-regression-base "^1.2.0" 1740 | ml-regression-exponential "^1.0.0" 1741 | ml-regression-multivariate-linear "^1.0.0" 1742 | ml-regression-polynomial "^1.0.0" 1743 | ml-regression-power "^1.0.0" 1744 | ml-regression-robust-polynomial "^1.0.0" 1745 | ml-regression-simple-linear "^1.0.0" 1746 | ml-regression-theil-sen "^1.0.0" 1747 | ml-stat "^1.3.3" 1748 | 1749 | ml-stat@^1.2.0, ml-stat@^1.3.3: 1750 | version "1.3.3" 1751 | resolved "https://registry.npm.taobao.org/ml-stat/download/ml-stat-1.3.3.tgz#8a5493b0f67382fbf705c260e070436655a7dcfa" 1752 | integrity sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po= 1753 | 1754 | monotone-chain-convex-hull@^1.0.0: 1755 | version "1.0.0" 1756 | resolved "https://registry.npm.taobao.org/monotone-chain-convex-hull/download/monotone-chain-convex-hull-1.0.0.tgz#e5e3a39f305d6bc6fe71062fc7072bc56c3a55e0" 1757 | integrity sha1-5eOjnzBda8b+cQYvxwcrxWw6VeA= 1758 | 1759 | ms@2.0.0: 1760 | version "2.0.0" 1761 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1762 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1763 | 1764 | ms@^2.1.1: 1765 | version "2.1.2" 1766 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1767 | integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= 1768 | 1769 | mute-stream@0.0.8: 1770 | version "0.0.8" 1771 | resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1772 | integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0= 1773 | 1774 | natural-compare@^1.4.0: 1775 | version "1.4.0" 1776 | resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1777 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1778 | 1779 | nets@3.2.0: 1780 | version "3.2.0" 1781 | resolved "https://registry.npm.taobao.org/nets/download/nets-3.2.0.tgz#d511fbab7af11da013f21b97ee91747d33852d38" 1782 | integrity sha1-1RH7q3rxHaAT8huX7pF0fTOFLTg= 1783 | dependencies: 1784 | request "^2.65.0" 1785 | xhr "^2.1.0" 1786 | 1787 | new-array@^1.0.0: 1788 | version "1.0.0" 1789 | resolved "https://registry.npm.taobao.org/new-array/download/new-array-1.0.0.tgz#5dbc639d961eac7f1a9fbc1a7146ec12f2924fbf" 1790 | integrity sha1-XbxjnZYerH8an7wacUbsEvKST78= 1791 | 1792 | next-power-of-two@^1.0.0: 1793 | version "1.0.0" 1794 | resolved "https://registry.npm.taobao.org/next-power-of-two/download/next-power-of-two-1.0.0.tgz#cbc1f2f62b586fc501bd3ab2fb9962ac4e4e9359" 1795 | integrity sha1-y8Hy9itYb8UBvTqy+5lirE5Ok1k= 1796 | 1797 | nice-try@^1.0.4: 1798 | version "1.0.5" 1799 | resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1584699726257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1800 | integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= 1801 | 1802 | nopt@~4.0.1: 1803 | version "4.0.3" 1804 | resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.3.tgz?cache=0&sync_timestamp=1583732714009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" 1805 | integrity sha1-o3XK2dAv2SEnjZVMIlTVqlfhXkg= 1806 | dependencies: 1807 | abbrev "1" 1808 | osenv "^0.1.4" 1809 | 1810 | normalize-package-data@^2.3.2: 1811 | version "2.5.0" 1812 | resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1813 | integrity sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg= 1814 | dependencies: 1815 | hosted-git-info "^2.1.4" 1816 | resolve "^1.10.0" 1817 | semver "2 || 3 || 4 || 5" 1818 | validate-npm-package-license "^3.0.1" 1819 | 1820 | num-sort@^1.0.0: 1821 | version "1.0.0" 1822 | resolved "https://registry.npm.taobao.org/num-sort/download/num-sort-1.0.0.tgz#cabec1fd5f4da4aca995af90b7a0f379944e1dbd" 1823 | integrity sha1-yr7B/V9NpKypla+Qt6DzeZROHb0= 1824 | dependencies: 1825 | number-is-nan "^1.0.0" 1826 | 1827 | number-is-nan@^1.0.0: 1828 | version "1.0.1" 1829 | resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1830 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1831 | 1832 | oauth-sign@~0.9.0: 1833 | version "0.9.0" 1834 | resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1835 | integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= 1836 | 1837 | object-inspect@^1.7.0: 1838 | version "1.7.0" 1839 | resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 1840 | integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= 1841 | 1842 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1843 | version "1.1.1" 1844 | resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1845 | integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= 1846 | 1847 | object.assign@^4.1.0: 1848 | version "4.1.0" 1849 | resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1850 | integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= 1851 | dependencies: 1852 | define-properties "^1.1.2" 1853 | function-bind "^1.1.1" 1854 | has-symbols "^1.0.0" 1855 | object-keys "^1.0.11" 1856 | 1857 | object.values@^1.1.0: 1858 | version "1.1.1" 1859 | resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 1860 | integrity sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4= 1861 | dependencies: 1862 | define-properties "^1.1.3" 1863 | es-abstract "^1.17.0-next.1" 1864 | function-bind "^1.1.1" 1865 | has "^1.0.3" 1866 | 1867 | once@^1.3.0: 1868 | version "1.4.0" 1869 | resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1870 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1871 | dependencies: 1872 | wrappy "1" 1873 | 1874 | onetime@^5.1.0: 1875 | version "5.1.0" 1876 | resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 1877 | integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U= 1878 | dependencies: 1879 | mimic-fn "^2.1.0" 1880 | 1881 | optionator@^0.8.3: 1882 | version "0.8.3" 1883 | resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 1884 | integrity sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU= 1885 | dependencies: 1886 | deep-is "~0.1.3" 1887 | fast-levenshtein "~2.0.6" 1888 | levn "~0.3.0" 1889 | prelude-ls "~1.1.2" 1890 | type-check "~0.3.2" 1891 | word-wrap "~1.2.3" 1892 | 1893 | os-homedir@^1.0.0: 1894 | version "1.0.2" 1895 | resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1896 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1897 | 1898 | os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: 1899 | version "1.0.2" 1900 | resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1901 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1902 | 1903 | osenv@^0.1.4: 1904 | version "0.1.5" 1905 | resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1906 | integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= 1907 | dependencies: 1908 | os-homedir "^1.0.0" 1909 | os-tmpdir "^1.0.0" 1910 | 1911 | p-limit@^1.1.0: 1912 | version "1.3.0" 1913 | resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1914 | integrity sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg= 1915 | dependencies: 1916 | p-try "^1.0.0" 1917 | 1918 | p-locate@^2.0.0: 1919 | version "2.0.0" 1920 | resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1921 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1922 | dependencies: 1923 | p-limit "^1.1.0" 1924 | 1925 | p-map@^3.0.0: 1926 | version "3.0.0" 1927 | resolved "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz?cache=0&sync_timestamp=1583397803599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" 1928 | integrity sha1-1wTZr4orpoTiYA2aIVmD1BQal50= 1929 | dependencies: 1930 | aggregate-error "^3.0.0" 1931 | 1932 | p-progress@^0.4.2: 1933 | version "0.4.2" 1934 | resolved "https://registry.npm.taobao.org/p-progress/download/p-progress-0.4.2.tgz#65f8d463a3d4b859ecbefb5d43c8b6d624d8f88d" 1935 | integrity sha1-ZfjUY6PUuFnsvvtdQ8i21iTY+I0= 1936 | dependencies: 1937 | p-map "^3.0.0" 1938 | 1939 | p-try@^1.0.0: 1940 | version "1.0.0" 1941 | resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1942 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1943 | 1944 | pako@^1.0.10, pako@~1.0.2: 1945 | version "1.0.11" 1946 | resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 1947 | integrity sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8= 1948 | 1949 | parent-module@^1.0.0: 1950 | version "1.0.1" 1951 | resolved "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1952 | integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= 1953 | dependencies: 1954 | callsites "^3.0.0" 1955 | 1956 | parse-headers@^2.0.0: 1957 | version "2.0.3" 1958 | resolved "https://registry.npm.taobao.org/parse-headers/download/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" 1959 | integrity sha1-Xo51Ejg9FAugLwx6qfSbQ5nJJRU= 1960 | 1961 | parse-json@^2.2.0: 1962 | version "2.2.0" 1963 | resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1964 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1965 | dependencies: 1966 | error-ex "^1.2.0" 1967 | 1968 | path-exists@^3.0.0: 1969 | version "3.0.0" 1970 | resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1971 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1972 | 1973 | path-is-absolute@^1.0.0: 1974 | version "1.0.1" 1975 | resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1976 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1977 | 1978 | path-key@^2.0.1: 1979 | version "2.0.1" 1980 | resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1981 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1982 | 1983 | path-parse@^1.0.6: 1984 | version "1.0.6" 1985 | resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1986 | integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= 1987 | 1988 | path-type@^2.0.0: 1989 | version "2.0.0" 1990 | resolved "https://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1991 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1992 | dependencies: 1993 | pify "^2.0.0" 1994 | 1995 | performance-now@^2.1.0: 1996 | version "2.1.0" 1997 | resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1998 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1999 | 2000 | pify@4.0.1: 2001 | version "4.0.1" 2002 | resolved "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 2003 | integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE= 2004 | 2005 | pify@^2.0.0: 2006 | version "2.3.0" 2007 | resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2008 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 2009 | 2010 | pkg-dir@^2.0.0: 2011 | version "2.0.0" 2012 | resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 2013 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 2014 | dependencies: 2015 | find-up "^2.1.0" 2016 | 2017 | prelude-ls@~1.1.2: 2018 | version "1.1.2" 2019 | resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2020 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2021 | 2022 | prettydiff@^101.2.6: 2023 | version "101.2.6" 2024 | resolved "https://registry.npm.taobao.org/prettydiff/download/prettydiff-101.2.6.tgz#b6ffbb618f0ad55887c2c1b02a336ba31a83d243" 2025 | integrity sha1-tv+7YY8K1ViHwsGwKjNroxqD0kM= 2026 | dependencies: 2027 | "@types/node" "^12.7.2" 2028 | file-saver "^2.0.2" 2029 | sparser "^1.4.11" 2030 | 2031 | process-nextick-args@~1.0.6: 2032 | version "1.0.7" 2033 | resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2034 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= 2035 | 2036 | process-nextick-args@~2.0.0: 2037 | version "2.0.1" 2038 | resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2039 | integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= 2040 | 2041 | process@~0.5.1: 2042 | version "0.5.2" 2043 | resolved "https://registry.npm.taobao.org/process/download/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" 2044 | integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= 2045 | 2046 | progress-promise@0.0.6: 2047 | version "0.0.6" 2048 | resolved "https://registry.npm.taobao.org/progress-promise/download/progress-promise-0.0.6.tgz#dfd47723d3bee311e3263dc27c7a5f7812eb387d" 2049 | integrity sha1-39R3I9O+4xHjJj3CfHpfeBLrOH0= 2050 | 2051 | progress@^2.0.0: 2052 | version "2.0.3" 2053 | resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 2054 | integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= 2055 | 2056 | proto-list@~1.2.1: 2057 | version "1.2.4" 2058 | resolved "https://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 2059 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= 2060 | 2061 | pseudomap@^1.0.2: 2062 | version "1.0.2" 2063 | resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2064 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2065 | 2066 | psl@^1.1.28: 2067 | version "1.8.0" 2068 | resolved "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz?cache=0&sync_timestamp=1585143054781&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpsl%2Fdownload%2Fpsl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2069 | integrity sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ= 2070 | 2071 | punycode@^2.1.0, punycode@^2.1.1: 2072 | version "2.1.1" 2073 | resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2074 | integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= 2075 | 2076 | qs@~6.5.2: 2077 | version "6.5.2" 2078 | resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1585168908480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 2079 | integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= 2080 | 2081 | read-pkg-up@^2.0.0: 2082 | version "2.0.0" 2083 | resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 2084 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 2085 | dependencies: 2086 | find-up "^2.0.0" 2087 | read-pkg "^2.0.0" 2088 | 2089 | read-pkg@^2.0.0: 2090 | version "2.0.0" 2091 | resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2092 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 2093 | dependencies: 2094 | load-json-file "^2.0.0" 2095 | normalize-package-data "^2.3.2" 2096 | path-type "^2.0.0" 2097 | 2098 | readable-stream@^2.2.2, readable-stream@~2.3.6: 2099 | version "2.3.7" 2100 | resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2101 | integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= 2102 | dependencies: 2103 | core-util-is "~1.0.0" 2104 | inherits "~2.0.3" 2105 | isarray "~1.0.0" 2106 | process-nextick-args "~2.0.0" 2107 | safe-buffer "~5.1.1" 2108 | string_decoder "~1.1.1" 2109 | util-deprecate "~1.0.1" 2110 | 2111 | readable-stream@^3.0.6: 2112 | version "3.6.0" 2113 | resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2114 | integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg= 2115 | dependencies: 2116 | inherits "^2.0.3" 2117 | string_decoder "^1.1.1" 2118 | util-deprecate "^1.0.1" 2119 | 2120 | readable-stream@~2.0.6: 2121 | version "2.0.6" 2122 | resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" 2123 | integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= 2124 | dependencies: 2125 | core-util-is "~1.0.0" 2126 | inherits "~2.0.1" 2127 | isarray "~1.0.0" 2128 | process-nextick-args "~1.0.6" 2129 | string_decoder "~0.10.x" 2130 | util-deprecate "~1.0.1" 2131 | 2132 | regexpp@^2.0.1: 2133 | version "2.0.1" 2134 | resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 2135 | integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= 2136 | 2137 | regexpp@^3.0.0: 2138 | version "3.0.0" 2139 | resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" 2140 | integrity sha1-3WOYLuMwDme0HBlW+FCqaA2dMw4= 2141 | 2142 | request@^2.65.0: 2143 | version "2.88.2" 2144 | resolved "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 2145 | integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM= 2146 | dependencies: 2147 | aws-sign2 "~0.7.0" 2148 | aws4 "^1.8.0" 2149 | caseless "~0.12.0" 2150 | combined-stream "~1.0.6" 2151 | extend "~3.0.2" 2152 | forever-agent "~0.6.1" 2153 | form-data "~2.3.2" 2154 | har-validator "~5.1.3" 2155 | http-signature "~1.2.0" 2156 | is-typedarray "~1.0.0" 2157 | isstream "~0.1.2" 2158 | json-stringify-safe "~5.0.1" 2159 | mime-types "~2.1.19" 2160 | oauth-sign "~0.9.0" 2161 | performance-now "^2.1.0" 2162 | qs "~6.5.2" 2163 | safe-buffer "^5.1.2" 2164 | tough-cookie "~2.5.0" 2165 | tunnel-agent "^0.6.0" 2166 | uuid "^3.3.2" 2167 | 2168 | resolve-from@^4.0.0: 2169 | version "4.0.0" 2170 | resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2171 | integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= 2172 | 2173 | resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1: 2174 | version "1.15.1" 2175 | resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" 2176 | integrity sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g= 2177 | dependencies: 2178 | path-parse "^1.0.6" 2179 | 2180 | restore-cursor@^3.1.0: 2181 | version "3.1.0" 2182 | resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 2183 | integrity sha1-OfZ8VLOnpYzqUjbZXPADQjljH34= 2184 | dependencies: 2185 | onetime "^5.1.0" 2186 | signal-exit "^3.0.2" 2187 | 2188 | rimraf@2.6.3: 2189 | version "2.6.3" 2190 | resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&sync_timestamp=1581229905836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 2191 | integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs= 2192 | dependencies: 2193 | glob "^7.1.3" 2194 | 2195 | robust-orientation@^1.0.2: 2196 | version "1.1.3" 2197 | resolved "https://registry.npm.taobao.org/robust-orientation/download/robust-orientation-1.1.3.tgz#daff5b00d3be4e60722f0e9c0156ef967f1c2049" 2198 | integrity sha1-2v9bANO+TmByLw6cAVbvln8cIEk= 2199 | dependencies: 2200 | robust-scale "^1.0.2" 2201 | robust-subtract "^1.0.0" 2202 | robust-sum "^1.0.0" 2203 | two-product "^1.0.2" 2204 | 2205 | robust-point-in-polygon@^1.0.3: 2206 | version "1.0.3" 2207 | resolved "https://registry.npm.taobao.org/robust-point-in-polygon/download/robust-point-in-polygon-1.0.3.tgz#ea68f025a44dfe6aede80f0863788705cf547ec4" 2208 | integrity sha1-6mjwJaRN/mrt6A8IY3iHBc9UfsQ= 2209 | dependencies: 2210 | robust-orientation "^1.0.2" 2211 | 2212 | robust-scale@^1.0.2: 2213 | version "1.0.2" 2214 | resolved "https://registry.npm.taobao.org/robust-scale/download/robust-scale-1.0.2.tgz#775132ed09542d028e58b2cc79c06290bcf78c32" 2215 | integrity sha1-d1Ey7QlULQKOWLLMecBikLz3jDI= 2216 | dependencies: 2217 | two-product "^1.0.2" 2218 | two-sum "^1.0.0" 2219 | 2220 | robust-subtract@^1.0.0: 2221 | version "1.0.0" 2222 | resolved "https://registry.npm.taobao.org/robust-subtract/download/robust-subtract-1.0.0.tgz#e0b164e1ed8ba4e3a5dda45a12038348dbed3e9a" 2223 | integrity sha1-4LFk4e2LpOOl3aRaEgODSNvtPpo= 2224 | 2225 | robust-sum@^1.0.0: 2226 | version "1.0.0" 2227 | resolved "https://registry.npm.taobao.org/robust-sum/download/robust-sum-1.0.0.tgz#16646e525292b4d25d82757a286955e0bbfa53d9" 2228 | integrity sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k= 2229 | 2230 | run-async@^2.4.0: 2231 | version "2.4.0" 2232 | resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" 2233 | integrity sha1-5ZBUpbhods+uB/Qx0Yy63cWU8eg= 2234 | dependencies: 2235 | is-promise "^2.1.0" 2236 | 2237 | rxjs@^6.5.3: 2238 | version "6.5.4" 2239 | resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" 2240 | integrity sha1-4Hd/4NGEzseHLfFH8wNXLUFOIRw= 2241 | dependencies: 2242 | tslib "^1.9.0" 2243 | 2244 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: 2245 | version "5.2.0" 2246 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 2247 | integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk= 2248 | 2249 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2250 | version "5.1.2" 2251 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2252 | integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= 2253 | 2254 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 2255 | version "2.1.2" 2256 | resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2257 | integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= 2258 | 2259 | schema-utils@^0.4.0: 2260 | version "0.4.7" 2261 | resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-0.4.7.tgz?cache=0&sync_timestamp=1583928409383&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" 2262 | integrity sha1-unT1l9K+LqiAExdG7hfQoJPGgYc= 2263 | dependencies: 2264 | ajv "^6.1.0" 2265 | ajv-keywords "^3.1.0" 2266 | 2267 | scratch-parser@5.0.0: 2268 | version "5.0.0" 2269 | resolved "https://registry.npm.taobao.org/scratch-parser/download/scratch-parser-5.0.0.tgz#480c357047d45b7119b74be441ba4a3c28cd8216" 2270 | integrity sha1-SAw1cEfUW3EZt0vkQbpKPCjNghY= 2271 | dependencies: 2272 | ajv "6.3.0" 2273 | jszip "3.1.5" 2274 | pify "4.0.1" 2275 | 2276 | scratch-sb1-converter@0.2.7: 2277 | version "0.2.7" 2278 | resolved "https://registry.npm.taobao.org/scratch-sb1-converter/download/scratch-sb1-converter-0.2.7.tgz#88fe929f92beba25fe591b42a8796380c2680d7b" 2279 | integrity sha1-iP6Sn5K+uiX+WRtCqHljgMJoDXs= 2280 | dependencies: 2281 | js-md5 "0.7.3" 2282 | minilog "3.1.0" 2283 | text-encoding "^0.7.0" 2284 | 2285 | scratch-translate-extension-languages@0.0.20191118205314: 2286 | version "0.0.20191118205314" 2287 | resolved "https://registry.npm.taobao.org/scratch-translate-extension-languages/download/scratch-translate-extension-languages-0.0.20191118205314.tgz#9f781cc0c89785faba8ae86775a4915225676284" 2288 | integrity sha1-n3gcwMiXhfq6iuhndaSRUiVnYoQ= 2289 | 2290 | scratch-vm@^0.2.0-prerelease.20200402182733: 2291 | version "0.2.0-prerelease.20200402182733" 2292 | resolved "https://registry.npm.taobao.org/scratch-vm/download/scratch-vm-0.2.0-prerelease.20200402182733.tgz#bd399a02c4b3dcaaab6cc1e73c224de85caeb8c1" 2293 | integrity sha1-vTmaAsSz3KqrbMHnPCJN6FyuuME= 2294 | dependencies: 2295 | "@vernier/godirect" "1.5.0" 2296 | arraybuffer-loader "^1.0.6" 2297 | atob "2.1.2" 2298 | btoa "1.2.1" 2299 | canvas-toBlob "1.0.0" 2300 | decode-html "2.0.0" 2301 | diff-match-patch "1.0.4" 2302 | format-message "6.2.1" 2303 | htmlparser2 "3.10.0" 2304 | immutable "3.8.1" 2305 | jszip "^3.1.5" 2306 | minilog "3.1.0" 2307 | nets "3.2.0" 2308 | scratch-parser "5.0.0" 2309 | scratch-sb1-converter "0.2.7" 2310 | scratch-translate-extension-languages "0.0.20191118205314" 2311 | text-encoding "0.7.0" 2312 | worker-loader "^1.1.1" 2313 | 2314 | "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: 2315 | version "5.7.1" 2316 | resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2317 | integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= 2318 | 2319 | semver@^6.1.0, semver@^6.1.2: 2320 | version "6.3.0" 2321 | resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2322 | integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= 2323 | 2324 | set-immediate-shim@~1.0.1: 2325 | version "1.0.1" 2326 | resolved "https://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2327 | integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= 2328 | 2329 | shebang-command@^1.2.0: 2330 | version "1.2.0" 2331 | resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2332 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2333 | dependencies: 2334 | shebang-regex "^1.0.0" 2335 | 2336 | shebang-regex@^1.0.0: 2337 | version "1.0.0" 2338 | resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2339 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2340 | 2341 | sigmund@^1.0.1: 2342 | version "1.0.1" 2343 | resolved "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 2344 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= 2345 | 2346 | signal-exit@^3.0.2: 2347 | version "3.0.2" 2348 | resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2349 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2350 | 2351 | slice-ansi@^2.1.0: 2352 | version "2.1.0" 2353 | resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 2354 | integrity sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY= 2355 | dependencies: 2356 | ansi-styles "^3.2.0" 2357 | astral-regex "^1.0.0" 2358 | is-fullwidth-code-point "^2.0.0" 2359 | 2360 | sparser@^1.4.11: 2361 | version "1.4.12" 2362 | resolved "https://registry.npm.taobao.org/sparser/download/sparser-1.4.12.tgz#d591f088c2658a57b138390110d71db0f0053cb0" 2363 | integrity sha1-1ZHwiMJlilexODkBENcdsPAFPLA= 2364 | dependencies: 2365 | "@types/node" "^12.7.1" 2366 | 2367 | spdx-correct@^3.0.0: 2368 | version "3.1.0" 2369 | resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 2370 | integrity sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ= 2371 | dependencies: 2372 | spdx-expression-parse "^3.0.0" 2373 | spdx-license-ids "^3.0.0" 2374 | 2375 | spdx-exceptions@^2.1.0: 2376 | version "2.2.0" 2377 | resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 2378 | integrity sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc= 2379 | 2380 | spdx-expression-parse@^3.0.0: 2381 | version "3.0.0" 2382 | resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2383 | integrity sha1-meEZt6XaAOBUkcn6M4t5BII7QdA= 2384 | dependencies: 2385 | spdx-exceptions "^2.1.0" 2386 | spdx-license-ids "^3.0.0" 2387 | 2388 | spdx-license-ids@^3.0.0: 2389 | version "3.0.5" 2390 | resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 2391 | integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ= 2392 | 2393 | sprintf-js@~1.0.2: 2394 | version "1.0.3" 2395 | resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2396 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2397 | 2398 | sshpk@^1.7.0: 2399 | version "1.16.1" 2400 | resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 2401 | integrity sha1-+2YcC+8ps520B2nuOfpwCT1vaHc= 2402 | dependencies: 2403 | asn1 "~0.2.3" 2404 | assert-plus "^1.0.0" 2405 | bcrypt-pbkdf "^1.0.0" 2406 | dashdash "^1.12.0" 2407 | ecc-jsbn "~0.1.1" 2408 | getpass "^0.1.1" 2409 | jsbn "~0.1.0" 2410 | safer-buffer "^2.0.2" 2411 | tweetnacl "~0.14.0" 2412 | 2413 | string-width@^3.0.0: 2414 | version "3.1.0" 2415 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2416 | integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= 2417 | dependencies: 2418 | emoji-regex "^7.0.1" 2419 | is-fullwidth-code-point "^2.0.0" 2420 | strip-ansi "^5.1.0" 2421 | 2422 | string-width@^4.1.0: 2423 | version "4.2.0" 2424 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2425 | integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU= 2426 | dependencies: 2427 | emoji-regex "^8.0.0" 2428 | is-fullwidth-code-point "^3.0.0" 2429 | strip-ansi "^6.0.0" 2430 | 2431 | string.prototype.trimleft@^2.1.1: 2432 | version "2.1.1" 2433 | resolved "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" 2434 | integrity sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ= 2435 | dependencies: 2436 | define-properties "^1.1.3" 2437 | function-bind "^1.1.1" 2438 | 2439 | string.prototype.trimright@^2.1.1: 2440 | version "2.1.1" 2441 | resolved "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" 2442 | integrity sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk= 2443 | dependencies: 2444 | define-properties "^1.1.3" 2445 | function-bind "^1.1.1" 2446 | 2447 | string_decoder@^1.1.1: 2448 | version "1.3.0" 2449 | resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2450 | integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4= 2451 | dependencies: 2452 | safe-buffer "~5.2.0" 2453 | 2454 | string_decoder@~0.10.x: 2455 | version "0.10.31" 2456 | resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2457 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 2458 | 2459 | string_decoder@~1.1.1: 2460 | version "1.1.1" 2461 | resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2462 | integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= 2463 | dependencies: 2464 | safe-buffer "~5.1.0" 2465 | 2466 | strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2467 | version "5.2.0" 2468 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2469 | integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= 2470 | dependencies: 2471 | ansi-regex "^4.1.0" 2472 | 2473 | strip-ansi@^6.0.0: 2474 | version "6.0.0" 2475 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2476 | integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= 2477 | dependencies: 2478 | ansi-regex "^5.0.0" 2479 | 2480 | strip-bom@^3.0.0: 2481 | version "3.0.0" 2482 | resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2483 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2484 | 2485 | strip-json-comments@^3.0.1: 2486 | version "3.0.1" 2487 | resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 2488 | integrity sha1-hXE5dakfuHvxswXMp3OV5A0qZKc= 2489 | 2490 | supports-color@^5.3.0: 2491 | version "5.5.0" 2492 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2493 | integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= 2494 | dependencies: 2495 | has-flag "^3.0.0" 2496 | 2497 | supports-color@^7.1.0: 2498 | version "7.1.0" 2499 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2500 | integrity sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E= 2501 | dependencies: 2502 | has-flag "^4.0.0" 2503 | 2504 | table@^5.2.3: 2505 | version "5.4.6" 2506 | resolved "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 2507 | integrity sha1-EpLRlQDOP4YFOwXw6Ofko7shB54= 2508 | dependencies: 2509 | ajv "^6.10.2" 2510 | lodash "^4.17.14" 2511 | slice-ansi "^2.1.0" 2512 | string-width "^3.0.0" 2513 | 2514 | text-encoding@0.7.0, text-encoding@^0.7.0: 2515 | version "0.7.0" 2516 | resolved "https://registry.npm.taobao.org/text-encoding/download/text-encoding-0.7.0.tgz#f895e836e45990624086601798ea98e8f36ee643" 2517 | integrity sha1-+JXoNuRZkGJAhmAXmOqY6PNu5kM= 2518 | 2519 | text-table@^0.2.0: 2520 | version "0.2.0" 2521 | resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2522 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2523 | 2524 | through@^2.3.6: 2525 | version "2.3.8" 2526 | resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2527 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2528 | 2529 | tiff@^2.0.0: 2530 | version "2.1.0" 2531 | resolved "https://registry.npm.taobao.org/tiff/download/tiff-2.1.0.tgz#b3f41c519bd66835267f14cb31a04acb1f7860ca" 2532 | integrity sha1-s/QcUZvWaDUmfxTLMaBKyx94YMo= 2533 | dependencies: 2534 | iobuffer "^2.1.0" 2535 | 2536 | tiff@^4.0.0: 2537 | version "4.0.0" 2538 | resolved "https://registry.npm.taobao.org/tiff/download/tiff-4.0.0.tgz#f6054a1935e3110a09f5984bc5483982bffc3b4a" 2539 | integrity sha1-9gVKGTXjEQoJ9ZhLxUg5gr/8O0o= 2540 | dependencies: 2541 | iobuffer "^5.0.2" 2542 | 2543 | tmp@^0.0.33: 2544 | version "0.0.33" 2545 | resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2546 | integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= 2547 | dependencies: 2548 | os-tmpdir "~1.0.2" 2549 | 2550 | tough-cookie@~2.5.0: 2551 | version "2.5.0" 2552 | resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 2553 | integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI= 2554 | dependencies: 2555 | psl "^1.1.28" 2556 | punycode "^2.1.1" 2557 | 2558 | tslib@^1.9.0: 2559 | version "1.11.1" 2560 | resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 2561 | integrity sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU= 2562 | 2563 | tunnel-agent@^0.6.0: 2564 | version "0.6.0" 2565 | resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2566 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2567 | dependencies: 2568 | safe-buffer "^5.0.1" 2569 | 2570 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2571 | version "0.14.5" 2572 | resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2573 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2574 | 2575 | two-product@^1.0.2: 2576 | version "1.0.2" 2577 | resolved "https://registry.npm.taobao.org/two-product/download/two-product-1.0.2.tgz#67d95d4b257a921e2cb4bd7af9511f9088522eaa" 2578 | integrity sha1-Z9ldSyV6kh4stL16+VEfkIhSLqo= 2579 | 2580 | two-sum@^1.0.0: 2581 | version "1.0.0" 2582 | resolved "https://registry.npm.taobao.org/two-sum/download/two-sum-1.0.0.tgz#31d3f32239e4f731eca9df9155e2b297f008ab64" 2583 | integrity sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q= 2584 | 2585 | type-check@~0.3.2: 2586 | version "0.3.2" 2587 | resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2588 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2589 | dependencies: 2590 | prelude-ls "~1.1.2" 2591 | 2592 | type-fest@^0.11.0: 2593 | version "0.11.0" 2594 | resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 2595 | integrity sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E= 2596 | 2597 | type-fest@^0.8.1: 2598 | version "0.8.1" 2599 | resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2600 | integrity sha1-CeJJ696FHTseSNJ8EFREZn8XuD0= 2601 | 2602 | typedarray@^0.0.6: 2603 | version "0.0.6" 2604 | resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2605 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 2606 | 2607 | uri-js@^4.2.2: 2608 | version "4.2.2" 2609 | resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2610 | integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= 2611 | dependencies: 2612 | punycode "^2.1.0" 2613 | 2614 | utf8@^2.1.2: 2615 | version "2.1.2" 2616 | resolved "https://registry.npm.taobao.org/utf8/download/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" 2617 | integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= 2618 | 2619 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2620 | version "1.0.2" 2621 | resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2622 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2623 | 2624 | uuid@^3.3.2: 2625 | version "3.4.0" 2626 | resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2627 | integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= 2628 | 2629 | v8-compile-cache@^2.0.3: 2630 | version "2.1.0" 2631 | resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2632 | integrity sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4= 2633 | 2634 | validate-npm-package-license@^3.0.1: 2635 | version "3.0.4" 2636 | resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2637 | integrity sha1-/JH2uce6FchX9MssXe/uw51PQQo= 2638 | dependencies: 2639 | spdx-correct "^3.0.0" 2640 | spdx-expression-parse "^3.0.0" 2641 | 2642 | verror@1.10.0: 2643 | version "1.10.0" 2644 | resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2645 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2646 | dependencies: 2647 | assert-plus "^1.0.0" 2648 | core-util-is "1.0.2" 2649 | extsprintf "^1.2.0" 2650 | 2651 | web-worker-manager@^0.2.0: 2652 | version "0.2.0" 2653 | resolved "https://registry.npm.taobao.org/web-worker-manager/download/web-worker-manager-0.2.0.tgz#e1bce423c640b76c409731f9de950bb1b9266521" 2654 | integrity sha1-4bzkI8ZAt2xAlzH53pULsbkmZSE= 2655 | 2656 | which@^1.2.9: 2657 | version "1.3.1" 2658 | resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2659 | integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= 2660 | dependencies: 2661 | isexe "^2.0.0" 2662 | 2663 | word-wrap@~1.2.3: 2664 | version "1.2.3" 2665 | resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2666 | integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= 2667 | 2668 | worker-loader@^1.1.1: 2669 | version "1.1.1" 2670 | resolved "https://registry.npm.taobao.org/worker-loader/download/worker-loader-1.1.1.tgz#920d74ddac6816fc635392653ed8b4af1929fd92" 2671 | integrity sha1-kg103axoFvxjU5JlPti0rxkp/ZI= 2672 | dependencies: 2673 | loader-utils "^1.0.0" 2674 | schema-utils "^0.4.0" 2675 | 2676 | wrappy@1: 2677 | version "1.0.2" 2678 | resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2679 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2680 | 2681 | write@1.0.3: 2682 | version "1.0.3" 2683 | resolved "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 2684 | integrity sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM= 2685 | dependencies: 2686 | mkdirp "^0.5.1" 2687 | 2688 | xhr@^2.1.0: 2689 | version "2.5.0" 2690 | resolved "https://registry.npm.taobao.org/xhr/download/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" 2691 | integrity sha1-vtjRZ21co2EIZnaSt0sxbEluSd0= 2692 | dependencies: 2693 | global "~4.3.0" 2694 | is-function "^1.0.1" 2695 | parse-headers "^2.0.0" 2696 | xtend "^4.0.0" 2697 | 2698 | xtend@^4.0.0: 2699 | version "4.0.2" 2700 | resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 2701 | integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q= 2702 | 2703 | yallist@^2.1.2: 2704 | version "2.1.2" 2705 | resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2706 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2707 | --------------------------------------------------------------------------------