├── .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 |
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 |
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 |
--------------------------------------------------------------------------------