├── .babelrc ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── example └── Example.js ├── index.html ├── lib ├── BrowseButton.js ├── BrowseButton.js.map ├── Plupload.js ├── Plupload.js.map ├── UploadButton.js └── UploadButton.js.map ├── package-lock.json ├── package.json ├── src ├── BrowseButton.js ├── Plupload.js └── UploadButton.js ├── webpack.config.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "env", 4 | "react", 5 | "stage-0" 6 | ], 7 | "plugins": [ 8 | "transform-class-properties", 9 | "transform-decorators", 10 | "transform-react-constant-elements", 11 | "transform-react-inline-elements" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 27 | node_modules 28 | 29 | # IDE 30 | .idea 31 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src 2 | devassets 3 | examples 4 | node_modules 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | 341 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #react-plupload 2 | 3 | Use plupload functionality to upload files in your React application 4 | 5 | #Run Example 6 | ```` 7 | git clone https://github.com/lemonCMS/react-plupload.git 8 | cd react-plupload/example 9 | npm install 10 | npm run dev 11 | ```` 12 | Made possible with the excellent boilerplate from 13 | https://github.com/erikras/react-redux-universal-hot-example 14 | 15 | #Basic usage 16 | ````jsx 17 | 25 | ```` 26 | 27 | 28 | GitHub: https://github.com/lemonCMS/react-plupload 29 | ##Version 0.0.8 30 | - Added - Example 31 | - Added - build lib files 32 | - Upgrade react to 0.14 33 | 34 | ##Version 0.0.6 35 | - Added - Progressbar 36 | - Added - Errorhandling 37 | 38 | ##Version 0.0.4 39 | - Added - Upload is working 40 | - Added - Remove file from queue button 41 | 42 | ##Version 0.0.2 43 | - Does not try to upload anything yet, just got the file selector working. 44 | 45 | 46 | ##Wishlist 47 | - ~~progressbar~~ 48 | - ~~remove delete from queue button while uploading~~ 49 | 50 | 51 | Usage 52 | - Download plupload from http://www.plupload.com, put the files in accesable folder on your webserver. 53 | - Link to de plupload js 54 | - Importent include this script before any react scripts! 55 | 56 | 61 | 62 | Events 63 | All events are available through the react component like so: 64 | 65 | 71 | 72 | All available events are on http://www.plupload.com/examples/events 73 | 74 | just call them with the "on" prefix like this: 75 | 76 | UploadComplete becomes onUploadComplete 77 | Destroy => onBecomes 78 | 79 | -------------------------------------------------------------------------------- /example/Example.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import {hot} from 'react-hot-loader'; 4 | import Plupload from '../src/Plupload'; 5 | 6 | class Example extends Component { 7 | render() { 8 | return ( 9 |
10 |

Plupload

11 | 12 |
13 | ); 14 | } 15 | } 16 | 17 | Example.propTypes = {}; 18 | Example.defaultProps = {}; 19 | 20 | const HotExample = hot(module)(Example); 21 | ReactDOM.render(, document.getElementById('root')); 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plupload 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /lib/BrowseButton.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 8 | 9 | var _omit2 = require('lodash/omit'); 10 | 11 | var _omit3 = _interopRequireDefault(_omit2); 12 | 13 | var _react = require('react'); 14 | 15 | var _react2 = _interopRequireDefault(_react); 16 | 17 | var _propTypes = require('prop-types'); 18 | 19 | var _propTypes2 = _interopRequireDefault(_propTypes); 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 28 | 29 | var BrowseButton = function (_React$Component) { 30 | _inherits(BrowseButton, _React$Component); 31 | 32 | function BrowseButton() { 33 | _classCallCheck(this, BrowseButton); 34 | 35 | return _possibleConstructorReturn(this, (BrowseButton.__proto__ || Object.getPrototypeOf(BrowseButton)).apply(this, arguments)); 36 | } 37 | 38 | _createClass(BrowseButton, [{ 39 | key: 'shouldComponentUpdate', 40 | value: function shouldComponentUpdate() { 41 | return false; 42 | } 43 | }, { 44 | key: 'render', 45 | value: function render() { 46 | return _react2.default.createElement('button', (0, _omit3.default)(this.props, 'content'), this.props.content); 47 | } 48 | }]); 49 | 50 | return BrowseButton; 51 | }(_react2.default.Component); 52 | 53 | BrowseButton.propTypes = { 54 | 'content': _propTypes2.default.string 55 | }; 56 | 57 | exports.default = BrowseButton; -------------------------------------------------------------------------------- /lib/BrowseButton.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/BrowseButton.js"],"names":["BrowseButton","createElement","props","content","Component","propTypes","string"],"mappings":";;;;AAAA;;;;AACA;;;;AACA;;;;;;;;;;;;IAEMA,Y;;;;;;;;;;;4CAEoB;AACtB,aAAO,KAAP;AACD;;;0CAEqB,CAErB;;;6BAEQ;AACP,aAAO,gBAAMC,aAAN,CAAoB,QAApB,EAA8B,oBAAM,KAAKC,KAAX,EAAkB,SAAlB,CAA9B,EAA4D,KAAKA,KAAL,CAAWC,OAAvE,CAAP;AACD;;;;EAZwB,gBAAMC,S;;AAejCJ,aAAaK,SAAb,GAAyB;AACvB,aAAW,oBAAUC;AADE,CAAzB","file":"BrowseButton.js","sourcesContent":["import _omit from 'lodash/omit';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nclass BrowseButton extends React.Component {\n\n shouldComponentUpdate() {\n return false;\n }\n\n componentWillUpdate() {\n\n }\n\n render() {\n return React.createElement('button', _omit(this.props, 'content'), this.props.content);\n }\n}\n\nBrowseButton.propTypes = {\n 'content': PropTypes.string\n};\n"]} -------------------------------------------------------------------------------- /lib/Plupload.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }(); 8 | 9 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 10 | 11 | var _lodash = require('lodash'); 12 | 13 | var _lodash2 = _interopRequireDefault(_lodash); 14 | 15 | var _react = require('react'); 16 | 17 | var _react2 = _interopRequireDefault(_react); 18 | 19 | var _propTypes = require('prop-types'); 20 | 21 | var _propTypes2 = _interopRequireDefault(_propTypes); 22 | 23 | var _BrowseButton = require('./BrowseButton'); 24 | 25 | var _BrowseButton2 = _interopRequireDefault(_BrowseButton); 26 | 27 | var _UploadButton = require('./UploadButton'); 28 | 29 | var _UploadButton2 = _interopRequireDefault(_UploadButton); 30 | 31 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 32 | 33 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 34 | 35 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 36 | 37 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 38 | 39 | var count = 0; 40 | var EVENTS = ['PostInit', 'Browse', 'Refresh', 'StateChanged', 'QueueChanged', 'OptionChanged', 'BeforeUpload', 'UploadProgress', 'FileFiltered', 'FilesAdded', 'FilesRemoved', 'FileUploaded', 'ChunkUploaded', 'UploadComplete', 'Destroy', 'Error']; 41 | 42 | var Plupload = function (_React$Component) { 43 | _inherits(Plupload, _React$Component); 44 | 45 | function Plupload() { 46 | _classCallCheck(this, Plupload); 47 | 48 | var _this = _possibleConstructorReturn(this, (Plupload.__proto__ || Object.getPrototypeOf(Plupload)).call(this)); 49 | 50 | _this.id = new Date().valueOf(); 51 | _this.state = { files: [], uploadState: false, progress: {} }; 52 | _this.runUploader = _this.runUploader.bind(_this); 53 | _this.getComponentId = _this.getComponentId.bind(_this); 54 | _this.refresh = _this.refresh.bind(_this); 55 | _this.initUploader = _this.initUploader.bind(_this); 56 | _this.list = _this.list.bind(_this); 57 | _this.clearAllFiles = _this.clearAllFiles.bind(_this); 58 | _this.clearFailedFiles = _this.clearFailedFiles.bind(_this); 59 | _this.removeFile = _this.removeFile.bind(_this); 60 | _this.doUpload = _this.doUpload.bind(_this); 61 | _this.container = null; 62 | return _this; 63 | } 64 | 65 | _createClass(Plupload, [{ 66 | key: 'checkUploader', 67 | value: function checkUploader() { 68 | return window.plupload !== undefined; 69 | } 70 | }, { 71 | key: 'runUploader', 72 | value: function runUploader() { 73 | var self = this; 74 | this.initUploader(); 75 | this.uploader.init(); 76 | 77 | EVENTS.forEach(function (event) { 78 | var handler = self.props['on' + event]; 79 | if (typeof handler === 'function') { 80 | self.uploader.bind(event, handler); 81 | } 82 | }); 83 | 84 | // Put the selected files into the current state 85 | this.uploader.bind('FilesAdded', function (up, files) { 86 | if (_lodash2.default.get(self.props, 'multi_selection') === false) { 87 | self.clearAllFiles(); 88 | } else { 89 | self.clearFailedFiles(); 90 | } 91 | 92 | var f = self.state.files; 93 | _lodash2.default.map(files, function (file) { 94 | f.push(file); 95 | }); 96 | self.setState({ files: f }, function () { 97 | if (self.props.autoUpload === true) { 98 | self.uploader.start(); 99 | } 100 | }); 101 | }); 102 | 103 | this.uploader.bind('FilesRemoved', function (up, rmFiles) { 104 | var stateFiles = self.state.files; 105 | var files = _lodash2.default.filter(stateFiles, function (file) { 106 | // console.log(rmFiles, file); 107 | return -1 !== _lodash2.default.find(rmFiles, { id: file.id }); 108 | }); 109 | self.setState({ files: files }); 110 | }); 111 | 112 | this.uploader.bind('StateChanged', function (up) { 113 | if (up.state === window.plupload.STARTED && self.state.uploadState === false) { 114 | self.setState({ uploadState: true }); 115 | } 116 | if (up.state !== window.plupload.STARTED && self.state.uploadState === true) { 117 | self.setState({ uploadState: false }); 118 | } 119 | }); 120 | 121 | this.uploader.bind('FileUploaded', function (up, file) { 122 | var stateFiles = self.state.files; 123 | _lodash2.default.map(stateFiles, function (val, key) { 124 | if (val.id === file.id) { 125 | val.uploaded = true; 126 | stateFiles[key] = val; 127 | } 128 | }); 129 | self.setState({ files: stateFiles }, function () { 130 | self.removeFile(file.id); 131 | }); 132 | }); 133 | 134 | this.uploader.bind('Error', function (up, err) { 135 | if (_lodash2.default.isUndefined(err.file) !== true) { 136 | var stateFiles = self.state.files; 137 | _lodash2.default.map(stateFiles, function (val, key) { 138 | if (val.id === err.file.id) { 139 | val.error = err; 140 | stateFiles[key] = val; 141 | } 142 | }); 143 | self.setState({ files: stateFiles }); 144 | } 145 | }); 146 | 147 | this.uploader.bind('UploadProgress', function (up, file) { 148 | var stateProgress = self.state.progress; 149 | stateProgress[file.id] = file.percent; 150 | self.setState({ progress: stateProgress }); 151 | }); 152 | } 153 | }, { 154 | key: 'componentDidMount', 155 | value: function componentDidMount() { 156 | var self = this; 157 | if (this.checkUploader()) { 158 | this.runUploader(); 159 | } else { 160 | setTimeout(function () { 161 | if (self.checkUploader()) { 162 | self.runUploader(); 163 | } else { 164 | console.warn('Plupload has not initialized'); 165 | } 166 | }, 500); 167 | } 168 | } 169 | }, { 170 | key: 'componentDidUpdate', 171 | value: function componentDidUpdate() { 172 | if (this.checkUploader()) { 173 | this.refresh(); 174 | } 175 | } 176 | }, { 177 | key: 'getComponentId', 178 | value: function getComponentId() { 179 | return this.props.id || 'react_plupload_' + this.id; 180 | } 181 | }, { 182 | key: 'refresh', 183 | value: function refresh() { 184 | // Refresh to append events to buttons again. 185 | this.uploader.refresh(); 186 | } 187 | }, { 188 | key: 'initUploader', 189 | value: function initUploader() { 190 | this.uploader = new window.plupload.Uploader(_lodash2.default.extend({ 191 | container: 'plupload_' + this.props.id, 192 | runtimes: 'html5', 193 | multipart: true, 194 | chunk_size: '1mb', 195 | browse_button: this.getComponentId(), 196 | url: '/upload' 197 | }, this.props)); 198 | } 199 | 200 | // Display selected files 201 | 202 | }, { 203 | key: 'list', 204 | value: function list() { 205 | var self = this; 206 | return _lodash2.default.map(this.state.files, function (val) { 207 | 208 | var removeFile = function removeFile(e) { 209 | e.preventDefault(); 210 | self.removeFile(val.id); 211 | }; 212 | var delButton = ''; 213 | if (self.state.uploadState === false && val.uploaded !== true) { 214 | delButton = _react2.default.createElement('button', { onClick: removeFile, className: 'pull-right' }, 'X'); 215 | } 216 | 217 | var progressBar = ''; 218 | if (self.state.uploadState === true && val.uploaded !== true && _lodash2.default.isUndefined(val.error)) { 219 | var percent = self.state.progress[val.id] || 0; 220 | progressBar = _react2.default.createElement('div', { className: 'progress' }, _react2.default.createElement('div', { 221 | className: 'progress-bar', 222 | role: 'progressbar', 223 | 'aria-valuenow': percent, 224 | 'aria-valuemin': 0, 225 | 'aria-valuemax': 100, 226 | style: { width: percent + '%' } 227 | }, _react2.default.createElement('span', { className: 'sr-only' }, percent + 'complete'))); 228 | } 229 | 230 | var errorDiv = ''; 231 | if (!_lodash2.default.isUndefined(val.error)) { 232 | errorDiv = _react2.default.createElement('div', { className: 'alert alert-danger' }, 'Error: ' + val.error.code + ', Message: ' + val.error.message); 233 | } 234 | 235 | var bgSuccess = ''; 236 | if (!_lodash2.default.isUndefined(val.uploaded)) { 237 | bgSuccess = 'bg-success'; 238 | } 239 | 240 | return _react2.default.createElement('li', { key: val.id }, _react2.default.createElement('p', { className: bgSuccess }, val.name, ' ', delButton), progressBar, errorDiv); 241 | }); 242 | } 243 | }, { 244 | key: 'clearAllFiles', 245 | value: function clearAllFiles() { 246 | var _this2 = this; 247 | 248 | var state = _lodash2.default.filter(this.state.files, function (file) { 249 | _this2.uploader.removeFile(file.id); 250 | }); 251 | this.setState({ files: state }); 252 | } 253 | }, { 254 | key: 'clearFailedFiles', 255 | value: function clearFailedFiles() { 256 | var _this3 = this; 257 | 258 | var state = _lodash2.default.filter(this.state.files, function (file) { 259 | if (file.error) { 260 | _this3.uploader.removeFile(file.id); 261 | } 262 | return !file.error; 263 | }); 264 | this.setState({ files: state }); 265 | } 266 | }, { 267 | key: 'removeFile', 268 | value: function removeFile(id) { 269 | this.uploader.removeFile(id); 270 | var state = _lodash2.default.filter(this.state.files, function (file) { 271 | return file.id !== id; 272 | }); 273 | this.setState({ files: state }); 274 | } 275 | }, { 276 | key: 'doUpload', 277 | value: function doUpload(e) { 278 | e.preventDefault(); 279 | this.uploader.start(); 280 | } 281 | }, { 282 | key: 'render', 283 | value: function render() { 284 | var _this4 = this; 285 | 286 | var propsSelect = { 287 | id: this.getComponentId(), 288 | type: 'button', 289 | content: this.props.buttonSelect || 'Browse' 290 | }; 291 | 292 | var propsUpload = { 293 | onClick: this.doUpload, 294 | type: 'button', 295 | content: this.props.buttonUpload || 'Upload' 296 | }; 297 | if (this.state.files.length === 0) propsUpload.disabled = 'disabled'; 298 | 299 | var list = this.list(); 300 | 301 | return _react2.default.createElement( 302 | 'div', 303 | { id: 'plupload_' + this.props.id, className: 'my-list', ref: function ref(_ref) { 304 | return _this4.container = _ref; 305 | } }, 306 | _jsx('ul', { 307 | className: 'list-unstyled' 308 | }, void 0, list), 309 | _react2.default.createElement(_BrowseButton2.default, propsSelect), 310 | _react2.default.createElement(_UploadButton2.default, propsUpload) 311 | ); 312 | } 313 | }]); 314 | 315 | return Plupload; 316 | }(_react2.default.Component); 317 | 318 | Plupload.propTypes = { 319 | 'onPostInit': _propTypes2.default.func, 320 | 'onBrowse': _propTypes2.default.func, 321 | 'onRefresh': _propTypes2.default.func, 322 | 'onStateChanged': _propTypes2.default.func, 323 | 'onQueueChanged': _propTypes2.default.func, 324 | 'onOptionChanged': _propTypes2.default.func, 325 | 'onBeforeUpload': _propTypes2.default.func, 326 | 'onUploadProgress': _propTypes2.default.func, 327 | 'onFileFiltered': _propTypes2.default.func, 328 | 'onFilesAdded': _propTypes2.default.func, 329 | 'onFilesRemoved': _propTypes2.default.func, 330 | 'onFileUploaded': _propTypes2.default.func, 331 | 'onChunkUploaded': _propTypes2.default.func, 332 | 'onUploadComplete': _propTypes2.default.func, 333 | 'onDestroy': _propTypes2.default.func, 334 | 'onError': _propTypes2.default.func, 335 | 'id': _propTypes2.default.string.isRequired, 336 | 'buttonSelect': _propTypes2.default.string, 337 | 'buttonUpload': _propTypes2.default.string, 338 | 'autoUpload': _propTypes2.default.bool 339 | }; 340 | 341 | exports.default = Plupload; -------------------------------------------------------------------------------- /lib/Plupload.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/Plupload.js"],"names":["count","EVENTS","Plupload","id","Date","valueOf","state","files","uploadState","progress","runUploader","bind","getComponentId","refresh","initUploader","list","clearAllFiles","clearFailedFiles","removeFile","doUpload","window","plupload","undefined","self","uploader","init","forEach","event","handler","props","up","get","f","map","file","push","setState","autoUpload","start","rmFiles","stateFiles","filter","console","log","find","STARTED","val","key","uploaded","err","isUndefined","error","stateProgress","percent","checkUploader","setTimeout","warn","Uploader","extend","container","runtimes","multipart","chunk_size","browse_button","url","flash_swf_url","e","preventDefault","delButton","createElement","onClick","className","progressBar","role","style","width","errorDiv","code","message","bgSuccess","name","propsSelect","type","content","buttonSelect","propsUpload","buttonUpload","length","disabled","Component","propTypes","func","string","isRequired","bool"],"mappings":"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","file":"Plupload.js","sourcesContent":["import _ from 'lodash';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport BrowseButton from './BrowseButton';\r\nimport UploadButton from './UploadButton';\r\n\r\nlet count = 0;\r\nconst EVENTS = [\r\n 'PostInit', 'Browse', 'Refresh', 'StateChanged', 'QueueChanged', 'OptionChanged',\r\n 'BeforeUpload', 'UploadProgress', 'FileFiltered', 'FilesAdded', 'FilesRemoved', 'FileUploaded', 'ChunkUploaded',\r\n 'UploadComplete', 'Destroy', 'Error'\r\n];\r\n\r\nclass Plupload extends React.Component {\r\n constructor() {\r\n super();\r\n this.id =new Date().valueOf();\r\n this.state = {files: [], uploadState: false, progress: {}};\r\n this.runUploader = this.runUploader.bind(this);\r\n this.getComponentId = this.getComponentId.bind(this);\r\n this.refresh = this.refresh.bind(this);\r\n this.initUploader = this.initUploader.bind(this);\r\n this.list = this.list.bind(this);\r\n this.clearAllFiles = this.clearAllFiles.bind(this);\r\n this.clearFailedFiles = this.clearFailedFiles.bind(this);\r\n this.removeFile = this.removeFile.bind(this);\r\n this.doUpload = this.doUpload.bind(this);\r\n }\r\n\r\n checkUploader() {\r\n return window.plupload !== undefined;\r\n }\r\n\r\n runUploader() {\r\n const self = this;\r\n this.initUploader();\r\n this.uploader.init();\r\n\r\n EVENTS.forEach(function(event) {\r\n const handler = self.props['on' + event];\r\n if (typeof handler === 'function') {\r\n self.uploader.bind(event, handler);\r\n }\r\n });\r\n\r\n // Put the selected files into the current state\r\n this.uploader.bind('FilesAdded', (up, files) => {\r\n if (_.get(self.props, 'multi_selection') === false) {\r\n self.clearAllFiles();\r\n } else {\r\n self.clearFailedFiles();\r\n }\r\n\r\n const f = self.state.files;\r\n _.map(files, (file) => {\r\n f.push(file);\r\n });\r\n self.setState({files: f}, ()=> {\r\n if (self.props.autoUpload === true) {\r\n self.uploader.start();\r\n }\r\n });\r\n });\r\n\r\n this.uploader.bind('FilesRemoved', (up, rmFiles) => {\r\n const stateFiles = self.state.files;\r\n const files = _.filter(stateFiles, (file) => {\r\n console.log(rmFiles, file);\r\n return -1 !== _.find(rmFiles, {id: file.id});\r\n });\r\n self.setState({files: files});\r\n });\r\n\r\n this.uploader.bind('StateChanged', (up) => {\r\n if (up.state === window.plupload.STARTED && self.state.uploadState === false) {\r\n self.setState({uploadState: true});\r\n }\r\n if (up.state !== window.plupload.STARTED && self.state.uploadState === true) {\r\n self.setState({uploadState: false});\r\n }\r\n });\r\n\r\n this.uploader.bind('FileUploaded', (up, file) => {\r\n const stateFiles = self.state.files;\r\n _.map(stateFiles, (val, key) => {\r\n if (val.id === file.id) {\r\n val.uploaded = true;\r\n stateFiles[key] = val;\r\n }\r\n });\r\n self.setState({files: stateFiles}, () => {\r\n self.removeFile(file.id);\r\n });\r\n });\r\n\r\n this.uploader.bind('Error', (up, err) => {\r\n if (_.isUndefined(err.file) !== true) {\r\n const stateFiles = self.state.files;\r\n _.map(stateFiles, (val, key) => {\r\n if (val.id === err.file.id) {\r\n val.error = err;\r\n stateFiles[key] = val;\r\n }\r\n });\r\n self.setState({files: stateFiles});\r\n }\r\n });\r\n\r\n this.uploader.bind('UploadProgress', (up, file) => {\r\n const stateProgress = self.state.progress;\r\n stateProgress[file.id] = file.percent;\r\n self.setState({progress: stateProgress});\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n const self = this;\r\n if(this.checkUploader()) {\r\n this.runUploader();\r\n } else {\r\n setTimeout(function() {\r\n if(self.checkUploader()) {\r\n self.runUploader();\r\n } else {\r\n console.warn('Plupload has not initialized');\r\n }\r\n }, 500);\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n if(this.checkUploader()) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n getComponentId() {\r\n return this.props.id || 'react_plupload_' + this.id;\r\n }\r\n\r\n refresh() {\r\n // Refresh to append events to buttons again.\r\n this.uploader.refresh();\r\n }\r\n\r\n initUploader() {\r\n this.uploader = new window.plupload.Uploader(_.extend({\r\n container: 'container' + this.id,\r\n runtimes: 'flash',\r\n multipart: true,\r\n chunk_size: '1mb',\r\n browse_button: this.getComponentId(),\r\n url: '/upload',\r\n flash_swf_url: '/plupload-2.1.8/js/Moxie.swf'\r\n }, this.props));\r\n }\r\n\r\n // Display selected files\r\n list() {\r\n const self = this;\r\n return _.map(this.state.files, (val) => {\r\n\r\n const removeFile = (e) => {\r\n e.preventDefault();\r\n self.removeFile(val.id);\r\n };\r\n let delButton = '';\r\n if (self.state.uploadState === false && val.uploaded !== true) {\r\n delButton = React.createElement('button', {onClick: removeFile, className: 'pull-right'}, 'X');\r\n }\r\n\r\n let progressBar = '';\r\n if (self.state.uploadState === true && val.uploaded !== true && _.isUndefined(val.error)) {\r\n const percent = self.state.progress[val.id] || 0;\r\n progressBar = React.createElement('div', {className: 'progress'},\r\n React.createElement('div', {\r\n className: 'progress-bar',\r\n role: 'progressbar',\r\n 'aria-valuenow': percent,\r\n 'aria-valuemin': 0,\r\n 'aria-valuemax': 100,\r\n style: {width: percent + '%'}\r\n },\r\n React.createElement('span', {className: 'sr-only'}, percent + 'complete')\r\n )\r\n );\r\n }\r\n\r\n let errorDiv = '';\r\n if (!_.isUndefined(val.error)) {\r\n errorDiv = React.createElement('div', {className: 'alert alert-danger'}, 'Error: ' + val.error.code + ', Message: ' + val.error.message);\r\n }\r\n\r\n let bgSuccess = '';\r\n if (!_.isUndefined(val.uploaded)) {\r\n bgSuccess = 'bg-success';\r\n }\r\n\r\n return React.createElement('li', {key: val.id},\r\n React.createElement('p', {className: bgSuccess}, val.name, ' ', delButton), progressBar, errorDiv\r\n );\r\n });\r\n }\r\n\r\n clearAllFiles() {\r\n _.filter(this.state.files, (file) => {\r\n this.uploader.removeFile(file.id);\r\n });\r\n }\r\n\r\n clearFailedFiles() {\r\n _.filter(this.state.files, (file) => {\r\n if (file.error) {\r\n this.uploader.removeFile(file.id);\r\n }\r\n return !file.error;\r\n });\r\n }\r\n\r\n removeFile(id) {\r\n this.uploader.removeFile(id);\r\n _.filter(this.state.files, (file) => {\r\n return file.id !== id;\r\n });\r\n }\r\n\r\n doUpload(e) {\r\n e.preventDefault();\r\n this.uploader.start();\r\n }\r\n\r\n render() {\r\n const propsSelect = {\r\n id: this.getComponentId(),\r\n type: 'button',\r\n content: this.props.buttonSelect || 'Browse'\r\n };\r\n\r\n const propsUpload = {\r\n onClick: this.doUpload,\r\n type: 'button',\r\n content: this.props.buttonUpload || 'Upload'\r\n };\r\n if (this.state.files.length === 0) propsUpload.disabled = 'disabled';\r\n\r\n const list = this.list();\r\n\r\n return React.createElement('div', {className: 'my-list', id: 'container' + this.id},\r\n React.createElement('ul', {className: 'list-unstyled'}, list),\r\n BrowseButton(propsSelect),\r\n UploadButton(propsUpload)\r\n );\r\n }\r\n}\r\n\r\nPlupload.propTypes = {\r\n 'onPostInit': PropTypes.func,\r\n 'onBrowse': PropTypes.func,\r\n 'onRefresh': PropTypes.func,\r\n 'onStateChanged': PropTypes.func,\r\n 'onQueueChanged': PropTypes.func,\r\n 'onOptionChanged': PropTypes.func,\r\n 'onBeforeUpload': PropTypes.func,\r\n 'onUploadProgress': PropTypes.func,\r\n 'onFileFiltered': PropTypes.func,\r\n 'onFilesAdded': PropTypes.func,\r\n 'onFilesRemoved': PropTypes.func,\r\n 'onFileUploaded': PropTypes.func,\r\n 'onChunkUploaded': PropTypes.func,\r\n 'onUploadComplete': PropTypes.func,\r\n 'onDestroy': PropTypes.func,\r\n 'onError': PropTypes.func,\r\n 'id': PropTypes.string.isRequired,\r\n 'buttonSelect': PropTypes.string,\r\n 'buttonUpload': PropTypes.string,\r\n 'autoUpload': PropTypes.bool\r\n};\r\n\r\nexport default Plupload;\r\n"]} -------------------------------------------------------------------------------- /lib/UploadButton.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 8 | 9 | var _omit2 = require('lodash/omit'); 10 | 11 | var _omit3 = _interopRequireDefault(_omit2); 12 | 13 | var _react = require('react'); 14 | 15 | var _react2 = _interopRequireDefault(_react); 16 | 17 | var _propTypes = require('prop-types'); 18 | 19 | var _propTypes2 = _interopRequireDefault(_propTypes); 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 26 | 27 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 28 | 29 | var UploadButton = function (_React$Component) { 30 | _inherits(UploadButton, _React$Component); 31 | 32 | function UploadButton() { 33 | _classCallCheck(this, UploadButton); 34 | 35 | return _possibleConstructorReturn(this, (UploadButton.__proto__ || Object.getPrototypeOf(UploadButton)).apply(this, arguments)); 36 | } 37 | 38 | _createClass(UploadButton, [{ 39 | key: 'shouldComponentUpdate', 40 | value: function shouldComponentUpdate() { 41 | return true; 42 | } 43 | }, { 44 | key: 'render', 45 | value: function render() { 46 | return _react2.default.createElement('button', (0, _omit3.default)(this.props, 'content'), this.props.content); 47 | } 48 | }]); 49 | 50 | return UploadButton; 51 | }(_react2.default.Component); 52 | 53 | UploadButton.propTypes = { 54 | content: _propTypes2.default.string 55 | }; 56 | 57 | exports.default = UploadButton; -------------------------------------------------------------------------------- /lib/UploadButton.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/UploadButton.js"],"names":["UploadButton","createElement","props","content","Component","propTypes","string"],"mappings":";;;;;;;;AAAA;;;;AACA;;;;AACA;;;;;;;;;;;;IAGMA,Y;;;;;;;;;;;4CAEoB;AACtB,aAAO,IAAP;AACD;;;6BAEQ;AACP,aAAO,gBAAMC,aAAN,CAAoB,QAApB,EAA8B,oBAAM,KAAKC,KAAX,EAAkB,SAAlB,CAA9B,EAA4D,KAAKA,KAAL,CAAWC,OAAvE,CAAP;AACD;;;;EARwB,gBAAMC,S;;AAWjCJ,aAAaK,SAAb,GAAyB;AACvBF,WAAS,oBAAUG;AADI,CAAzB;;kBAIeN,Y","file":"UploadButton.js","sourcesContent":["import _omit from 'lodash/omit';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n\nclass UploadButton extends React.Component {\n\n shouldComponentUpdate() {\n return true;\n };\n\n render() {\n return React.createElement('button', _omit(this.props, 'content'), this.props.content);\n }\n}\n\nUploadButton.propTypes = {\n content: PropTypes.string\n};\n\nexport default UploadButton;\n"]} -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-plupload", 3 | "version": "0.0.19", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0-beta.36", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", 10 | "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", 11 | "dev": true, 12 | "requires": { 13 | "chalk": "2.3.0", 14 | "esutils": "2.0.2", 15 | "js-tokens": "3.0.2" 16 | }, 17 | "dependencies": { 18 | "ansi-styles": { 19 | "version": "3.2.0", 20 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 21 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 22 | "dev": true, 23 | "requires": { 24 | "color-convert": "1.9.1" 25 | } 26 | }, 27 | "chalk": { 28 | "version": "2.3.0", 29 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 30 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 31 | "dev": true, 32 | "requires": { 33 | "ansi-styles": "3.2.0", 34 | "escape-string-regexp": "1.0.5", 35 | "supports-color": "4.5.0" 36 | } 37 | }, 38 | "supports-color": { 39 | "version": "4.5.0", 40 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 41 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 42 | "dev": true, 43 | "requires": { 44 | "has-flag": "2.0.0" 45 | } 46 | } 47 | } 48 | }, 49 | "@babel/helper-function-name": { 50 | "version": "7.0.0-beta.36", 51 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz", 52 | "integrity": "sha512-/SGPOyifPf20iTrMN+WdlY2MbKa7/o4j7B/4IAsdOusASp2icT+Wcdjf4tjJHaXNX8Pe9bpgVxLNxhRvcf8E5w==", 53 | "dev": true, 54 | "requires": { 55 | "@babel/helper-get-function-arity": "7.0.0-beta.36", 56 | "@babel/template": "7.0.0-beta.36", 57 | "@babel/types": "7.0.0-beta.36" 58 | } 59 | }, 60 | "@babel/helper-get-function-arity": { 61 | "version": "7.0.0-beta.36", 62 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz", 63 | "integrity": "sha512-vPPcx2vsSoDbcyWr9S3nd0FM3B4hEXnt0p1oKpwa08GwK0fSRxa98MyaRGf8suk8frdQlG1P3mDrz5p/Rr3pbA==", 64 | "dev": true, 65 | "requires": { 66 | "@babel/types": "7.0.0-beta.36" 67 | } 68 | }, 69 | "@babel/template": { 70 | "version": "7.0.0-beta.36", 71 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.36.tgz", 72 | "integrity": "sha512-mUBi90WRyZ9iVvlWLEdeo8gn/tROyJdjKNC4W5xJTSZL+9MS89rTJSqiaJKXIkxk/YRDL/g/8snrG/O0xl33uA==", 73 | "dev": true, 74 | "requires": { 75 | "@babel/code-frame": "7.0.0-beta.36", 76 | "@babel/types": "7.0.0-beta.36", 77 | "babylon": "7.0.0-beta.36", 78 | "lodash": "4.17.4" 79 | }, 80 | "dependencies": { 81 | "babylon": { 82 | "version": "7.0.0-beta.36", 83 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", 84 | "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", 85 | "dev": true 86 | } 87 | } 88 | }, 89 | "@babel/traverse": { 90 | "version": "7.0.0-beta.36", 91 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.36.tgz", 92 | "integrity": "sha512-OTUb6iSKVR/98dGThRJ1BiyfwbuX10BVnkz89IpaerjTPRhDfMBfLsqmzxz5MiywUOW4M0Clta0o7rSxkfcuzw==", 93 | "dev": true, 94 | "requires": { 95 | "@babel/code-frame": "7.0.0-beta.36", 96 | "@babel/helper-function-name": "7.0.0-beta.36", 97 | "@babel/types": "7.0.0-beta.36", 98 | "babylon": "7.0.0-beta.36", 99 | "debug": "3.1.0", 100 | "globals": "11.3.0", 101 | "invariant": "2.2.2", 102 | "lodash": "4.17.4" 103 | }, 104 | "dependencies": { 105 | "babylon": { 106 | "version": "7.0.0-beta.36", 107 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", 108 | "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", 109 | "dev": true 110 | }, 111 | "debug": { 112 | "version": "3.1.0", 113 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 114 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 115 | "dev": true, 116 | "requires": { 117 | "ms": "2.0.0" 118 | } 119 | }, 120 | "globals": { 121 | "version": "11.3.0", 122 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", 123 | "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", 124 | "dev": true 125 | } 126 | } 127 | }, 128 | "@babel/types": { 129 | "version": "7.0.0-beta.36", 130 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.36.tgz", 131 | "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", 132 | "dev": true, 133 | "requires": { 134 | "esutils": "2.0.2", 135 | "lodash": "4.17.4", 136 | "to-fast-properties": "2.0.0" 137 | }, 138 | "dependencies": { 139 | "to-fast-properties": { 140 | "version": "2.0.0", 141 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 142 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 143 | "dev": true 144 | } 145 | } 146 | }, 147 | "ansi-regex": { 148 | "version": "2.1.1", 149 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 150 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 151 | "dev": true 152 | }, 153 | "ansi-styles": { 154 | "version": "2.2.1", 155 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 156 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 157 | "dev": true 158 | }, 159 | "anymatch": { 160 | "version": "1.3.2", 161 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 162 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 163 | "dev": true, 164 | "optional": true, 165 | "requires": { 166 | "micromatch": "2.3.11", 167 | "normalize-path": "2.1.1" 168 | } 169 | }, 170 | "arr-diff": { 171 | "version": "2.0.0", 172 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 173 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 174 | "dev": true, 175 | "requires": { 176 | "arr-flatten": "1.1.0" 177 | } 178 | }, 179 | "arr-flatten": { 180 | "version": "1.1.0", 181 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 182 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 183 | "dev": true 184 | }, 185 | "array-unique": { 186 | "version": "0.2.1", 187 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 188 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 189 | "dev": true 190 | }, 191 | "arrify": { 192 | "version": "1.0.1", 193 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 194 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 195 | "dev": true 196 | }, 197 | "async-each": { 198 | "version": "1.0.1", 199 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 200 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 201 | "dev": true, 202 | "optional": true 203 | }, 204 | "babel-cli": { 205 | "version": "6.26.0", 206 | "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", 207 | "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", 208 | "dev": true, 209 | "requires": { 210 | "babel-core": "6.26.0", 211 | "babel-polyfill": "6.26.0", 212 | "babel-register": "6.26.0", 213 | "babel-runtime": "6.26.0", 214 | "chokidar": "1.7.0", 215 | "commander": "2.11.0", 216 | "convert-source-map": "1.5.0", 217 | "fs-readdir-recursive": "1.0.0", 218 | "glob": "7.1.2", 219 | "lodash": "4.17.4", 220 | "output-file-sync": "1.1.2", 221 | "path-is-absolute": "1.0.1", 222 | "slash": "1.0.0", 223 | "source-map": "0.5.7", 224 | "v8flags": "2.1.1" 225 | }, 226 | "dependencies": { 227 | "output-file-sync": { 228 | "version": "1.1.2", 229 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", 230 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", 231 | "dev": true, 232 | "requires": { 233 | "graceful-fs": "4.1.11", 234 | "mkdirp": "0.5.1", 235 | "object-assign": "4.1.1" 236 | } 237 | } 238 | } 239 | }, 240 | "babel-code-frame": { 241 | "version": "6.26.0", 242 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 243 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 244 | "dev": true, 245 | "requires": { 246 | "chalk": "1.1.3", 247 | "esutils": "2.0.2", 248 | "js-tokens": "3.0.2" 249 | } 250 | }, 251 | "babel-core": { 252 | "version": "6.26.0", 253 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 254 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 255 | "dev": true, 256 | "requires": { 257 | "babel-code-frame": "6.26.0", 258 | "babel-generator": "6.26.0", 259 | "babel-helpers": "6.24.1", 260 | "babel-messages": "6.23.0", 261 | "babel-register": "6.26.0", 262 | "babel-runtime": "6.26.0", 263 | "babel-template": "6.26.0", 264 | "babel-traverse": "6.26.0", 265 | "babel-types": "6.26.0", 266 | "babylon": "6.18.0", 267 | "convert-source-map": "1.5.0", 268 | "debug": "2.6.8", 269 | "json5": "0.5.1", 270 | "lodash": "4.17.4", 271 | "minimatch": "3.0.4", 272 | "path-is-absolute": "1.0.1", 273 | "private": "0.1.7", 274 | "slash": "1.0.0", 275 | "source-map": "0.5.7" 276 | } 277 | }, 278 | "babel-eslint": { 279 | "version": "8.2.1", 280 | "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.1.tgz", 281 | "integrity": "sha512-RzdVOyWKQRUnLXhwLk+eKb4oyW+BykZSkpYwFhM4tnfzAG5OWfvG0w/uyzMp5XKEU0jN82+JefHr39bG2+KhRQ==", 282 | "dev": true, 283 | "requires": { 284 | "@babel/code-frame": "7.0.0-beta.36", 285 | "@babel/traverse": "7.0.0-beta.36", 286 | "@babel/types": "7.0.0-beta.36", 287 | "babylon": "7.0.0-beta.36", 288 | "eslint-scope": "3.7.1", 289 | "eslint-visitor-keys": "1.0.0" 290 | }, 291 | "dependencies": { 292 | "babylon": { 293 | "version": "7.0.0-beta.36", 294 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", 295 | "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", 296 | "dev": true 297 | } 298 | } 299 | }, 300 | "babel-generator": { 301 | "version": "6.26.0", 302 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", 303 | "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", 304 | "dev": true, 305 | "requires": { 306 | "babel-messages": "6.23.0", 307 | "babel-runtime": "6.26.0", 308 | "babel-types": "6.26.0", 309 | "detect-indent": "4.0.0", 310 | "jsesc": "1.3.0", 311 | "lodash": "4.17.4", 312 | "source-map": "0.5.7", 313 | "trim-right": "1.0.1" 314 | } 315 | }, 316 | "babel-helper-bindify-decorators": { 317 | "version": "6.24.1", 318 | "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", 319 | "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", 320 | "dev": true, 321 | "requires": { 322 | "babel-runtime": "6.26.0", 323 | "babel-traverse": "6.26.0", 324 | "babel-types": "6.26.0" 325 | } 326 | }, 327 | "babel-helper-builder-binary-assignment-operator-visitor": { 328 | "version": "6.24.1", 329 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 330 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 331 | "dev": true, 332 | "requires": { 333 | "babel-helper-explode-assignable-expression": "6.24.1", 334 | "babel-runtime": "6.26.0", 335 | "babel-types": "6.26.0" 336 | } 337 | }, 338 | "babel-helper-builder-react-jsx": { 339 | "version": "6.26.0", 340 | "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", 341 | "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", 342 | "dev": true, 343 | "requires": { 344 | "babel-runtime": "6.26.0", 345 | "babel-types": "6.26.0", 346 | "esutils": "2.0.2" 347 | } 348 | }, 349 | "babel-helper-call-delegate": { 350 | "version": "6.24.1", 351 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 352 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 353 | "dev": true, 354 | "requires": { 355 | "babel-helper-hoist-variables": "6.24.1", 356 | "babel-runtime": "6.26.0", 357 | "babel-traverse": "6.26.0", 358 | "babel-types": "6.26.0" 359 | } 360 | }, 361 | "babel-helper-define-map": { 362 | "version": "6.26.0", 363 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", 364 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", 365 | "dev": true, 366 | "requires": { 367 | "babel-helper-function-name": "6.24.1", 368 | "babel-runtime": "6.26.0", 369 | "babel-types": "6.26.0", 370 | "lodash": "4.17.4" 371 | } 372 | }, 373 | "babel-helper-explode-assignable-expression": { 374 | "version": "6.24.1", 375 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 376 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 377 | "dev": true, 378 | "requires": { 379 | "babel-runtime": "6.26.0", 380 | "babel-traverse": "6.26.0", 381 | "babel-types": "6.26.0" 382 | } 383 | }, 384 | "babel-helper-explode-class": { 385 | "version": "6.24.1", 386 | "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", 387 | "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", 388 | "dev": true, 389 | "requires": { 390 | "babel-helper-bindify-decorators": "6.24.1", 391 | "babel-runtime": "6.26.0", 392 | "babel-traverse": "6.26.0", 393 | "babel-types": "6.26.0" 394 | } 395 | }, 396 | "babel-helper-function-name": { 397 | "version": "6.24.1", 398 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 399 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 400 | "dev": true, 401 | "requires": { 402 | "babel-helper-get-function-arity": "6.24.1", 403 | "babel-runtime": "6.26.0", 404 | "babel-template": "6.26.0", 405 | "babel-traverse": "6.26.0", 406 | "babel-types": "6.26.0" 407 | } 408 | }, 409 | "babel-helper-get-function-arity": { 410 | "version": "6.24.1", 411 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 412 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 413 | "dev": true, 414 | "requires": { 415 | "babel-runtime": "6.26.0", 416 | "babel-types": "6.26.0" 417 | } 418 | }, 419 | "babel-helper-hoist-variables": { 420 | "version": "6.24.1", 421 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 422 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 423 | "dev": true, 424 | "requires": { 425 | "babel-runtime": "6.26.0", 426 | "babel-types": "6.26.0" 427 | } 428 | }, 429 | "babel-helper-module-imports": { 430 | "version": "7.0.0-beta.3", 431 | "resolved": "https://registry.npmjs.org/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz", 432 | "integrity": "sha512-bdPrIXbUTYfREhRhjbN8SstwQaj0S4+rW4PKi1f2Wc5fizSh0hGYkfXUdiSSOgyTydm956tAyz4FrG61bqdQyw==", 433 | "dev": true, 434 | "requires": { 435 | "babel-types": "7.0.0-beta.3", 436 | "lodash": "4.17.4" 437 | }, 438 | "dependencies": { 439 | "babel-types": { 440 | "version": "7.0.0-beta.3", 441 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-beta.3.tgz", 442 | "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", 443 | "dev": true, 444 | "requires": { 445 | "esutils": "2.0.2", 446 | "lodash": "4.17.4", 447 | "to-fast-properties": "2.0.0" 448 | } 449 | }, 450 | "to-fast-properties": { 451 | "version": "2.0.0", 452 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 453 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 454 | "dev": true 455 | } 456 | } 457 | }, 458 | "babel-helper-optimise-call-expression": { 459 | "version": "6.24.1", 460 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 461 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 462 | "dev": true, 463 | "requires": { 464 | "babel-runtime": "6.26.0", 465 | "babel-types": "6.26.0" 466 | } 467 | }, 468 | "babel-helper-regex": { 469 | "version": "6.26.0", 470 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 471 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 472 | "dev": true, 473 | "requires": { 474 | "babel-runtime": "6.26.0", 475 | "babel-types": "6.26.0", 476 | "lodash": "4.17.4" 477 | } 478 | }, 479 | "babel-helper-remap-async-to-generator": { 480 | "version": "6.24.1", 481 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 482 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 483 | "dev": true, 484 | "requires": { 485 | "babel-helper-function-name": "6.24.1", 486 | "babel-runtime": "6.26.0", 487 | "babel-template": "6.26.0", 488 | "babel-traverse": "6.26.0", 489 | "babel-types": "6.26.0" 490 | } 491 | }, 492 | "babel-helper-replace-supers": { 493 | "version": "6.24.1", 494 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 495 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 496 | "dev": true, 497 | "requires": { 498 | "babel-helper-optimise-call-expression": "6.24.1", 499 | "babel-messages": "6.23.0", 500 | "babel-runtime": "6.26.0", 501 | "babel-template": "6.26.0", 502 | "babel-traverse": "6.26.0", 503 | "babel-types": "6.26.0" 504 | } 505 | }, 506 | "babel-helpers": { 507 | "version": "6.24.1", 508 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 509 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 510 | "dev": true, 511 | "requires": { 512 | "babel-runtime": "6.26.0", 513 | "babel-template": "6.26.0" 514 | } 515 | }, 516 | "babel-jest": { 517 | "version": "21.2.0", 518 | "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", 519 | "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", 520 | "dev": true, 521 | "requires": { 522 | "babel-plugin-istanbul": "4.1.5", 523 | "babel-preset-jest": "21.2.0" 524 | } 525 | }, 526 | "babel-loader": { 527 | "version": "7.1.2", 528 | "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", 529 | "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", 530 | "dev": true, 531 | "requires": { 532 | "find-cache-dir": "1.0.0", 533 | "loader-utils": "1.1.0", 534 | "mkdirp": "0.5.1" 535 | } 536 | }, 537 | "babel-messages": { 538 | "version": "6.23.0", 539 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 540 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 541 | "dev": true, 542 | "requires": { 543 | "babel-runtime": "6.26.0" 544 | } 545 | }, 546 | "babel-plugin-check-es2015-constants": { 547 | "version": "6.22.0", 548 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 549 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 550 | "dev": true, 551 | "requires": { 552 | "babel-runtime": "6.26.0" 553 | } 554 | }, 555 | "babel-plugin-istanbul": { 556 | "version": "4.1.5", 557 | "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", 558 | "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", 559 | "dev": true, 560 | "requires": { 561 | "find-up": "2.1.0", 562 | "istanbul-lib-instrument": "1.9.1", 563 | "test-exclude": "4.1.1" 564 | } 565 | }, 566 | "babel-plugin-jest-hoist": { 567 | "version": "21.2.0", 568 | "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", 569 | "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", 570 | "dev": true 571 | }, 572 | "babel-plugin-lodash": { 573 | "version": "3.3.2", 574 | "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz", 575 | "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", 576 | "dev": true, 577 | "requires": { 578 | "babel-helper-module-imports": "7.0.0-beta.3", 579 | "babel-types": "6.26.0", 580 | "glob": "7.1.2", 581 | "lodash": "4.17.4", 582 | "require-package-name": "2.0.1" 583 | } 584 | }, 585 | "babel-plugin-syntax-async-functions": { 586 | "version": "6.13.0", 587 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 588 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 589 | "dev": true 590 | }, 591 | "babel-plugin-syntax-async-generators": { 592 | "version": "6.13.0", 593 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", 594 | "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", 595 | "dev": true 596 | }, 597 | "babel-plugin-syntax-class-constructor-call": { 598 | "version": "6.18.0", 599 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", 600 | "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", 601 | "dev": true 602 | }, 603 | "babel-plugin-syntax-class-properties": { 604 | "version": "6.13.0", 605 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", 606 | "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", 607 | "dev": true 608 | }, 609 | "babel-plugin-syntax-decorators": { 610 | "version": "6.13.0", 611 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", 612 | "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", 613 | "dev": true 614 | }, 615 | "babel-plugin-syntax-do-expressions": { 616 | "version": "6.13.0", 617 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", 618 | "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", 619 | "dev": true 620 | }, 621 | "babel-plugin-syntax-dynamic-import": { 622 | "version": "6.18.0", 623 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", 624 | "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", 625 | "dev": true 626 | }, 627 | "babel-plugin-syntax-exponentiation-operator": { 628 | "version": "6.13.0", 629 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 630 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 631 | "dev": true 632 | }, 633 | "babel-plugin-syntax-export-extensions": { 634 | "version": "6.13.0", 635 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", 636 | "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", 637 | "dev": true 638 | }, 639 | "babel-plugin-syntax-flow": { 640 | "version": "6.18.0", 641 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", 642 | "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", 643 | "dev": true 644 | }, 645 | "babel-plugin-syntax-function-bind": { 646 | "version": "6.13.0", 647 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", 648 | "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", 649 | "dev": true 650 | }, 651 | "babel-plugin-syntax-jsx": { 652 | "version": "6.18.0", 653 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", 654 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", 655 | "dev": true 656 | }, 657 | "babel-plugin-syntax-object-rest-spread": { 658 | "version": "6.13.0", 659 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", 660 | "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", 661 | "dev": true 662 | }, 663 | "babel-plugin-syntax-trailing-function-commas": { 664 | "version": "6.22.0", 665 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 666 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 667 | "dev": true 668 | }, 669 | "babel-plugin-transform-async-generator-functions": { 670 | "version": "6.24.1", 671 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", 672 | "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", 673 | "dev": true, 674 | "requires": { 675 | "babel-helper-remap-async-to-generator": "6.24.1", 676 | "babel-plugin-syntax-async-generators": "6.13.0", 677 | "babel-runtime": "6.26.0" 678 | } 679 | }, 680 | "babel-plugin-transform-async-to-generator": { 681 | "version": "6.24.1", 682 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 683 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 684 | "dev": true, 685 | "requires": { 686 | "babel-helper-remap-async-to-generator": "6.24.1", 687 | "babel-plugin-syntax-async-functions": "6.13.0", 688 | "babel-runtime": "6.26.0" 689 | } 690 | }, 691 | "babel-plugin-transform-class-constructor-call": { 692 | "version": "6.24.1", 693 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", 694 | "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", 695 | "dev": true, 696 | "requires": { 697 | "babel-plugin-syntax-class-constructor-call": "6.18.0", 698 | "babel-runtime": "6.26.0", 699 | "babel-template": "6.26.0" 700 | } 701 | }, 702 | "babel-plugin-transform-class-properties": { 703 | "version": "6.24.1", 704 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", 705 | "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", 706 | "dev": true, 707 | "requires": { 708 | "babel-helper-function-name": "6.24.1", 709 | "babel-plugin-syntax-class-properties": "6.13.0", 710 | "babel-runtime": "6.26.0", 711 | "babel-template": "6.26.0" 712 | } 713 | }, 714 | "babel-plugin-transform-decorators": { 715 | "version": "6.24.1", 716 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", 717 | "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", 718 | "dev": true, 719 | "requires": { 720 | "babel-helper-explode-class": "6.24.1", 721 | "babel-plugin-syntax-decorators": "6.13.0", 722 | "babel-runtime": "6.26.0", 723 | "babel-template": "6.26.0", 724 | "babel-types": "6.26.0" 725 | } 726 | }, 727 | "babel-plugin-transform-do-expressions": { 728 | "version": "6.22.0", 729 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", 730 | "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", 731 | "dev": true, 732 | "requires": { 733 | "babel-plugin-syntax-do-expressions": "6.13.0", 734 | "babel-runtime": "6.26.0" 735 | } 736 | }, 737 | "babel-plugin-transform-es2015-arrow-functions": { 738 | "version": "6.22.0", 739 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 740 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 741 | "dev": true, 742 | "requires": { 743 | "babel-runtime": "6.26.0" 744 | } 745 | }, 746 | "babel-plugin-transform-es2015-block-scoped-functions": { 747 | "version": "6.22.0", 748 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 749 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 750 | "dev": true, 751 | "requires": { 752 | "babel-runtime": "6.26.0" 753 | } 754 | }, 755 | "babel-plugin-transform-es2015-block-scoping": { 756 | "version": "6.26.0", 757 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", 758 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", 759 | "dev": true, 760 | "requires": { 761 | "babel-runtime": "6.26.0", 762 | "babel-template": "6.26.0", 763 | "babel-traverse": "6.26.0", 764 | "babel-types": "6.26.0", 765 | "lodash": "4.17.4" 766 | } 767 | }, 768 | "babel-plugin-transform-es2015-classes": { 769 | "version": "6.24.1", 770 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 771 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 772 | "dev": true, 773 | "requires": { 774 | "babel-helper-define-map": "6.26.0", 775 | "babel-helper-function-name": "6.24.1", 776 | "babel-helper-optimise-call-expression": "6.24.1", 777 | "babel-helper-replace-supers": "6.24.1", 778 | "babel-messages": "6.23.0", 779 | "babel-runtime": "6.26.0", 780 | "babel-template": "6.26.0", 781 | "babel-traverse": "6.26.0", 782 | "babel-types": "6.26.0" 783 | } 784 | }, 785 | "babel-plugin-transform-es2015-computed-properties": { 786 | "version": "6.24.1", 787 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 788 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 789 | "dev": true, 790 | "requires": { 791 | "babel-runtime": "6.26.0", 792 | "babel-template": "6.26.0" 793 | } 794 | }, 795 | "babel-plugin-transform-es2015-destructuring": { 796 | "version": "6.23.0", 797 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 798 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 799 | "dev": true, 800 | "requires": { 801 | "babel-runtime": "6.26.0" 802 | } 803 | }, 804 | "babel-plugin-transform-es2015-duplicate-keys": { 805 | "version": "6.24.1", 806 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 807 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 808 | "dev": true, 809 | "requires": { 810 | "babel-runtime": "6.26.0", 811 | "babel-types": "6.26.0" 812 | } 813 | }, 814 | "babel-plugin-transform-es2015-for-of": { 815 | "version": "6.23.0", 816 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 817 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 818 | "dev": true, 819 | "requires": { 820 | "babel-runtime": "6.26.0" 821 | } 822 | }, 823 | "babel-plugin-transform-es2015-function-name": { 824 | "version": "6.24.1", 825 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 826 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 827 | "dev": true, 828 | "requires": { 829 | "babel-helper-function-name": "6.24.1", 830 | "babel-runtime": "6.26.0", 831 | "babel-types": "6.26.0" 832 | } 833 | }, 834 | "babel-plugin-transform-es2015-literals": { 835 | "version": "6.22.0", 836 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 837 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 838 | "dev": true, 839 | "requires": { 840 | "babel-runtime": "6.26.0" 841 | } 842 | }, 843 | "babel-plugin-transform-es2015-modules-amd": { 844 | "version": "6.24.1", 845 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 846 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 847 | "dev": true, 848 | "requires": { 849 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", 850 | "babel-runtime": "6.26.0", 851 | "babel-template": "6.26.0" 852 | } 853 | }, 854 | "babel-plugin-transform-es2015-modules-commonjs": { 855 | "version": "6.26.0", 856 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", 857 | "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", 858 | "dev": true, 859 | "requires": { 860 | "babel-plugin-transform-strict-mode": "6.24.1", 861 | "babel-runtime": "6.26.0", 862 | "babel-template": "6.26.0", 863 | "babel-types": "6.26.0" 864 | } 865 | }, 866 | "babel-plugin-transform-es2015-modules-systemjs": { 867 | "version": "6.24.1", 868 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 869 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 870 | "dev": true, 871 | "requires": { 872 | "babel-helper-hoist-variables": "6.24.1", 873 | "babel-runtime": "6.26.0", 874 | "babel-template": "6.26.0" 875 | } 876 | }, 877 | "babel-plugin-transform-es2015-modules-umd": { 878 | "version": "6.24.1", 879 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 880 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 881 | "dev": true, 882 | "requires": { 883 | "babel-plugin-transform-es2015-modules-amd": "6.24.1", 884 | "babel-runtime": "6.26.0", 885 | "babel-template": "6.26.0" 886 | } 887 | }, 888 | "babel-plugin-transform-es2015-object-super": { 889 | "version": "6.24.1", 890 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 891 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 892 | "dev": true, 893 | "requires": { 894 | "babel-helper-replace-supers": "6.24.1", 895 | "babel-runtime": "6.26.0" 896 | } 897 | }, 898 | "babel-plugin-transform-es2015-parameters": { 899 | "version": "6.24.1", 900 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 901 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 902 | "dev": true, 903 | "requires": { 904 | "babel-helper-call-delegate": "6.24.1", 905 | "babel-helper-get-function-arity": "6.24.1", 906 | "babel-runtime": "6.26.0", 907 | "babel-template": "6.26.0", 908 | "babel-traverse": "6.26.0", 909 | "babel-types": "6.26.0" 910 | } 911 | }, 912 | "babel-plugin-transform-es2015-shorthand-properties": { 913 | "version": "6.24.1", 914 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 915 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 916 | "dev": true, 917 | "requires": { 918 | "babel-runtime": "6.26.0", 919 | "babel-types": "6.26.0" 920 | } 921 | }, 922 | "babel-plugin-transform-es2015-spread": { 923 | "version": "6.22.0", 924 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 925 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 926 | "dev": true, 927 | "requires": { 928 | "babel-runtime": "6.26.0" 929 | } 930 | }, 931 | "babel-plugin-transform-es2015-sticky-regex": { 932 | "version": "6.24.1", 933 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 934 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 935 | "dev": true, 936 | "requires": { 937 | "babel-helper-regex": "6.26.0", 938 | "babel-runtime": "6.26.0", 939 | "babel-types": "6.26.0" 940 | } 941 | }, 942 | "babel-plugin-transform-es2015-template-literals": { 943 | "version": "6.22.0", 944 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 945 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 946 | "dev": true, 947 | "requires": { 948 | "babel-runtime": "6.26.0" 949 | } 950 | }, 951 | "babel-plugin-transform-es2015-typeof-symbol": { 952 | "version": "6.23.0", 953 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 954 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 955 | "dev": true, 956 | "requires": { 957 | "babel-runtime": "6.26.0" 958 | } 959 | }, 960 | "babel-plugin-transform-es2015-unicode-regex": { 961 | "version": "6.24.1", 962 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 963 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 964 | "dev": true, 965 | "requires": { 966 | "babel-helper-regex": "6.26.0", 967 | "babel-runtime": "6.26.0", 968 | "regexpu-core": "2.0.0" 969 | } 970 | }, 971 | "babel-plugin-transform-exponentiation-operator": { 972 | "version": "6.24.1", 973 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 974 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 975 | "dev": true, 976 | "requires": { 977 | "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", 978 | "babel-plugin-syntax-exponentiation-operator": "6.13.0", 979 | "babel-runtime": "6.26.0" 980 | } 981 | }, 982 | "babel-plugin-transform-export-extensions": { 983 | "version": "6.22.0", 984 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", 985 | "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", 986 | "dev": true, 987 | "requires": { 988 | "babel-plugin-syntax-export-extensions": "6.13.0", 989 | "babel-runtime": "6.26.0" 990 | } 991 | }, 992 | "babel-plugin-transform-flow-strip-types": { 993 | "version": "6.22.0", 994 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", 995 | "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", 996 | "dev": true, 997 | "requires": { 998 | "babel-plugin-syntax-flow": "6.18.0", 999 | "babel-runtime": "6.26.0" 1000 | } 1001 | }, 1002 | "babel-plugin-transform-function-bind": { 1003 | "version": "6.22.0", 1004 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", 1005 | "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", 1006 | "dev": true, 1007 | "requires": { 1008 | "babel-plugin-syntax-function-bind": "6.13.0", 1009 | "babel-runtime": "6.26.0" 1010 | } 1011 | }, 1012 | "babel-plugin-transform-object-rest-spread": { 1013 | "version": "6.26.0", 1014 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", 1015 | "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", 1016 | "dev": true, 1017 | "requires": { 1018 | "babel-plugin-syntax-object-rest-spread": "6.13.0", 1019 | "babel-runtime": "6.26.0" 1020 | } 1021 | }, 1022 | "babel-plugin-transform-react-display-name": { 1023 | "version": "6.25.0", 1024 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", 1025 | "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", 1026 | "dev": true, 1027 | "requires": { 1028 | "babel-runtime": "6.26.0" 1029 | } 1030 | }, 1031 | "babel-plugin-transform-react-jsx": { 1032 | "version": "6.24.1", 1033 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", 1034 | "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", 1035 | "dev": true, 1036 | "requires": { 1037 | "babel-helper-builder-react-jsx": "6.26.0", 1038 | "babel-plugin-syntax-jsx": "6.18.0", 1039 | "babel-runtime": "6.26.0" 1040 | } 1041 | }, 1042 | "babel-plugin-transform-react-jsx-self": { 1043 | "version": "6.22.0", 1044 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", 1045 | "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", 1046 | "dev": true, 1047 | "requires": { 1048 | "babel-plugin-syntax-jsx": "6.18.0", 1049 | "babel-runtime": "6.26.0" 1050 | } 1051 | }, 1052 | "babel-plugin-transform-react-jsx-source": { 1053 | "version": "6.22.0", 1054 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", 1055 | "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", 1056 | "dev": true, 1057 | "requires": { 1058 | "babel-plugin-syntax-jsx": "6.18.0", 1059 | "babel-runtime": "6.26.0" 1060 | } 1061 | }, 1062 | "babel-plugin-transform-regenerator": { 1063 | "version": "6.26.0", 1064 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", 1065 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", 1066 | "dev": true, 1067 | "requires": { 1068 | "regenerator-transform": "0.10.1" 1069 | } 1070 | }, 1071 | "babel-plugin-transform-strict-mode": { 1072 | "version": "6.24.1", 1073 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 1074 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 1075 | "dev": true, 1076 | "requires": { 1077 | "babel-runtime": "6.26.0", 1078 | "babel-types": "6.26.0" 1079 | } 1080 | }, 1081 | "babel-polyfill": { 1082 | "version": "6.26.0", 1083 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 1084 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 1085 | "dev": true, 1086 | "requires": { 1087 | "babel-runtime": "6.26.0", 1088 | "core-js": "2.5.1", 1089 | "regenerator-runtime": "0.10.5" 1090 | }, 1091 | "dependencies": { 1092 | "core-js": { 1093 | "version": "2.5.1", 1094 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", 1095 | "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", 1096 | "dev": true 1097 | }, 1098 | "regenerator-runtime": { 1099 | "version": "0.10.5", 1100 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 1101 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 1102 | "dev": true 1103 | } 1104 | } 1105 | }, 1106 | "babel-preset-es2015": { 1107 | "version": "6.24.1", 1108 | "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", 1109 | "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", 1110 | "dev": true, 1111 | "requires": { 1112 | "babel-plugin-check-es2015-constants": "6.22.0", 1113 | "babel-plugin-transform-es2015-arrow-functions": "6.22.0", 1114 | "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", 1115 | "babel-plugin-transform-es2015-block-scoping": "6.26.0", 1116 | "babel-plugin-transform-es2015-classes": "6.24.1", 1117 | "babel-plugin-transform-es2015-computed-properties": "6.24.1", 1118 | "babel-plugin-transform-es2015-destructuring": "6.23.0", 1119 | "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", 1120 | "babel-plugin-transform-es2015-for-of": "6.23.0", 1121 | "babel-plugin-transform-es2015-function-name": "6.24.1", 1122 | "babel-plugin-transform-es2015-literals": "6.22.0", 1123 | "babel-plugin-transform-es2015-modules-amd": "6.24.1", 1124 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", 1125 | "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", 1126 | "babel-plugin-transform-es2015-modules-umd": "6.24.1", 1127 | "babel-plugin-transform-es2015-object-super": "6.24.1", 1128 | "babel-plugin-transform-es2015-parameters": "6.24.1", 1129 | "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", 1130 | "babel-plugin-transform-es2015-spread": "6.22.0", 1131 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1", 1132 | "babel-plugin-transform-es2015-template-literals": "6.22.0", 1133 | "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", 1134 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1", 1135 | "babel-plugin-transform-regenerator": "6.26.0" 1136 | } 1137 | }, 1138 | "babel-preset-es2015-no-commonjs": { 1139 | "version": "0.0.2", 1140 | "resolved": "https://registry.npmjs.org/babel-preset-es2015-no-commonjs/-/babel-preset-es2015-no-commonjs-0.0.2.tgz", 1141 | "integrity": "sha1-F45fC9YYvCO5o+AdrBCMOByZBtg=", 1142 | "dev": true, 1143 | "requires": { 1144 | "babel-plugin-check-es2015-constants": "6.22.0", 1145 | "babel-plugin-transform-es2015-arrow-functions": "6.22.0", 1146 | "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", 1147 | "babel-plugin-transform-es2015-block-scoping": "6.26.0", 1148 | "babel-plugin-transform-es2015-classes": "6.24.1", 1149 | "babel-plugin-transform-es2015-computed-properties": "6.24.1", 1150 | "babel-plugin-transform-es2015-destructuring": "6.23.0", 1151 | "babel-plugin-transform-es2015-for-of": "6.23.0", 1152 | "babel-plugin-transform-es2015-function-name": "6.24.1", 1153 | "babel-plugin-transform-es2015-literals": "6.22.0", 1154 | "babel-plugin-transform-es2015-object-super": "6.24.1", 1155 | "babel-plugin-transform-es2015-parameters": "6.24.1", 1156 | "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", 1157 | "babel-plugin-transform-es2015-spread": "6.22.0", 1158 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1", 1159 | "babel-plugin-transform-es2015-template-literals": "6.22.0", 1160 | "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", 1161 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1", 1162 | "babel-plugin-transform-regenerator": "6.26.0" 1163 | } 1164 | }, 1165 | "babel-preset-flow": { 1166 | "version": "6.23.0", 1167 | "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", 1168 | "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", 1169 | "dev": true, 1170 | "requires": { 1171 | "babel-plugin-transform-flow-strip-types": "6.22.0" 1172 | } 1173 | }, 1174 | "babel-preset-jest": { 1175 | "version": "21.2.0", 1176 | "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", 1177 | "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", 1178 | "dev": true, 1179 | "requires": { 1180 | "babel-plugin-jest-hoist": "21.2.0", 1181 | "babel-plugin-syntax-object-rest-spread": "6.13.0" 1182 | } 1183 | }, 1184 | "babel-preset-react": { 1185 | "version": "6.24.1", 1186 | "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", 1187 | "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", 1188 | "dev": true, 1189 | "requires": { 1190 | "babel-plugin-syntax-jsx": "6.18.0", 1191 | "babel-plugin-transform-react-display-name": "6.25.0", 1192 | "babel-plugin-transform-react-jsx": "6.24.1", 1193 | "babel-plugin-transform-react-jsx-self": "6.22.0", 1194 | "babel-plugin-transform-react-jsx-source": "6.22.0", 1195 | "babel-preset-flow": "6.23.0" 1196 | } 1197 | }, 1198 | "babel-preset-stage-0": { 1199 | "version": "6.24.1", 1200 | "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", 1201 | "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", 1202 | "dev": true, 1203 | "requires": { 1204 | "babel-plugin-transform-do-expressions": "6.22.0", 1205 | "babel-plugin-transform-function-bind": "6.22.0", 1206 | "babel-preset-stage-1": "6.24.1" 1207 | } 1208 | }, 1209 | "babel-preset-stage-1": { 1210 | "version": "6.24.1", 1211 | "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", 1212 | "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", 1213 | "dev": true, 1214 | "requires": { 1215 | "babel-plugin-transform-class-constructor-call": "6.24.1", 1216 | "babel-plugin-transform-export-extensions": "6.22.0", 1217 | "babel-preset-stage-2": "6.24.1" 1218 | } 1219 | }, 1220 | "babel-preset-stage-2": { 1221 | "version": "6.24.1", 1222 | "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", 1223 | "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", 1224 | "dev": true, 1225 | "requires": { 1226 | "babel-plugin-syntax-dynamic-import": "6.18.0", 1227 | "babel-plugin-transform-class-properties": "6.24.1", 1228 | "babel-plugin-transform-decorators": "6.24.1", 1229 | "babel-preset-stage-3": "6.24.1" 1230 | } 1231 | }, 1232 | "babel-preset-stage-3": { 1233 | "version": "6.24.1", 1234 | "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", 1235 | "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", 1236 | "dev": true, 1237 | "requires": { 1238 | "babel-plugin-syntax-trailing-function-commas": "6.22.0", 1239 | "babel-plugin-transform-async-generator-functions": "6.24.1", 1240 | "babel-plugin-transform-async-to-generator": "6.24.1", 1241 | "babel-plugin-transform-exponentiation-operator": "6.24.1", 1242 | "babel-plugin-transform-object-rest-spread": "6.26.0" 1243 | } 1244 | }, 1245 | "babel-register": { 1246 | "version": "6.26.0", 1247 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 1248 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 1249 | "dev": true, 1250 | "requires": { 1251 | "babel-core": "6.26.0", 1252 | "babel-runtime": "6.26.0", 1253 | "core-js": "2.5.0", 1254 | "home-or-tmp": "2.0.0", 1255 | "lodash": "4.17.4", 1256 | "mkdirp": "0.5.1", 1257 | "source-map-support": "0.4.16" 1258 | }, 1259 | "dependencies": { 1260 | "core-js": { 1261 | "version": "2.5.0", 1262 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", 1263 | "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", 1264 | "dev": true 1265 | } 1266 | } 1267 | }, 1268 | "babel-runtime": { 1269 | "version": "6.26.0", 1270 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 1271 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 1272 | "dev": true, 1273 | "requires": { 1274 | "core-js": "2.5.0", 1275 | "regenerator-runtime": "0.11.0" 1276 | }, 1277 | "dependencies": { 1278 | "core-js": { 1279 | "version": "2.5.0", 1280 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", 1281 | "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", 1282 | "dev": true 1283 | } 1284 | } 1285 | }, 1286 | "babel-template": { 1287 | "version": "6.26.0", 1288 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 1289 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 1290 | "dev": true, 1291 | "requires": { 1292 | "babel-runtime": "6.26.0", 1293 | "babel-traverse": "6.26.0", 1294 | "babel-types": "6.26.0", 1295 | "babylon": "6.18.0", 1296 | "lodash": "4.17.4" 1297 | } 1298 | }, 1299 | "babel-traverse": { 1300 | "version": "6.26.0", 1301 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 1302 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 1303 | "dev": true, 1304 | "requires": { 1305 | "babel-code-frame": "6.26.0", 1306 | "babel-messages": "6.23.0", 1307 | "babel-runtime": "6.26.0", 1308 | "babel-types": "6.26.0", 1309 | "babylon": "6.18.0", 1310 | "debug": "2.6.8", 1311 | "globals": "9.18.0", 1312 | "invariant": "2.2.2", 1313 | "lodash": "4.17.4" 1314 | } 1315 | }, 1316 | "babel-types": { 1317 | "version": "6.26.0", 1318 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 1319 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 1320 | "dev": true, 1321 | "requires": { 1322 | "babel-runtime": "6.26.0", 1323 | "esutils": "2.0.2", 1324 | "lodash": "4.17.4", 1325 | "to-fast-properties": "1.0.3" 1326 | } 1327 | }, 1328 | "babylon": { 1329 | "version": "6.18.0", 1330 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 1331 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 1332 | "dev": true 1333 | }, 1334 | "balanced-match": { 1335 | "version": "1.0.0", 1336 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1337 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1338 | "dev": true 1339 | }, 1340 | "big.js": { 1341 | "version": "3.2.0", 1342 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", 1343 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", 1344 | "dev": true 1345 | }, 1346 | "binary-extensions": { 1347 | "version": "1.10.0", 1348 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", 1349 | "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", 1350 | "dev": true, 1351 | "optional": true 1352 | }, 1353 | "brace-expansion": { 1354 | "version": "1.1.8", 1355 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 1356 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 1357 | "dev": true, 1358 | "requires": { 1359 | "balanced-match": "1.0.0", 1360 | "concat-map": "0.0.1" 1361 | } 1362 | }, 1363 | "braces": { 1364 | "version": "1.8.5", 1365 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 1366 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 1367 | "dev": true, 1368 | "requires": { 1369 | "expand-range": "1.8.2", 1370 | "preserve": "0.2.0", 1371 | "repeat-element": "1.1.2" 1372 | } 1373 | }, 1374 | "builtin-modules": { 1375 | "version": "1.1.1", 1376 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 1377 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 1378 | "dev": true 1379 | }, 1380 | "chalk": { 1381 | "version": "1.1.3", 1382 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1383 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1384 | "dev": true, 1385 | "requires": { 1386 | "ansi-styles": "2.2.1", 1387 | "escape-string-regexp": "1.0.5", 1388 | "has-ansi": "2.0.0", 1389 | "strip-ansi": "3.0.1", 1390 | "supports-color": "2.0.0" 1391 | } 1392 | }, 1393 | "chokidar": { 1394 | "version": "1.7.0", 1395 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 1396 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 1397 | "dev": true, 1398 | "optional": true, 1399 | "requires": { 1400 | "anymatch": "1.3.2", 1401 | "async-each": "1.0.1", 1402 | "fsevents": "1.1.3", 1403 | "glob-parent": "2.0.0", 1404 | "inherits": "2.0.3", 1405 | "is-binary-path": "1.0.1", 1406 | "is-glob": "2.0.1", 1407 | "path-is-absolute": "1.0.1", 1408 | "readdirp": "2.1.0" 1409 | } 1410 | }, 1411 | "color-convert": { 1412 | "version": "1.9.1", 1413 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 1414 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", 1415 | "dev": true, 1416 | "requires": { 1417 | "color-name": "1.1.3" 1418 | } 1419 | }, 1420 | "color-name": { 1421 | "version": "1.1.3", 1422 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1423 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1424 | "dev": true 1425 | }, 1426 | "commander": { 1427 | "version": "2.11.0", 1428 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 1429 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 1430 | "dev": true 1431 | }, 1432 | "commondir": { 1433 | "version": "1.0.1", 1434 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1435 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1436 | "dev": true 1437 | }, 1438 | "concat-map": { 1439 | "version": "0.0.1", 1440 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1441 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1442 | "dev": true 1443 | }, 1444 | "convert-source-map": { 1445 | "version": "1.5.0", 1446 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 1447 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 1448 | "dev": true 1449 | }, 1450 | "core-util-is": { 1451 | "version": "1.0.2", 1452 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1453 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1454 | "dev": true, 1455 | "optional": true 1456 | }, 1457 | "debug": { 1458 | "version": "2.6.8", 1459 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 1460 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 1461 | "dev": true, 1462 | "requires": { 1463 | "ms": "2.0.0" 1464 | } 1465 | }, 1466 | "detect-indent": { 1467 | "version": "4.0.0", 1468 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 1469 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1470 | "dev": true, 1471 | "requires": { 1472 | "repeating": "2.0.1" 1473 | } 1474 | }, 1475 | "emojis-list": { 1476 | "version": "2.1.0", 1477 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 1478 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 1479 | "dev": true 1480 | }, 1481 | "error-ex": { 1482 | "version": "1.3.1", 1483 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 1484 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 1485 | "dev": true, 1486 | "requires": { 1487 | "is-arrayish": "0.2.1" 1488 | } 1489 | }, 1490 | "escape-string-regexp": { 1491 | "version": "1.0.5", 1492 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1493 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1494 | "dev": true 1495 | }, 1496 | "eslint-scope": { 1497 | "version": "3.7.1", 1498 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 1499 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 1500 | "dev": true, 1501 | "requires": { 1502 | "esrecurse": "4.2.0", 1503 | "estraverse": "4.2.0" 1504 | } 1505 | }, 1506 | "eslint-visitor-keys": { 1507 | "version": "1.0.0", 1508 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 1509 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 1510 | "dev": true 1511 | }, 1512 | "esrecurse": { 1513 | "version": "4.2.0", 1514 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 1515 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 1516 | "dev": true, 1517 | "requires": { 1518 | "estraverse": "4.2.0", 1519 | "object-assign": "4.1.1" 1520 | } 1521 | }, 1522 | "estraverse": { 1523 | "version": "4.2.0", 1524 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1525 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1526 | "dev": true 1527 | }, 1528 | "esutils": { 1529 | "version": "2.0.2", 1530 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1531 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1532 | "dev": true 1533 | }, 1534 | "expand-brackets": { 1535 | "version": "0.1.5", 1536 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 1537 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 1538 | "dev": true, 1539 | "requires": { 1540 | "is-posix-bracket": "0.1.1" 1541 | } 1542 | }, 1543 | "expand-range": { 1544 | "version": "1.8.2", 1545 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 1546 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 1547 | "dev": true, 1548 | "requires": { 1549 | "fill-range": "2.2.3" 1550 | } 1551 | }, 1552 | "extglob": { 1553 | "version": "0.3.2", 1554 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1555 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1556 | "dev": true, 1557 | "requires": { 1558 | "is-extglob": "1.0.0" 1559 | } 1560 | }, 1561 | "filename-regex": { 1562 | "version": "2.0.1", 1563 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1564 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1565 | "dev": true 1566 | }, 1567 | "fill-range": { 1568 | "version": "2.2.3", 1569 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 1570 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 1571 | "dev": true, 1572 | "requires": { 1573 | "is-number": "2.1.0", 1574 | "isobject": "2.1.0", 1575 | "randomatic": "1.1.7", 1576 | "repeat-element": "1.1.2", 1577 | "repeat-string": "1.6.1" 1578 | } 1579 | }, 1580 | "find-cache-dir": { 1581 | "version": "1.0.0", 1582 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", 1583 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", 1584 | "dev": true, 1585 | "requires": { 1586 | "commondir": "1.0.1", 1587 | "make-dir": "1.1.0", 1588 | "pkg-dir": "2.0.0" 1589 | } 1590 | }, 1591 | "find-up": { 1592 | "version": "2.1.0", 1593 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1594 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1595 | "dev": true, 1596 | "requires": { 1597 | "locate-path": "2.0.0" 1598 | } 1599 | }, 1600 | "for-in": { 1601 | "version": "1.0.2", 1602 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1603 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1604 | "dev": true 1605 | }, 1606 | "for-own": { 1607 | "version": "0.1.5", 1608 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1609 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1610 | "dev": true, 1611 | "requires": { 1612 | "for-in": "1.0.2" 1613 | } 1614 | }, 1615 | "fs-readdir-recursive": { 1616 | "version": "1.0.0", 1617 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", 1618 | "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", 1619 | "dev": true 1620 | }, 1621 | "fs.realpath": { 1622 | "version": "1.0.0", 1623 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1624 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1625 | "dev": true 1626 | }, 1627 | "fsevents": { 1628 | "version": "1.1.3", 1629 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", 1630 | "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", 1631 | "dev": true, 1632 | "optional": true, 1633 | "requires": { 1634 | "nan": "2.8.0", 1635 | "node-pre-gyp": "0.6.39" 1636 | }, 1637 | "dependencies": { 1638 | "abbrev": { 1639 | "version": "1.1.0", 1640 | "bundled": true, 1641 | "dev": true, 1642 | "optional": true 1643 | }, 1644 | "ajv": { 1645 | "version": "4.11.8", 1646 | "bundled": true, 1647 | "dev": true, 1648 | "optional": true, 1649 | "requires": { 1650 | "co": "4.6.0", 1651 | "json-stable-stringify": "1.0.1" 1652 | } 1653 | }, 1654 | "ansi-regex": { 1655 | "version": "2.1.1", 1656 | "bundled": true, 1657 | "dev": true 1658 | }, 1659 | "aproba": { 1660 | "version": "1.1.1", 1661 | "bundled": true, 1662 | "dev": true, 1663 | "optional": true 1664 | }, 1665 | "are-we-there-yet": { 1666 | "version": "1.1.4", 1667 | "bundled": true, 1668 | "dev": true, 1669 | "optional": true, 1670 | "requires": { 1671 | "delegates": "1.0.0", 1672 | "readable-stream": "2.2.9" 1673 | } 1674 | }, 1675 | "asn1": { 1676 | "version": "0.2.3", 1677 | "bundled": true, 1678 | "dev": true, 1679 | "optional": true 1680 | }, 1681 | "assert-plus": { 1682 | "version": "0.2.0", 1683 | "bundled": true, 1684 | "dev": true, 1685 | "optional": true 1686 | }, 1687 | "asynckit": { 1688 | "version": "0.4.0", 1689 | "bundled": true, 1690 | "dev": true, 1691 | "optional": true 1692 | }, 1693 | "aws-sign2": { 1694 | "version": "0.6.0", 1695 | "bundled": true, 1696 | "dev": true, 1697 | "optional": true 1698 | }, 1699 | "aws4": { 1700 | "version": "1.6.0", 1701 | "bundled": true, 1702 | "dev": true, 1703 | "optional": true 1704 | }, 1705 | "balanced-match": { 1706 | "version": "0.4.2", 1707 | "bundled": true, 1708 | "dev": true 1709 | }, 1710 | "bcrypt-pbkdf": { 1711 | "version": "1.0.1", 1712 | "bundled": true, 1713 | "dev": true, 1714 | "optional": true, 1715 | "requires": { 1716 | "tweetnacl": "0.14.5" 1717 | } 1718 | }, 1719 | "block-stream": { 1720 | "version": "0.0.9", 1721 | "bundled": true, 1722 | "dev": true, 1723 | "requires": { 1724 | "inherits": "2.0.3" 1725 | } 1726 | }, 1727 | "boom": { 1728 | "version": "2.10.1", 1729 | "bundled": true, 1730 | "dev": true, 1731 | "requires": { 1732 | "hoek": "2.16.3" 1733 | } 1734 | }, 1735 | "brace-expansion": { 1736 | "version": "1.1.7", 1737 | "bundled": true, 1738 | "dev": true, 1739 | "requires": { 1740 | "balanced-match": "0.4.2", 1741 | "concat-map": "0.0.1" 1742 | } 1743 | }, 1744 | "buffer-shims": { 1745 | "version": "1.0.0", 1746 | "bundled": true, 1747 | "dev": true 1748 | }, 1749 | "caseless": { 1750 | "version": "0.12.0", 1751 | "bundled": true, 1752 | "dev": true, 1753 | "optional": true 1754 | }, 1755 | "co": { 1756 | "version": "4.6.0", 1757 | "bundled": true, 1758 | "dev": true, 1759 | "optional": true 1760 | }, 1761 | "code-point-at": { 1762 | "version": "1.1.0", 1763 | "bundled": true, 1764 | "dev": true 1765 | }, 1766 | "combined-stream": { 1767 | "version": "1.0.5", 1768 | "bundled": true, 1769 | "dev": true, 1770 | "requires": { 1771 | "delayed-stream": "1.0.0" 1772 | } 1773 | }, 1774 | "concat-map": { 1775 | "version": "0.0.1", 1776 | "bundled": true, 1777 | "dev": true 1778 | }, 1779 | "console-control-strings": { 1780 | "version": "1.1.0", 1781 | "bundled": true, 1782 | "dev": true 1783 | }, 1784 | "core-util-is": { 1785 | "version": "1.0.2", 1786 | "bundled": true, 1787 | "dev": true 1788 | }, 1789 | "cryptiles": { 1790 | "version": "2.0.5", 1791 | "bundled": true, 1792 | "dev": true, 1793 | "requires": { 1794 | "boom": "2.10.1" 1795 | } 1796 | }, 1797 | "dashdash": { 1798 | "version": "1.14.1", 1799 | "bundled": true, 1800 | "dev": true, 1801 | "optional": true, 1802 | "requires": { 1803 | "assert-plus": "1.0.0" 1804 | }, 1805 | "dependencies": { 1806 | "assert-plus": { 1807 | "version": "1.0.0", 1808 | "bundled": true, 1809 | "dev": true, 1810 | "optional": true 1811 | } 1812 | } 1813 | }, 1814 | "debug": { 1815 | "version": "2.6.8", 1816 | "bundled": true, 1817 | "dev": true, 1818 | "optional": true, 1819 | "requires": { 1820 | "ms": "2.0.0" 1821 | } 1822 | }, 1823 | "deep-extend": { 1824 | "version": "0.4.2", 1825 | "bundled": true, 1826 | "dev": true, 1827 | "optional": true 1828 | }, 1829 | "delayed-stream": { 1830 | "version": "1.0.0", 1831 | "bundled": true, 1832 | "dev": true 1833 | }, 1834 | "delegates": { 1835 | "version": "1.0.0", 1836 | "bundled": true, 1837 | "dev": true, 1838 | "optional": true 1839 | }, 1840 | "detect-libc": { 1841 | "version": "1.0.2", 1842 | "bundled": true, 1843 | "dev": true, 1844 | "optional": true 1845 | }, 1846 | "ecc-jsbn": { 1847 | "version": "0.1.1", 1848 | "bundled": true, 1849 | "dev": true, 1850 | "optional": true, 1851 | "requires": { 1852 | "jsbn": "0.1.1" 1853 | } 1854 | }, 1855 | "extend": { 1856 | "version": "3.0.1", 1857 | "bundled": true, 1858 | "dev": true, 1859 | "optional": true 1860 | }, 1861 | "extsprintf": { 1862 | "version": "1.0.2", 1863 | "bundled": true, 1864 | "dev": true 1865 | }, 1866 | "forever-agent": { 1867 | "version": "0.6.1", 1868 | "bundled": true, 1869 | "dev": true, 1870 | "optional": true 1871 | }, 1872 | "form-data": { 1873 | "version": "2.1.4", 1874 | "bundled": true, 1875 | "dev": true, 1876 | "optional": true, 1877 | "requires": { 1878 | "asynckit": "0.4.0", 1879 | "combined-stream": "1.0.5", 1880 | "mime-types": "2.1.15" 1881 | } 1882 | }, 1883 | "fs.realpath": { 1884 | "version": "1.0.0", 1885 | "bundled": true, 1886 | "dev": true 1887 | }, 1888 | "fstream": { 1889 | "version": "1.0.11", 1890 | "bundled": true, 1891 | "dev": true, 1892 | "requires": { 1893 | "graceful-fs": "4.1.11", 1894 | "inherits": "2.0.3", 1895 | "mkdirp": "0.5.1", 1896 | "rimraf": "2.6.1" 1897 | } 1898 | }, 1899 | "fstream-ignore": { 1900 | "version": "1.0.5", 1901 | "bundled": true, 1902 | "dev": true, 1903 | "optional": true, 1904 | "requires": { 1905 | "fstream": "1.0.11", 1906 | "inherits": "2.0.3", 1907 | "minimatch": "3.0.4" 1908 | } 1909 | }, 1910 | "gauge": { 1911 | "version": "2.7.4", 1912 | "bundled": true, 1913 | "dev": true, 1914 | "optional": true, 1915 | "requires": { 1916 | "aproba": "1.1.1", 1917 | "console-control-strings": "1.1.0", 1918 | "has-unicode": "2.0.1", 1919 | "object-assign": "4.1.1", 1920 | "signal-exit": "3.0.2", 1921 | "string-width": "1.0.2", 1922 | "strip-ansi": "3.0.1", 1923 | "wide-align": "1.1.2" 1924 | } 1925 | }, 1926 | "getpass": { 1927 | "version": "0.1.7", 1928 | "bundled": true, 1929 | "dev": true, 1930 | "optional": true, 1931 | "requires": { 1932 | "assert-plus": "1.0.0" 1933 | }, 1934 | "dependencies": { 1935 | "assert-plus": { 1936 | "version": "1.0.0", 1937 | "bundled": true, 1938 | "dev": true, 1939 | "optional": true 1940 | } 1941 | } 1942 | }, 1943 | "glob": { 1944 | "version": "7.1.2", 1945 | "bundled": true, 1946 | "dev": true, 1947 | "requires": { 1948 | "fs.realpath": "1.0.0", 1949 | "inflight": "1.0.6", 1950 | "inherits": "2.0.3", 1951 | "minimatch": "3.0.4", 1952 | "once": "1.4.0", 1953 | "path-is-absolute": "1.0.1" 1954 | } 1955 | }, 1956 | "graceful-fs": { 1957 | "version": "4.1.11", 1958 | "bundled": true, 1959 | "dev": true 1960 | }, 1961 | "har-schema": { 1962 | "version": "1.0.5", 1963 | "bundled": true, 1964 | "dev": true, 1965 | "optional": true 1966 | }, 1967 | "har-validator": { 1968 | "version": "4.2.1", 1969 | "bundled": true, 1970 | "dev": true, 1971 | "optional": true, 1972 | "requires": { 1973 | "ajv": "4.11.8", 1974 | "har-schema": "1.0.5" 1975 | } 1976 | }, 1977 | "has-unicode": { 1978 | "version": "2.0.1", 1979 | "bundled": true, 1980 | "dev": true, 1981 | "optional": true 1982 | }, 1983 | "hawk": { 1984 | "version": "3.1.3", 1985 | "bundled": true, 1986 | "dev": true, 1987 | "requires": { 1988 | "boom": "2.10.1", 1989 | "cryptiles": "2.0.5", 1990 | "hoek": "2.16.3", 1991 | "sntp": "1.0.9" 1992 | } 1993 | }, 1994 | "hoek": { 1995 | "version": "2.16.3", 1996 | "bundled": true, 1997 | "dev": true 1998 | }, 1999 | "http-signature": { 2000 | "version": "1.1.1", 2001 | "bundled": true, 2002 | "dev": true, 2003 | "optional": true, 2004 | "requires": { 2005 | "assert-plus": "0.2.0", 2006 | "jsprim": "1.4.0", 2007 | "sshpk": "1.13.0" 2008 | } 2009 | }, 2010 | "inflight": { 2011 | "version": "1.0.6", 2012 | "bundled": true, 2013 | "dev": true, 2014 | "requires": { 2015 | "once": "1.4.0", 2016 | "wrappy": "1.0.2" 2017 | } 2018 | }, 2019 | "inherits": { 2020 | "version": "2.0.3", 2021 | "bundled": true, 2022 | "dev": true 2023 | }, 2024 | "ini": { 2025 | "version": "1.3.4", 2026 | "bundled": true, 2027 | "dev": true, 2028 | "optional": true 2029 | }, 2030 | "is-fullwidth-code-point": { 2031 | "version": "1.0.0", 2032 | "bundled": true, 2033 | "dev": true, 2034 | "requires": { 2035 | "number-is-nan": "1.0.1" 2036 | } 2037 | }, 2038 | "is-typedarray": { 2039 | "version": "1.0.0", 2040 | "bundled": true, 2041 | "dev": true, 2042 | "optional": true 2043 | }, 2044 | "isarray": { 2045 | "version": "1.0.0", 2046 | "bundled": true, 2047 | "dev": true 2048 | }, 2049 | "isstream": { 2050 | "version": "0.1.2", 2051 | "bundled": true, 2052 | "dev": true, 2053 | "optional": true 2054 | }, 2055 | "jodid25519": { 2056 | "version": "1.0.2", 2057 | "bundled": true, 2058 | "dev": true, 2059 | "optional": true, 2060 | "requires": { 2061 | "jsbn": "0.1.1" 2062 | } 2063 | }, 2064 | "jsbn": { 2065 | "version": "0.1.1", 2066 | "bundled": true, 2067 | "dev": true, 2068 | "optional": true 2069 | }, 2070 | "json-schema": { 2071 | "version": "0.2.3", 2072 | "bundled": true, 2073 | "dev": true, 2074 | "optional": true 2075 | }, 2076 | "json-stable-stringify": { 2077 | "version": "1.0.1", 2078 | "bundled": true, 2079 | "dev": true, 2080 | "optional": true, 2081 | "requires": { 2082 | "jsonify": "0.0.0" 2083 | } 2084 | }, 2085 | "json-stringify-safe": { 2086 | "version": "5.0.1", 2087 | "bundled": true, 2088 | "dev": true, 2089 | "optional": true 2090 | }, 2091 | "jsonify": { 2092 | "version": "0.0.0", 2093 | "bundled": true, 2094 | "dev": true, 2095 | "optional": true 2096 | }, 2097 | "jsprim": { 2098 | "version": "1.4.0", 2099 | "bundled": true, 2100 | "dev": true, 2101 | "optional": true, 2102 | "requires": { 2103 | "assert-plus": "1.0.0", 2104 | "extsprintf": "1.0.2", 2105 | "json-schema": "0.2.3", 2106 | "verror": "1.3.6" 2107 | }, 2108 | "dependencies": { 2109 | "assert-plus": { 2110 | "version": "1.0.0", 2111 | "bundled": true, 2112 | "dev": true, 2113 | "optional": true 2114 | } 2115 | } 2116 | }, 2117 | "mime-db": { 2118 | "version": "1.27.0", 2119 | "bundled": true, 2120 | "dev": true 2121 | }, 2122 | "mime-types": { 2123 | "version": "2.1.15", 2124 | "bundled": true, 2125 | "dev": true, 2126 | "requires": { 2127 | "mime-db": "1.27.0" 2128 | } 2129 | }, 2130 | "minimatch": { 2131 | "version": "3.0.4", 2132 | "bundled": true, 2133 | "dev": true, 2134 | "requires": { 2135 | "brace-expansion": "1.1.7" 2136 | } 2137 | }, 2138 | "minimist": { 2139 | "version": "0.0.8", 2140 | "bundled": true, 2141 | "dev": true 2142 | }, 2143 | "mkdirp": { 2144 | "version": "0.5.1", 2145 | "bundled": true, 2146 | "dev": true, 2147 | "requires": { 2148 | "minimist": "0.0.8" 2149 | } 2150 | }, 2151 | "ms": { 2152 | "version": "2.0.0", 2153 | "bundled": true, 2154 | "dev": true, 2155 | "optional": true 2156 | }, 2157 | "node-pre-gyp": { 2158 | "version": "0.6.39", 2159 | "bundled": true, 2160 | "dev": true, 2161 | "optional": true, 2162 | "requires": { 2163 | "detect-libc": "1.0.2", 2164 | "hawk": "3.1.3", 2165 | "mkdirp": "0.5.1", 2166 | "nopt": "4.0.1", 2167 | "npmlog": "4.1.0", 2168 | "rc": "1.2.1", 2169 | "request": "2.81.0", 2170 | "rimraf": "2.6.1", 2171 | "semver": "5.3.0", 2172 | "tar": "2.2.1", 2173 | "tar-pack": "3.4.0" 2174 | } 2175 | }, 2176 | "nopt": { 2177 | "version": "4.0.1", 2178 | "bundled": true, 2179 | "dev": true, 2180 | "optional": true, 2181 | "requires": { 2182 | "abbrev": "1.1.0", 2183 | "osenv": "0.1.4" 2184 | } 2185 | }, 2186 | "npmlog": { 2187 | "version": "4.1.0", 2188 | "bundled": true, 2189 | "dev": true, 2190 | "optional": true, 2191 | "requires": { 2192 | "are-we-there-yet": "1.1.4", 2193 | "console-control-strings": "1.1.0", 2194 | "gauge": "2.7.4", 2195 | "set-blocking": "2.0.0" 2196 | } 2197 | }, 2198 | "number-is-nan": { 2199 | "version": "1.0.1", 2200 | "bundled": true, 2201 | "dev": true 2202 | }, 2203 | "oauth-sign": { 2204 | "version": "0.8.2", 2205 | "bundled": true, 2206 | "dev": true, 2207 | "optional": true 2208 | }, 2209 | "object-assign": { 2210 | "version": "4.1.1", 2211 | "bundled": true, 2212 | "dev": true, 2213 | "optional": true 2214 | }, 2215 | "once": { 2216 | "version": "1.4.0", 2217 | "bundled": true, 2218 | "dev": true, 2219 | "requires": { 2220 | "wrappy": "1.0.2" 2221 | } 2222 | }, 2223 | "os-homedir": { 2224 | "version": "1.0.2", 2225 | "bundled": true, 2226 | "dev": true, 2227 | "optional": true 2228 | }, 2229 | "os-tmpdir": { 2230 | "version": "1.0.2", 2231 | "bundled": true, 2232 | "dev": true, 2233 | "optional": true 2234 | }, 2235 | "osenv": { 2236 | "version": "0.1.4", 2237 | "bundled": true, 2238 | "dev": true, 2239 | "optional": true, 2240 | "requires": { 2241 | "os-homedir": "1.0.2", 2242 | "os-tmpdir": "1.0.2" 2243 | } 2244 | }, 2245 | "path-is-absolute": { 2246 | "version": "1.0.1", 2247 | "bundled": true, 2248 | "dev": true 2249 | }, 2250 | "performance-now": { 2251 | "version": "0.2.0", 2252 | "bundled": true, 2253 | "dev": true, 2254 | "optional": true 2255 | }, 2256 | "process-nextick-args": { 2257 | "version": "1.0.7", 2258 | "bundled": true, 2259 | "dev": true 2260 | }, 2261 | "punycode": { 2262 | "version": "1.4.1", 2263 | "bundled": true, 2264 | "dev": true, 2265 | "optional": true 2266 | }, 2267 | "qs": { 2268 | "version": "6.4.0", 2269 | "bundled": true, 2270 | "dev": true, 2271 | "optional": true 2272 | }, 2273 | "rc": { 2274 | "version": "1.2.1", 2275 | "bundled": true, 2276 | "dev": true, 2277 | "optional": true, 2278 | "requires": { 2279 | "deep-extend": "0.4.2", 2280 | "ini": "1.3.4", 2281 | "minimist": "1.2.0", 2282 | "strip-json-comments": "2.0.1" 2283 | }, 2284 | "dependencies": { 2285 | "minimist": { 2286 | "version": "1.2.0", 2287 | "bundled": true, 2288 | "dev": true, 2289 | "optional": true 2290 | } 2291 | } 2292 | }, 2293 | "readable-stream": { 2294 | "version": "2.2.9", 2295 | "bundled": true, 2296 | "dev": true, 2297 | "requires": { 2298 | "buffer-shims": "1.0.0", 2299 | "core-util-is": "1.0.2", 2300 | "inherits": "2.0.3", 2301 | "isarray": "1.0.0", 2302 | "process-nextick-args": "1.0.7", 2303 | "string_decoder": "1.0.1", 2304 | "util-deprecate": "1.0.2" 2305 | } 2306 | }, 2307 | "request": { 2308 | "version": "2.81.0", 2309 | "bundled": true, 2310 | "dev": true, 2311 | "optional": true, 2312 | "requires": { 2313 | "aws-sign2": "0.6.0", 2314 | "aws4": "1.6.0", 2315 | "caseless": "0.12.0", 2316 | "combined-stream": "1.0.5", 2317 | "extend": "3.0.1", 2318 | "forever-agent": "0.6.1", 2319 | "form-data": "2.1.4", 2320 | "har-validator": "4.2.1", 2321 | "hawk": "3.1.3", 2322 | "http-signature": "1.1.1", 2323 | "is-typedarray": "1.0.0", 2324 | "isstream": "0.1.2", 2325 | "json-stringify-safe": "5.0.1", 2326 | "mime-types": "2.1.15", 2327 | "oauth-sign": "0.8.2", 2328 | "performance-now": "0.2.0", 2329 | "qs": "6.4.0", 2330 | "safe-buffer": "5.0.1", 2331 | "stringstream": "0.0.5", 2332 | "tough-cookie": "2.3.2", 2333 | "tunnel-agent": "0.6.0", 2334 | "uuid": "3.0.1" 2335 | } 2336 | }, 2337 | "rimraf": { 2338 | "version": "2.6.1", 2339 | "bundled": true, 2340 | "dev": true, 2341 | "requires": { 2342 | "glob": "7.1.2" 2343 | } 2344 | }, 2345 | "safe-buffer": { 2346 | "version": "5.0.1", 2347 | "bundled": true, 2348 | "dev": true 2349 | }, 2350 | "semver": { 2351 | "version": "5.3.0", 2352 | "bundled": true, 2353 | "dev": true, 2354 | "optional": true 2355 | }, 2356 | "set-blocking": { 2357 | "version": "2.0.0", 2358 | "bundled": true, 2359 | "dev": true, 2360 | "optional": true 2361 | }, 2362 | "signal-exit": { 2363 | "version": "3.0.2", 2364 | "bundled": true, 2365 | "dev": true, 2366 | "optional": true 2367 | }, 2368 | "sntp": { 2369 | "version": "1.0.9", 2370 | "bundled": true, 2371 | "dev": true, 2372 | "requires": { 2373 | "hoek": "2.16.3" 2374 | } 2375 | }, 2376 | "sshpk": { 2377 | "version": "1.13.0", 2378 | "bundled": true, 2379 | "dev": true, 2380 | "optional": true, 2381 | "requires": { 2382 | "asn1": "0.2.3", 2383 | "assert-plus": "1.0.0", 2384 | "bcrypt-pbkdf": "1.0.1", 2385 | "dashdash": "1.14.1", 2386 | "ecc-jsbn": "0.1.1", 2387 | "getpass": "0.1.7", 2388 | "jodid25519": "1.0.2", 2389 | "jsbn": "0.1.1", 2390 | "tweetnacl": "0.14.5" 2391 | }, 2392 | "dependencies": { 2393 | "assert-plus": { 2394 | "version": "1.0.0", 2395 | "bundled": true, 2396 | "dev": true, 2397 | "optional": true 2398 | } 2399 | } 2400 | }, 2401 | "string-width": { 2402 | "version": "1.0.2", 2403 | "bundled": true, 2404 | "dev": true, 2405 | "requires": { 2406 | "code-point-at": "1.1.0", 2407 | "is-fullwidth-code-point": "1.0.0", 2408 | "strip-ansi": "3.0.1" 2409 | } 2410 | }, 2411 | "string_decoder": { 2412 | "version": "1.0.1", 2413 | "bundled": true, 2414 | "dev": true, 2415 | "requires": { 2416 | "safe-buffer": "5.0.1" 2417 | } 2418 | }, 2419 | "stringstream": { 2420 | "version": "0.0.5", 2421 | "bundled": true, 2422 | "dev": true, 2423 | "optional": true 2424 | }, 2425 | "strip-ansi": { 2426 | "version": "3.0.1", 2427 | "bundled": true, 2428 | "dev": true, 2429 | "requires": { 2430 | "ansi-regex": "2.1.1" 2431 | } 2432 | }, 2433 | "strip-json-comments": { 2434 | "version": "2.0.1", 2435 | "bundled": true, 2436 | "dev": true, 2437 | "optional": true 2438 | }, 2439 | "tar": { 2440 | "version": "2.2.1", 2441 | "bundled": true, 2442 | "dev": true, 2443 | "requires": { 2444 | "block-stream": "0.0.9", 2445 | "fstream": "1.0.11", 2446 | "inherits": "2.0.3" 2447 | } 2448 | }, 2449 | "tar-pack": { 2450 | "version": "3.4.0", 2451 | "bundled": true, 2452 | "dev": true, 2453 | "optional": true, 2454 | "requires": { 2455 | "debug": "2.6.8", 2456 | "fstream": "1.0.11", 2457 | "fstream-ignore": "1.0.5", 2458 | "once": "1.4.0", 2459 | "readable-stream": "2.2.9", 2460 | "rimraf": "2.6.1", 2461 | "tar": "2.2.1", 2462 | "uid-number": "0.0.6" 2463 | } 2464 | }, 2465 | "tough-cookie": { 2466 | "version": "2.3.2", 2467 | "bundled": true, 2468 | "dev": true, 2469 | "optional": true, 2470 | "requires": { 2471 | "punycode": "1.4.1" 2472 | } 2473 | }, 2474 | "tunnel-agent": { 2475 | "version": "0.6.0", 2476 | "bundled": true, 2477 | "dev": true, 2478 | "optional": true, 2479 | "requires": { 2480 | "safe-buffer": "5.0.1" 2481 | } 2482 | }, 2483 | "tweetnacl": { 2484 | "version": "0.14.5", 2485 | "bundled": true, 2486 | "dev": true, 2487 | "optional": true 2488 | }, 2489 | "uid-number": { 2490 | "version": "0.0.6", 2491 | "bundled": true, 2492 | "dev": true, 2493 | "optional": true 2494 | }, 2495 | "util-deprecate": { 2496 | "version": "1.0.2", 2497 | "bundled": true, 2498 | "dev": true 2499 | }, 2500 | "uuid": { 2501 | "version": "3.0.1", 2502 | "bundled": true, 2503 | "dev": true, 2504 | "optional": true 2505 | }, 2506 | "verror": { 2507 | "version": "1.3.6", 2508 | "bundled": true, 2509 | "dev": true, 2510 | "optional": true, 2511 | "requires": { 2512 | "extsprintf": "1.0.2" 2513 | } 2514 | }, 2515 | "wide-align": { 2516 | "version": "1.1.2", 2517 | "bundled": true, 2518 | "dev": true, 2519 | "optional": true, 2520 | "requires": { 2521 | "string-width": "1.0.2" 2522 | } 2523 | }, 2524 | "wrappy": { 2525 | "version": "1.0.2", 2526 | "bundled": true, 2527 | "dev": true 2528 | } 2529 | } 2530 | }, 2531 | "glob": { 2532 | "version": "7.1.2", 2533 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2534 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2535 | "dev": true, 2536 | "requires": { 2537 | "fs.realpath": "1.0.0", 2538 | "inflight": "1.0.6", 2539 | "inherits": "2.0.3", 2540 | "minimatch": "3.0.4", 2541 | "once": "1.4.0", 2542 | "path-is-absolute": "1.0.1" 2543 | } 2544 | }, 2545 | "glob-base": { 2546 | "version": "0.3.0", 2547 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 2548 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 2549 | "dev": true, 2550 | "requires": { 2551 | "glob-parent": "2.0.0", 2552 | "is-glob": "2.0.1" 2553 | } 2554 | }, 2555 | "glob-parent": { 2556 | "version": "2.0.0", 2557 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 2558 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 2559 | "dev": true, 2560 | "requires": { 2561 | "is-glob": "2.0.1" 2562 | } 2563 | }, 2564 | "globals": { 2565 | "version": "9.18.0", 2566 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 2567 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 2568 | "dev": true 2569 | }, 2570 | "graceful-fs": { 2571 | "version": "4.1.11", 2572 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 2573 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2574 | "dev": true 2575 | }, 2576 | "has-ansi": { 2577 | "version": "2.0.0", 2578 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 2579 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 2580 | "dev": true, 2581 | "requires": { 2582 | "ansi-regex": "2.1.1" 2583 | } 2584 | }, 2585 | "has-flag": { 2586 | "version": "2.0.0", 2587 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 2588 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 2589 | "dev": true 2590 | }, 2591 | "home-or-tmp": { 2592 | "version": "2.0.0", 2593 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 2594 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 2595 | "dev": true, 2596 | "requires": { 2597 | "os-homedir": "1.0.2", 2598 | "os-tmpdir": "1.0.2" 2599 | } 2600 | }, 2601 | "hosted-git-info": { 2602 | "version": "2.5.0", 2603 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 2604 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 2605 | "dev": true 2606 | }, 2607 | "inflight": { 2608 | "version": "1.0.6", 2609 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2610 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2611 | "dev": true, 2612 | "requires": { 2613 | "once": "1.4.0", 2614 | "wrappy": "1.0.2" 2615 | } 2616 | }, 2617 | "inherits": { 2618 | "version": "2.0.3", 2619 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2620 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2621 | "dev": true 2622 | }, 2623 | "invariant": { 2624 | "version": "2.2.2", 2625 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 2626 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 2627 | "dev": true, 2628 | "requires": { 2629 | "loose-envify": "1.3.1" 2630 | } 2631 | }, 2632 | "is-arrayish": { 2633 | "version": "0.2.1", 2634 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2635 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 2636 | "dev": true 2637 | }, 2638 | "is-binary-path": { 2639 | "version": "1.0.1", 2640 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2641 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2642 | "dev": true, 2643 | "optional": true, 2644 | "requires": { 2645 | "binary-extensions": "1.10.0" 2646 | } 2647 | }, 2648 | "is-buffer": { 2649 | "version": "1.1.5", 2650 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 2651 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 2652 | "dev": true 2653 | }, 2654 | "is-builtin-module": { 2655 | "version": "1.0.0", 2656 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 2657 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 2658 | "dev": true, 2659 | "requires": { 2660 | "builtin-modules": "1.1.1" 2661 | } 2662 | }, 2663 | "is-dotfile": { 2664 | "version": "1.0.3", 2665 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 2666 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 2667 | "dev": true 2668 | }, 2669 | "is-equal-shallow": { 2670 | "version": "0.1.3", 2671 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 2672 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 2673 | "dev": true, 2674 | "requires": { 2675 | "is-primitive": "2.0.0" 2676 | } 2677 | }, 2678 | "is-extendable": { 2679 | "version": "0.1.1", 2680 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2681 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2682 | "dev": true 2683 | }, 2684 | "is-extglob": { 2685 | "version": "1.0.0", 2686 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 2687 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 2688 | "dev": true 2689 | }, 2690 | "is-finite": { 2691 | "version": "1.0.2", 2692 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 2693 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 2694 | "dev": true, 2695 | "requires": { 2696 | "number-is-nan": "1.0.1" 2697 | } 2698 | }, 2699 | "is-glob": { 2700 | "version": "2.0.1", 2701 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 2702 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 2703 | "dev": true, 2704 | "requires": { 2705 | "is-extglob": "1.0.0" 2706 | } 2707 | }, 2708 | "is-number": { 2709 | "version": "2.1.0", 2710 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 2711 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 2712 | "dev": true, 2713 | "requires": { 2714 | "kind-of": "3.2.2" 2715 | } 2716 | }, 2717 | "is-posix-bracket": { 2718 | "version": "0.1.1", 2719 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 2720 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 2721 | "dev": true 2722 | }, 2723 | "is-primitive": { 2724 | "version": "2.0.0", 2725 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 2726 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 2727 | "dev": true 2728 | }, 2729 | "is-utf8": { 2730 | "version": "0.2.1", 2731 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 2732 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 2733 | "dev": true 2734 | }, 2735 | "isarray": { 2736 | "version": "1.0.0", 2737 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2738 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2739 | "dev": true 2740 | }, 2741 | "isobject": { 2742 | "version": "2.1.0", 2743 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2744 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2745 | "dev": true, 2746 | "requires": { 2747 | "isarray": "1.0.0" 2748 | } 2749 | }, 2750 | "istanbul-lib-coverage": { 2751 | "version": "1.1.1", 2752 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", 2753 | "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", 2754 | "dev": true 2755 | }, 2756 | "istanbul-lib-instrument": { 2757 | "version": "1.9.1", 2758 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", 2759 | "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", 2760 | "dev": true, 2761 | "requires": { 2762 | "babel-generator": "6.26.0", 2763 | "babel-template": "6.26.0", 2764 | "babel-traverse": "6.26.0", 2765 | "babel-types": "6.26.0", 2766 | "babylon": "6.18.0", 2767 | "istanbul-lib-coverage": "1.1.1", 2768 | "semver": "5.5.0" 2769 | } 2770 | }, 2771 | "js-tokens": { 2772 | "version": "3.0.2", 2773 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 2774 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 2775 | "dev": true 2776 | }, 2777 | "jsesc": { 2778 | "version": "1.3.0", 2779 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 2780 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 2781 | "dev": true 2782 | }, 2783 | "json5": { 2784 | "version": "0.5.1", 2785 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 2786 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 2787 | "dev": true 2788 | }, 2789 | "kind-of": { 2790 | "version": "3.2.2", 2791 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2792 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2793 | "dev": true, 2794 | "requires": { 2795 | "is-buffer": "1.1.5" 2796 | } 2797 | }, 2798 | "load-json-file": { 2799 | "version": "1.1.0", 2800 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 2801 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 2802 | "dev": true, 2803 | "requires": { 2804 | "graceful-fs": "4.1.11", 2805 | "parse-json": "2.2.0", 2806 | "pify": "2.3.0", 2807 | "pinkie-promise": "2.0.1", 2808 | "strip-bom": "2.0.0" 2809 | } 2810 | }, 2811 | "loader-utils": { 2812 | "version": "1.1.0", 2813 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", 2814 | "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", 2815 | "dev": true, 2816 | "requires": { 2817 | "big.js": "3.2.0", 2818 | "emojis-list": "2.1.0", 2819 | "json5": "0.5.1" 2820 | } 2821 | }, 2822 | "locate-path": { 2823 | "version": "2.0.0", 2824 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2825 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2826 | "dev": true, 2827 | "requires": { 2828 | "p-locate": "2.0.0", 2829 | "path-exists": "3.0.0" 2830 | } 2831 | }, 2832 | "lodash": { 2833 | "version": "4.17.4", 2834 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 2835 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 2836 | "dev": true 2837 | }, 2838 | "loose-envify": { 2839 | "version": "1.3.1", 2840 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 2841 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 2842 | "dev": true, 2843 | "requires": { 2844 | "js-tokens": "3.0.2" 2845 | } 2846 | }, 2847 | "make-dir": { 2848 | "version": "1.1.0", 2849 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", 2850 | "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", 2851 | "dev": true, 2852 | "requires": { 2853 | "pify": "3.0.0" 2854 | }, 2855 | "dependencies": { 2856 | "pify": { 2857 | "version": "3.0.0", 2858 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2859 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2860 | "dev": true 2861 | } 2862 | } 2863 | }, 2864 | "micromatch": { 2865 | "version": "2.3.11", 2866 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 2867 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 2868 | "dev": true, 2869 | "requires": { 2870 | "arr-diff": "2.0.0", 2871 | "array-unique": "0.2.1", 2872 | "braces": "1.8.5", 2873 | "expand-brackets": "0.1.5", 2874 | "extglob": "0.3.2", 2875 | "filename-regex": "2.0.1", 2876 | "is-extglob": "1.0.0", 2877 | "is-glob": "2.0.1", 2878 | "kind-of": "3.2.2", 2879 | "normalize-path": "2.1.1", 2880 | "object.omit": "2.0.1", 2881 | "parse-glob": "3.0.4", 2882 | "regex-cache": "0.4.4" 2883 | } 2884 | }, 2885 | "minimatch": { 2886 | "version": "3.0.4", 2887 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2888 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2889 | "dev": true, 2890 | "requires": { 2891 | "brace-expansion": "1.1.8" 2892 | } 2893 | }, 2894 | "minimist": { 2895 | "version": "0.0.8", 2896 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2897 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2898 | "dev": true 2899 | }, 2900 | "mkdirp": { 2901 | "version": "0.5.1", 2902 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2903 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2904 | "dev": true, 2905 | "requires": { 2906 | "minimist": "0.0.8" 2907 | } 2908 | }, 2909 | "ms": { 2910 | "version": "2.0.0", 2911 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2912 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2913 | "dev": true 2914 | }, 2915 | "nan": { 2916 | "version": "2.8.0", 2917 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", 2918 | "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", 2919 | "dev": true, 2920 | "optional": true 2921 | }, 2922 | "normalize-package-data": { 2923 | "version": "2.4.0", 2924 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 2925 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 2926 | "dev": true, 2927 | "requires": { 2928 | "hosted-git-info": "2.5.0", 2929 | "is-builtin-module": "1.0.0", 2930 | "semver": "5.5.0", 2931 | "validate-npm-package-license": "3.0.1" 2932 | } 2933 | }, 2934 | "normalize-path": { 2935 | "version": "2.1.1", 2936 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2937 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2938 | "dev": true, 2939 | "requires": { 2940 | "remove-trailing-separator": "1.1.0" 2941 | } 2942 | }, 2943 | "number-is-nan": { 2944 | "version": "1.0.1", 2945 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2946 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2947 | "dev": true 2948 | }, 2949 | "object-assign": { 2950 | "version": "4.1.1", 2951 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2952 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2953 | "dev": true 2954 | }, 2955 | "object.omit": { 2956 | "version": "2.0.1", 2957 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2958 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2959 | "dev": true, 2960 | "requires": { 2961 | "for-own": "0.1.5", 2962 | "is-extendable": "0.1.1" 2963 | } 2964 | }, 2965 | "once": { 2966 | "version": "1.4.0", 2967 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2968 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2969 | "dev": true, 2970 | "requires": { 2971 | "wrappy": "1.0.2" 2972 | } 2973 | }, 2974 | "os-homedir": { 2975 | "version": "1.0.2", 2976 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2977 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2978 | "dev": true 2979 | }, 2980 | "os-tmpdir": { 2981 | "version": "1.0.2", 2982 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2983 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2984 | "dev": true 2985 | }, 2986 | "p-limit": { 2987 | "version": "1.2.0", 2988 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", 2989 | "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", 2990 | "dev": true, 2991 | "requires": { 2992 | "p-try": "1.0.0" 2993 | } 2994 | }, 2995 | "p-locate": { 2996 | "version": "2.0.0", 2997 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2998 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2999 | "dev": true, 3000 | "requires": { 3001 | "p-limit": "1.2.0" 3002 | } 3003 | }, 3004 | "p-try": { 3005 | "version": "1.0.0", 3006 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 3007 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 3008 | "dev": true 3009 | }, 3010 | "parse-glob": { 3011 | "version": "3.0.4", 3012 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 3013 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 3014 | "dev": true, 3015 | "requires": { 3016 | "glob-base": "0.3.0", 3017 | "is-dotfile": "1.0.3", 3018 | "is-extglob": "1.0.0", 3019 | "is-glob": "2.0.1" 3020 | } 3021 | }, 3022 | "parse-json": { 3023 | "version": "2.2.0", 3024 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 3025 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 3026 | "dev": true, 3027 | "requires": { 3028 | "error-ex": "1.3.1" 3029 | } 3030 | }, 3031 | "path-exists": { 3032 | "version": "3.0.0", 3033 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3034 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3035 | "dev": true 3036 | }, 3037 | "path-is-absolute": { 3038 | "version": "1.0.1", 3039 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3040 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3041 | "dev": true 3042 | }, 3043 | "path-type": { 3044 | "version": "1.1.0", 3045 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 3046 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 3047 | "dev": true, 3048 | "requires": { 3049 | "graceful-fs": "4.1.11", 3050 | "pify": "2.3.0", 3051 | "pinkie-promise": "2.0.1" 3052 | } 3053 | }, 3054 | "pify": { 3055 | "version": "2.3.0", 3056 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 3057 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 3058 | "dev": true 3059 | }, 3060 | "pinkie": { 3061 | "version": "2.0.4", 3062 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 3063 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 3064 | "dev": true 3065 | }, 3066 | "pinkie-promise": { 3067 | "version": "2.0.1", 3068 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 3069 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 3070 | "dev": true, 3071 | "requires": { 3072 | "pinkie": "2.0.4" 3073 | } 3074 | }, 3075 | "pkg-dir": { 3076 | "version": "2.0.0", 3077 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 3078 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 3079 | "dev": true, 3080 | "requires": { 3081 | "find-up": "2.1.0" 3082 | } 3083 | }, 3084 | "preserve": { 3085 | "version": "0.2.0", 3086 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 3087 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 3088 | "dev": true 3089 | }, 3090 | "private": { 3091 | "version": "0.1.7", 3092 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 3093 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 3094 | "dev": true 3095 | }, 3096 | "process-nextick-args": { 3097 | "version": "1.0.7", 3098 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 3099 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 3100 | "dev": true, 3101 | "optional": true 3102 | }, 3103 | "randomatic": { 3104 | "version": "1.1.7", 3105 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 3106 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 3107 | "dev": true, 3108 | "requires": { 3109 | "is-number": "3.0.0", 3110 | "kind-of": "4.0.0" 3111 | }, 3112 | "dependencies": { 3113 | "is-number": { 3114 | "version": "3.0.0", 3115 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 3116 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 3117 | "dev": true, 3118 | "requires": { 3119 | "kind-of": "3.2.2" 3120 | }, 3121 | "dependencies": { 3122 | "kind-of": { 3123 | "version": "3.2.2", 3124 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3125 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3126 | "dev": true, 3127 | "requires": { 3128 | "is-buffer": "1.1.5" 3129 | } 3130 | } 3131 | } 3132 | }, 3133 | "kind-of": { 3134 | "version": "4.0.0", 3135 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 3136 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 3137 | "dev": true, 3138 | "requires": { 3139 | "is-buffer": "1.1.5" 3140 | } 3141 | } 3142 | } 3143 | }, 3144 | "read-pkg": { 3145 | "version": "1.1.0", 3146 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 3147 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 3148 | "dev": true, 3149 | "requires": { 3150 | "load-json-file": "1.1.0", 3151 | "normalize-package-data": "2.4.0", 3152 | "path-type": "1.1.0" 3153 | } 3154 | }, 3155 | "read-pkg-up": { 3156 | "version": "1.0.1", 3157 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 3158 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 3159 | "dev": true, 3160 | "requires": { 3161 | "find-up": "1.1.2", 3162 | "read-pkg": "1.1.0" 3163 | }, 3164 | "dependencies": { 3165 | "find-up": { 3166 | "version": "1.1.2", 3167 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 3168 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 3169 | "dev": true, 3170 | "requires": { 3171 | "path-exists": "2.1.0", 3172 | "pinkie-promise": "2.0.1" 3173 | } 3174 | }, 3175 | "path-exists": { 3176 | "version": "2.1.0", 3177 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 3178 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 3179 | "dev": true, 3180 | "requires": { 3181 | "pinkie-promise": "2.0.1" 3182 | } 3183 | } 3184 | } 3185 | }, 3186 | "readable-stream": { 3187 | "version": "2.3.3", 3188 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 3189 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 3190 | "dev": true, 3191 | "optional": true, 3192 | "requires": { 3193 | "core-util-is": "1.0.2", 3194 | "inherits": "2.0.3", 3195 | "isarray": "1.0.0", 3196 | "process-nextick-args": "1.0.7", 3197 | "safe-buffer": "5.1.1", 3198 | "string_decoder": "1.0.3", 3199 | "util-deprecate": "1.0.2" 3200 | } 3201 | }, 3202 | "readdirp": { 3203 | "version": "2.1.0", 3204 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 3205 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 3206 | "dev": true, 3207 | "optional": true, 3208 | "requires": { 3209 | "graceful-fs": "4.1.11", 3210 | "minimatch": "3.0.4", 3211 | "readable-stream": "2.3.3", 3212 | "set-immediate-shim": "1.0.1" 3213 | } 3214 | }, 3215 | "regenerate": { 3216 | "version": "1.3.3", 3217 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", 3218 | "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", 3219 | "dev": true 3220 | }, 3221 | "regenerator-runtime": { 3222 | "version": "0.11.0", 3223 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", 3224 | "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", 3225 | "dev": true 3226 | }, 3227 | "regenerator-transform": { 3228 | "version": "0.10.1", 3229 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", 3230 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", 3231 | "dev": true, 3232 | "requires": { 3233 | "babel-runtime": "6.26.0", 3234 | "babel-types": "6.26.0", 3235 | "private": "0.1.7" 3236 | } 3237 | }, 3238 | "regex-cache": { 3239 | "version": "0.4.4", 3240 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 3241 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 3242 | "dev": true, 3243 | "requires": { 3244 | "is-equal-shallow": "0.1.3" 3245 | } 3246 | }, 3247 | "regexpu-core": { 3248 | "version": "2.0.0", 3249 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 3250 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 3251 | "dev": true, 3252 | "requires": { 3253 | "regenerate": "1.3.3", 3254 | "regjsgen": "0.2.0", 3255 | "regjsparser": "0.1.5" 3256 | } 3257 | }, 3258 | "regjsgen": { 3259 | "version": "0.2.0", 3260 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 3261 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 3262 | "dev": true 3263 | }, 3264 | "regjsparser": { 3265 | "version": "0.1.5", 3266 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 3267 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 3268 | "dev": true, 3269 | "requires": { 3270 | "jsesc": "0.5.0" 3271 | }, 3272 | "dependencies": { 3273 | "jsesc": { 3274 | "version": "0.5.0", 3275 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 3276 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 3277 | "dev": true 3278 | } 3279 | } 3280 | }, 3281 | "remove-trailing-separator": { 3282 | "version": "1.1.0", 3283 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 3284 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 3285 | "dev": true 3286 | }, 3287 | "repeat-element": { 3288 | "version": "1.1.2", 3289 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 3290 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 3291 | "dev": true 3292 | }, 3293 | "repeat-string": { 3294 | "version": "1.6.1", 3295 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 3296 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3297 | "dev": true 3298 | }, 3299 | "repeating": { 3300 | "version": "2.0.1", 3301 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 3302 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 3303 | "dev": true, 3304 | "requires": { 3305 | "is-finite": "1.0.2" 3306 | } 3307 | }, 3308 | "require-main-filename": { 3309 | "version": "1.0.1", 3310 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 3311 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 3312 | "dev": true 3313 | }, 3314 | "require-package-name": { 3315 | "version": "2.0.1", 3316 | "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", 3317 | "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", 3318 | "dev": true 3319 | }, 3320 | "safe-buffer": { 3321 | "version": "5.1.1", 3322 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 3323 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 3324 | "dev": true 3325 | }, 3326 | "semver": { 3327 | "version": "5.5.0", 3328 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 3329 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 3330 | "dev": true 3331 | }, 3332 | "set-immediate-shim": { 3333 | "version": "1.0.1", 3334 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 3335 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 3336 | "dev": true, 3337 | "optional": true 3338 | }, 3339 | "slash": { 3340 | "version": "1.0.0", 3341 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 3342 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 3343 | "dev": true 3344 | }, 3345 | "source-map": { 3346 | "version": "0.5.7", 3347 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3348 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3349 | "dev": true 3350 | }, 3351 | "source-map-support": { 3352 | "version": "0.4.16", 3353 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", 3354 | "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", 3355 | "dev": true, 3356 | "requires": { 3357 | "source-map": "0.5.7" 3358 | } 3359 | }, 3360 | "spdx-correct": { 3361 | "version": "1.0.2", 3362 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 3363 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 3364 | "dev": true, 3365 | "requires": { 3366 | "spdx-license-ids": "1.2.2" 3367 | } 3368 | }, 3369 | "spdx-expression-parse": { 3370 | "version": "1.0.4", 3371 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 3372 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 3373 | "dev": true 3374 | }, 3375 | "spdx-license-ids": { 3376 | "version": "1.2.2", 3377 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 3378 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 3379 | "dev": true 3380 | }, 3381 | "string_decoder": { 3382 | "version": "1.0.3", 3383 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 3384 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 3385 | "dev": true, 3386 | "optional": true, 3387 | "requires": { 3388 | "safe-buffer": "5.1.1" 3389 | } 3390 | }, 3391 | "strip-ansi": { 3392 | "version": "3.0.1", 3393 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3394 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3395 | "dev": true, 3396 | "requires": { 3397 | "ansi-regex": "2.1.1" 3398 | } 3399 | }, 3400 | "strip-bom": { 3401 | "version": "2.0.0", 3402 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 3403 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 3404 | "dev": true, 3405 | "requires": { 3406 | "is-utf8": "0.2.1" 3407 | } 3408 | }, 3409 | "supports-color": { 3410 | "version": "2.0.0", 3411 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 3412 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 3413 | "dev": true 3414 | }, 3415 | "test-exclude": { 3416 | "version": "4.1.1", 3417 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", 3418 | "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", 3419 | "dev": true, 3420 | "requires": { 3421 | "arrify": "1.0.1", 3422 | "micromatch": "2.3.11", 3423 | "object-assign": "4.1.1", 3424 | "read-pkg-up": "1.0.1", 3425 | "require-main-filename": "1.0.1" 3426 | } 3427 | }, 3428 | "to-fast-properties": { 3429 | "version": "1.0.3", 3430 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 3431 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 3432 | "dev": true 3433 | }, 3434 | "trim-right": { 3435 | "version": "1.0.1", 3436 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 3437 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 3438 | "dev": true 3439 | }, 3440 | "user-home": { 3441 | "version": "1.1.1", 3442 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 3443 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 3444 | "dev": true 3445 | }, 3446 | "util-deprecate": { 3447 | "version": "1.0.2", 3448 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3449 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3450 | "dev": true, 3451 | "optional": true 3452 | }, 3453 | "v8flags": { 3454 | "version": "2.1.1", 3455 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 3456 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 3457 | "dev": true, 3458 | "requires": { 3459 | "user-home": "1.1.1" 3460 | } 3461 | }, 3462 | "validate-npm-package-license": { 3463 | "version": "3.0.1", 3464 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 3465 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 3466 | "dev": true, 3467 | "requires": { 3468 | "spdx-correct": "1.0.2", 3469 | "spdx-expression-parse": "1.0.4" 3470 | } 3471 | }, 3472 | "wrappy": { 3473 | "version": "1.0.2", 3474 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3475 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3476 | "dev": true 3477 | } 3478 | } 3479 | } 3480 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-plupload", 3 | "version": "0.0.20", 4 | "description": "React plugin for plupload", 5 | "main": "lib/Plupload.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "babel ./src --out-dir ./lib --presets env,react,stage-0", 9 | "dev": "webpack-dev-server --progress --colors --port 8090 --hot" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/lemonCMS/react-plupload.git" 14 | }, 15 | "homepage": "https://github.com/lemonCMS/react-plupload", 16 | "keywords": [ 17 | "react", 18 | "plupload" 19 | ], 20 | "author": "Raymond van Vuuren", 21 | "license": "MIT", 22 | 23 | "devDependencies": { 24 | "babel-env": "^2.4.1", 25 | "babel-cli": "^6.26.0", 26 | "babel-core": "^6.26.0", 27 | "babel-eslint": "^8.2.1", 28 | "babel-loader": "^7.1.4", 29 | "babel-preset-env": "^1.6.1", 30 | "babel-preset-stage-0": "^6.24.1", 31 | "eslint": "^4.19.0", 32 | "eslint-plugin-react": "^7.7.0", 33 | "react": "^16.2.0", 34 | "react-dom": "^16.2.0", 35 | "prop-types": "^15.6.1", 36 | "react-hot-loader": "^4.0.0", 37 | "webpack": "^4.1.1", 38 | "webpack-cli": "^2.0.12", 39 | "webpack-dev-server": "^3.1.1" 40 | }, 41 | "bugs": { 42 | "url": "https://github.com/lemonCMS/react-plupload/issues" 43 | }, 44 | "directories": { 45 | "example": "example" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/BrowseButton.js: -------------------------------------------------------------------------------- 1 | import _omit from 'lodash/omit'; 2 | import React from 'react'; 3 | import PropTypes from 'prop-types'; 4 | 5 | class BrowseButton extends React.Component { 6 | 7 | shouldComponentUpdate() { 8 | return false; 9 | } 10 | 11 | render() { 12 | return React.createElement('button', _omit(this.props, 'content'), this.props.content); 13 | } 14 | } 15 | 16 | BrowseButton.propTypes = { 17 | 'content': PropTypes.string 18 | }; 19 | 20 | export default BrowseButton; 21 | -------------------------------------------------------------------------------- /src/Plupload.js: -------------------------------------------------------------------------------- 1 | import _ from 'lodash'; 2 | import React from 'react'; 3 | import PropTypes from 'prop-types'; 4 | import BrowseButton from './BrowseButton'; 5 | import UploadButton from './UploadButton'; 6 | 7 | let count = 0; 8 | const EVENTS = [ 9 | 'PostInit', 'Browse', 'Refresh', 'StateChanged', 'QueueChanged', 'OptionChanged', 10 | 'BeforeUpload', 'UploadProgress', 'FileFiltered', 'FilesAdded', 'FilesRemoved', 'FileUploaded', 'ChunkUploaded', 11 | 'UploadComplete', 'Destroy', 'Error' 12 | ]; 13 | 14 | class Plupload extends React.Component { 15 | constructor() { 16 | super(); 17 | this.id =new Date().valueOf(); 18 | this.state = {files: [], uploadState: false, progress: {}}; 19 | this.runUploader = this.runUploader.bind(this); 20 | this.getComponentId = this.getComponentId.bind(this); 21 | this.refresh = this.refresh.bind(this); 22 | this.initUploader = this.initUploader.bind(this); 23 | this.list = this.list.bind(this); 24 | this.clearAllFiles = this.clearAllFiles.bind(this); 25 | this.clearFailedFiles = this.clearFailedFiles.bind(this); 26 | this.removeFile = this.removeFile.bind(this); 27 | this.doUpload = this.doUpload.bind(this); 28 | this.container = null; 29 | } 30 | 31 | checkUploader() { 32 | return window.plupload !== undefined; 33 | } 34 | 35 | runUploader() { 36 | const self = this; 37 | this.initUploader(); 38 | this.uploader.init(); 39 | 40 | EVENTS.forEach(function(event) { 41 | const handler = self.props['on' + event]; 42 | if (typeof handler === 'function') { 43 | self.uploader.bind(event, handler); 44 | } 45 | }); 46 | 47 | // Put the selected files into the current state 48 | this.uploader.bind('FilesAdded', (up, files) => { 49 | if (_.get(self.props, 'multi_selection') === false) { 50 | self.clearAllFiles(); 51 | } else { 52 | self.clearFailedFiles(); 53 | } 54 | 55 | const f = self.state.files; 56 | _.map(files, (file) => { 57 | f.push(file); 58 | }); 59 | self.setState({files: f}, ()=> { 60 | if (self.props.autoUpload === true) { 61 | self.uploader.start(); 62 | } 63 | }); 64 | }); 65 | 66 | this.uploader.bind('FilesRemoved', (up, rmFiles) => { 67 | const stateFiles = self.state.files; 68 | const files = _.filter(stateFiles, (file) => { 69 | // console.log(rmFiles, file); 70 | return -1 !== _.find(rmFiles, {id: file.id}); 71 | }); 72 | self.setState({files: files}); 73 | }); 74 | 75 | this.uploader.bind('StateChanged', (up) => { 76 | if (up.state === window.plupload.STARTED && self.state.uploadState === false) { 77 | self.setState({uploadState: true}); 78 | } 79 | if (up.state !== window.plupload.STARTED && self.state.uploadState === true) { 80 | self.setState({uploadState: false}); 81 | } 82 | }); 83 | 84 | this.uploader.bind('FileUploaded', (up, file) => { 85 | const stateFiles = self.state.files; 86 | _.map(stateFiles, (val, key) => { 87 | if (val.id === file.id) { 88 | val.uploaded = true; 89 | stateFiles[key] = val; 90 | } 91 | }); 92 | self.setState({files: stateFiles}, () => { 93 | self.removeFile(file.id); 94 | }); 95 | }); 96 | 97 | this.uploader.bind('Error', (up, err) => { 98 | if (_.isUndefined(err.file) !== true) { 99 | const stateFiles = self.state.files; 100 | _.map(stateFiles, (val, key) => { 101 | if (val.id === err.file.id) { 102 | val.error = err; 103 | stateFiles[key] = val; 104 | } 105 | }); 106 | self.setState({files: stateFiles}); 107 | } 108 | }); 109 | 110 | this.uploader.bind('UploadProgress', (up, file) => { 111 | const stateProgress = self.state.progress; 112 | stateProgress[file.id] = file.percent; 113 | self.setState({progress: stateProgress}); 114 | }); 115 | } 116 | 117 | componentDidMount() { 118 | const self = this; 119 | if(this.checkUploader()) { 120 | this.runUploader(); 121 | } else { 122 | setTimeout(function() { 123 | if(self.checkUploader()) { 124 | self.runUploader(); 125 | } else { 126 | console.warn('Plupload has not initialized'); 127 | } 128 | }, 500); 129 | } 130 | } 131 | 132 | componentDidUpdate() { 133 | if(this.checkUploader()) { 134 | this.refresh(); 135 | } 136 | } 137 | 138 | getComponentId() { 139 | return this.props.id || 'react_plupload_' + this.id; 140 | } 141 | 142 | refresh() { 143 | // Refresh to append events to buttons again. 144 | this.uploader.refresh(); 145 | } 146 | 147 | initUploader() { 148 | this.uploader = new window.plupload.Uploader(_.extend({ 149 | container: `plupload_${this.props.id}`, 150 | runtimes: 'html5', 151 | multipart: true, 152 | chunk_size: '1mb', 153 | browse_button: this.getComponentId(), 154 | url: '/upload', 155 | }, this.props)); 156 | } 157 | 158 | // Display selected files 159 | list() { 160 | const self = this; 161 | return _.map(this.state.files, (val) => { 162 | 163 | const removeFile = (e) => { 164 | e.preventDefault(); 165 | self.removeFile(val.id); 166 | }; 167 | let delButton = ''; 168 | if (self.state.uploadState === false && val.uploaded !== true) { 169 | delButton = React.createElement('button', {onClick: removeFile, className: 'pull-right'}, 'X'); 170 | } 171 | 172 | let progressBar = ''; 173 | if (self.state.uploadState === true && val.uploaded !== true && _.isUndefined(val.error)) { 174 | const percent = self.state.progress[val.id] || 0; 175 | progressBar = React.createElement('div', {className: 'progress'}, 176 | React.createElement('div', { 177 | className: 'progress-bar', 178 | role: 'progressbar', 179 | 'aria-valuenow': percent, 180 | 'aria-valuemin': 0, 181 | 'aria-valuemax': 100, 182 | style: {width: percent + '%'} 183 | }, 184 | React.createElement('span', {className: 'sr-only'}, percent + 'complete') 185 | ) 186 | ); 187 | } 188 | 189 | let errorDiv = ''; 190 | if (!_.isUndefined(val.error)) { 191 | errorDiv = React.createElement('div', {className: 'alert alert-danger'}, 'Error: ' + val.error.code + ', Message: ' + val.error.message); 192 | } 193 | 194 | let bgSuccess = ''; 195 | if (!_.isUndefined(val.uploaded)) { 196 | bgSuccess = 'bg-success'; 197 | } 198 | 199 | return React.createElement('li', {key: val.id}, 200 | React.createElement('p', {className: bgSuccess}, val.name, ' ', delButton), progressBar, errorDiv 201 | ); 202 | }); 203 | } 204 | 205 | clearAllFiles() { 206 | const state = _.filter(this.state.files, (file) => { 207 | this.uploader.removeFile(file.id); 208 | }); 209 | this.setState({files: state}); 210 | } 211 | 212 | clearFailedFiles() { 213 | const state = _.filter(this.state.files, (file) => { 214 | if (file.error) { 215 | this.uploader.removeFile(file.id); 216 | } 217 | return !file.error; 218 | }); 219 | this.setState({files: state}); 220 | } 221 | 222 | removeFile(id) { 223 | this.uploader.removeFile(id); 224 | const state = _.filter(this.state.files, (file) => { 225 | return file.id !== id; 226 | }); 227 | this.setState({files: state}); 228 | } 229 | 230 | doUpload(e) { 231 | e.preventDefault(); 232 | this.uploader.start(); 233 | } 234 | 235 | render() { 236 | const propsSelect = { 237 | id: this.getComponentId(), 238 | type: 'button', 239 | content: this.props.buttonSelect || 'Browse' 240 | }; 241 | 242 | const propsUpload = { 243 | onClick: this.doUpload, 244 | type: 'button', 245 | content: this.props.buttonUpload || 'Upload' 246 | }; 247 | if (this.state.files.length === 0) propsUpload.disabled = 'disabled'; 248 | 249 | const list = this.list(); 250 | 251 | return ( 252 |
(this.container = ref)}> 253 |
    254 | {list} 255 |
256 | 257 | 258 |
259 | ); 260 | } 261 | } 262 | 263 | Plupload.propTypes = { 264 | 'onPostInit': PropTypes.func, 265 | 'onBrowse': PropTypes.func, 266 | 'onRefresh': PropTypes.func, 267 | 'onStateChanged': PropTypes.func, 268 | 'onQueueChanged': PropTypes.func, 269 | 'onOptionChanged': PropTypes.func, 270 | 'onBeforeUpload': PropTypes.func, 271 | 'onUploadProgress': PropTypes.func, 272 | 'onFileFiltered': PropTypes.func, 273 | 'onFilesAdded': PropTypes.func, 274 | 'onFilesRemoved': PropTypes.func, 275 | 'onFileUploaded': PropTypes.func, 276 | 'onChunkUploaded': PropTypes.func, 277 | 'onUploadComplete': PropTypes.func, 278 | 'onDestroy': PropTypes.func, 279 | 'onError': PropTypes.func, 280 | 'id': PropTypes.string.isRequired, 281 | 'buttonSelect': PropTypes.string, 282 | 'buttonUpload': PropTypes.string, 283 | 'autoUpload': PropTypes.bool 284 | }; 285 | 286 | export default Plupload; 287 | -------------------------------------------------------------------------------- /src/UploadButton.js: -------------------------------------------------------------------------------- 1 | import _omit from 'lodash/omit'; 2 | import React from 'react'; 3 | import PropTypes from 'prop-types'; 4 | 5 | class UploadButton extends React.Component { 6 | 7 | shouldComponentUpdate() { 8 | return true; 9 | }; 10 | 11 | render() { 12 | return React.createElement('button', _omit(this.props, 'content'), this.props.content); 13 | } 14 | } 15 | 16 | UploadButton.propTypes = { 17 | content: PropTypes.string 18 | }; 19 | 20 | export default UploadButton; 21 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | mode: 'development', 3 | entry: [ 4 | './example/Example.js' 5 | ], 6 | output: { 7 | path: __dirname + '/dist', 8 | publicPath: '/assets', 9 | filename: 'bundle.js' 10 | }, 11 | devServer: { 12 | contentBase: '.' 13 | }, 14 | module: { 15 | rules: [ 16 | { 17 | test: /\.(js|jsx)$/, 18 | exclude: /node_modules/, 19 | use: ['babel-loader'] 20 | } 21 | ] 22 | }, 23 | resolve: { 24 | extensions: ['.js', '.jsx'] 25 | }, 26 | }; 27 | --------------------------------------------------------------------------------