├── .babelrc
├── .gitignore
├── .npmignore
├── .nvmrc
├── .prettierrc
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── src
├── blacklisted-attributes.js
├── blacklisted-style-props.js
├── emotion.js
├── other
│ └── css-test.js
├── pseudoclasses.js
├── styled-components.js
├── subatomic.js
└── validAttr.js
├── themes
└── default.js
└── webpack.config.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "react"],
3 | "plugins": ["transform-object-rest-spread"]
4 | }
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /emotion.js
2 | /styled-components.js
3 | node_modules
4 | .DS_Store
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 8.1.4
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 80,
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Gabe Ragland
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Inline style props for emotion and styled-components.
7 | Spend less time naming things. Iterate faster ⚡️
8 |
9 |
10 |
11 |
12 | ---
13 |
14 |
15 |
16 | Subatomic allows you to style your React components inline so that you can spend more time writing styles and less time thinking of new component names. It integrates with emotion and styled-components so that you have the best of both worlds: The power of your favorite css-in-js library plus an inline style system to help you move fast and try out new ideas.
17 |
18 | ## 💁 Basic Usage
19 |
20 | ```
21 | npm install --save subatomic
22 | ```
23 |
24 | Supercharge any component by making `subatomic('element')` the root element.
25 |
26 | ```jsx
27 | import styled from 'emotion';
28 | import subatomic from 'subatomic/emotion';
29 |
30 | // Our components
31 | const Box = subatomic('div');
32 | const H1 = subatomic('h1');
33 | const Button = styled(subatomic('button'))`
34 | color: white;
35 | background-color: blue;
36 | &:hover {
37 | background-color: lightblue;
38 | }
39 | `
40 |
41 | // Now we have style props! Tweak any style inline.
42 |
43 |
44 | My Awesome Website
45 |
46 |
47 | All other websites are significantly less awesome
48 |
49 |
50 | Get Started
51 |
52 |
53 | ```
54 |
55 | > If you use styled-components import from `subatomic/styled-components` instead.
56 |
57 | While that's all you need to know to get started, we also support [responsive styles](#-responsive-style-props), [custom prop logic](#-custom-style-props), [pseudo-classes](#-psuedo-classes) and [dynamic elements](#-dynamic-elements). Read on to see how each of these features would affect the code example above.
58 |
59 | ## 📲 Responsive Style Props
60 |
61 | So let's say you're happy with the awesome website header but everything is way too big on mobile. With just a few tweaks to our example above we can decrease padding and font size on smaller screens.
62 | ```jsx
63 |
64 |
65 | My Awesome Website
66 |
67 |
68 | All other websites are significantly less awesome
69 |
70 |
71 | Get Started
72 |
73 |
74 | ```
75 | As you can see we're now passing an array of values to the `padding` and `fontSize` props. These map to an array of screen widths (or "responsive breakpoints"). Subatomic uses a default set of breakpoints, so the above example works without any extra configuration, but you can also override them right in your website theme.
76 |
77 | ```jsx
78 | // theme.js
79 | export default {
80 | // These are the default breakpoints
81 | breakpoints: ['576px', '768px', '992px', '1200px']
82 | }
83 |
84 | // App
85 | import { ThemeProvider } from 'emotion-theming'
86 | import theme from './theme.js'
87 |
88 | const App = props => (
89 |
90 | {/* ... */}
91 |
92 | )
93 | ```
94 | Once your theme is made available via `ThemeProvider` subatomic will automatically use those values instead. For more info about theming see the ThemeProvider docs for [emotion](https://emotion.sh/docs/theming) or [styled-components](https://www.styled-components.com/docs/advanced#theming).
95 |
96 | ## 🌈 Custom Style Props
97 |
98 | Want to use shorter prop names or hook them into your design system? We make that easy as well. In this example we're using some custom props with shorter names (because less typing is cool) and the prop values now map to these locations in our theme: `theme.spacing[i]`, `theme.fontSizes[i]`, `theme.colors.green[2]`.
99 |
100 | ```jsx
101 |
102 |
103 | My Awesome Website
104 |
105 |
106 | All other websites are significantly less awesome
107 |
108 |
109 | Get Started
110 |
111 |
112 | ```
113 | In the [configuration section](#-configuration) we'll show you how actually set this up, but the basic idea is that you can quickly define styles inline without giving the up the wonderful consistency of a design system.
114 |
115 | ## 👻 Psuedo-classes
116 |
117 | Use any psuedo-class or pseudo-element by prepending it to the prop name. Here we modify `` so that its hover color fits better with its green background-color.
118 |
119 | ```jsx
120 |
121 | Get Started
122 |
123 | ```
124 | > You can even chain multiple pseudo-classes together. For example: `hoverPlaceholderColor`
125 |
126 | ## 🎩 Dynamic Elements
127 |
128 | Sometimes you want to change the underlying element. You can do that with the `is` prop. In the example below we've renamed `H1` to `Heading` and now use the `is` prop to make the subheading an `h2` element. We also made `Button` an `a` element because we want it to be a link that looks like a button.
129 |
130 | ```jsx
131 | const Heading = subatomic('h1');
132 |
133 |
134 |
135 | My Awesome Website
136 |
137 |
138 | All other websites are significantly less awesome
139 |
140 |
141 | Get Started
142 |
143 |
144 | ```
145 | > You can even pass a component. Example: `Get Started `
146 |
147 | ## 🤹♀️ Tips and Tricks
148 |
149 | ### Composition Is Your Friend
150 |
151 | If you decide you want to turn a chunk of code into a named component you can of course re-write using `styled()` syntax, but consider using composition instead and pass along props using `{...props}` (spread syntax).
152 |
153 | ```jsx
154 | // Our example from above
155 |
156 |
157 | My Awesome Website
158 |
159 |
160 | All other websites are significantly less awesome
161 |
162 |
163 | Get Started
164 |
165 |
166 |
167 | // ⬇ Becomes a reusable component
168 |
169 | const PageHeading ({ title, subtitle, ...props }) => (
170 |
171 |
172 | {title}
173 |
174 |
175 | {subtitle}
176 |
177 |
178 | );
179 |
180 | // Lets also break the button out into its own component
181 | const GreenButton = props => (
182 | ;
187 | );
188 |
189 | // ⬇ Which is rendered like so
190 |
191 |
197 |
198 |
199 | Get Started
200 |
201 | ```
202 |
203 | ### Fall Back to Styled When Needed
204 |
205 | Subatomic builds on emotion and styled-components so that you always have their styling syntax to fall back on when needed. The goal is to help you work faster, not completely change your workflow. Here are some cases where you might want to just create a normal `styled()` component (or use emotion's `css` prop).
206 |
207 | * You need to do do css animations with `@keyframes`
208 | * Component has a lot of hover styles and props like `hoverPlaceholderColor` are getting unwieldy
209 | * Cases where you need more advanced media queries (such as using both min and max width in one rule)
210 | * You'd rather just use subatomic for spacing and layout components
211 |
212 | ## 🤖 Theme Configuration
213 |
214 | Subatomic will automatically use the following [default theme](https://github.com/gragland/subatomic/blob/master/themes/default.js) which comes with a basic style system and some useful custom props. See the inline comments below for an explanation of each property and a code example at the bottom that shows how to extend this theme to add your own style system and props.
215 |
216 | ```js
217 | export default {
218 | breakpoints: ['576px', '768px', '992px', '1200px'],
219 | space: [0, 4, 8, 16, 32, 64, 128, 256, 512 ],
220 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
221 | // Custom style props go in the props object
222 | props: {
223 | f: {
224 | // Where to find values in theme
225 | themeKey: 'fontSizes',
226 | // Default unit if none specified
227 | defaultUnit: 'px',
228 | // Resulting css property
229 | style: 'fontSize'
230 | },
231 | color: {
232 | // Extend theme and add colors object
233 | themeKey: 'colors',
234 | style: 'color'
235 | },
236 | bg: {
237 | themeKey: 'colors',
238 | style: 'backgroundColor'
239 | },
240 | borderColor: {
241 | themeKey: 'colors',
242 | style: 'borderColor'
243 | },
244 | d: {
245 | style: 'display'
246 | },
247 | p: {
248 | themeKey: 'space',
249 | defaultUnit: 'px',
250 | style: 'padding',
251 | // Directional variations
252 | variations: {
253 | pt: 'paddingTop',
254 | pr: 'paddingRight',
255 | pb: 'paddingBottom',
256 | pl: 'paddingLeft',
257 | px: ['paddingLeft', 'paddingRight'],
258 | py: ['paddingTop', 'paddingBottom']
259 | }
260 | },
261 | m: {
262 | themeKey: 'space',
263 | defaultUnit: 'px',
264 | style: 'margin',
265 | variations: {
266 | mt: 'marginTop',
267 | mr: 'marginRight',
268 | mb: 'marginBottom',
269 | ml: 'marginLeft',
270 | mx: ['marginLeft', 'marginRight'],
271 | my: ['marginTop', 'marginBottom']
272 | }
273 | },
274 | h: {
275 | style: 'height'
276 | },
277 | // Advanced width prop
278 | w: {
279 | // Style is a function instead of a string
280 | style: value => {
281 | let width = value;
282 | // If less than 1 make it a fraction of 100% (1/3 = 33.33...%, etc)
283 | // Nice for column widths (
)
284 | if (isNumber(width) && width <= 1) {
285 | width = `${width * 100}%`;
286 | }
287 | return {
288 | width: width
289 | };
290 | }
291 | }
292 | }
293 | }
294 | ```
295 | ### Extending the Default Theme
296 | Here's how you'd extend the above theme to add a colors object for the default colors prop to read from, as well as a custom prop for dealing with fonts.
297 |
298 | ```js
299 | import defaultTheme from "subatomic/themes/default";
300 |
301 | export default {
302 | breakpoints: defaultTheme.breakpoints,
303 | space: defaultTheme.space,
304 | fontSizes: defaultTheme.fontSizes,
305 | fonts: {
306 | primary: 'avenir, -apple-system, BlinkMacSystemFont',
307 | monospace: '"SF Mono", "Roboto Mono", Menlo, monospace'
308 | },
309 | colors: {
310 | greens: ['#84e47b', '#11cc00', '#0da200']
311 | },
312 | props: {
313 | ...defaultTheme.props,
314 | // And then add any other custom props you want
315 | fontFamily: {
316 | themeKey: 'fonts',
317 | style: 'fontFamily'
318 | },
319 | }
320 | };
321 |
322 | // App
323 | import { ThemeProvider } from 'emotion-theming'
324 | import theme from './theme.js'
325 |
326 | const App = props => (
327 |
328 | {/* ... */}
329 |
330 | )
331 | ```
332 | Any theme you make available via `ThemeProvider` will override the default theme, so you can either extend (merge in the parts you want) or write your own custom theme.
333 |
334 | > Interested in helping us add new themes that mimic the look and utility classes of various UI kits like tachyons, bulma, etc? Feel free to add to our themes directory in a pull request.
335 |
336 |
337 |
338 | ## 💡 Inspiration
339 |
340 | Subatomic was inspired by these excellent projects:
341 |
342 | * [jsxstyle](https://github.com/smyte/jsxstyle)
343 | * [styled-system](https://github.com/jxnblk/styled-system)
344 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "subatomic",
3 | "requires": true,
4 | "lockfileVersion": 1,
5 | "dependencies": {
6 | "acorn": {
7 | "version": "5.5.3",
8 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
9 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
10 | "dev": true
11 | },
12 | "acorn-dynamic-import": {
13 | "version": "2.0.2",
14 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
15 | "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
16 | "dev": true,
17 | "requires": {
18 | "acorn": "4.0.13"
19 | },
20 | "dependencies": {
21 | "acorn": {
22 | "version": "4.0.13",
23 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
24 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
25 | "dev": true
26 | }
27 | }
28 | },
29 | "ajv": {
30 | "version": "6.5.0",
31 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz",
32 | "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==",
33 | "dev": true,
34 | "requires": {
35 | "fast-deep-equal": "2.0.1",
36 | "fast-json-stable-stringify": "2.0.0",
37 | "json-schema-traverse": "0.3.1",
38 | "uri-js": "4.2.1"
39 | }
40 | },
41 | "ajv-keywords": {
42 | "version": "3.2.0",
43 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
44 | "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
45 | "dev": true
46 | },
47 | "align-text": {
48 | "version": "0.1.4",
49 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
50 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
51 | "dev": true,
52 | "requires": {
53 | "kind-of": "3.2.2",
54 | "longest": "1.0.1",
55 | "repeat-string": "1.6.1"
56 | }
57 | },
58 | "ansi-regex": {
59 | "version": "2.1.1",
60 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
61 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
62 | "dev": true
63 | },
64 | "ansi-styles": {
65 | "version": "2.2.1",
66 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
67 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
68 | "dev": true
69 | },
70 | "anymatch": {
71 | "version": "2.0.0",
72 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
73 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
74 | "dev": true,
75 | "requires": {
76 | "micromatch": "3.1.10",
77 | "normalize-path": "2.1.1"
78 | }
79 | },
80 | "arr-diff": {
81 | "version": "4.0.0",
82 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
83 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
84 | "dev": true
85 | },
86 | "arr-flatten": {
87 | "version": "1.1.0",
88 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
89 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
90 | "dev": true
91 | },
92 | "arr-union": {
93 | "version": "3.1.0",
94 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
95 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
96 | "dev": true
97 | },
98 | "array-unique": {
99 | "version": "0.3.2",
100 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
101 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
102 | "dev": true
103 | },
104 | "asn1.js": {
105 | "version": "4.10.1",
106 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
107 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
108 | "dev": true,
109 | "requires": {
110 | "bn.js": "4.11.8",
111 | "inherits": "2.0.3",
112 | "minimalistic-assert": "1.0.1"
113 | }
114 | },
115 | "assert": {
116 | "version": "1.4.1",
117 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
118 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
119 | "dev": true,
120 | "requires": {
121 | "util": "0.10.3"
122 | }
123 | },
124 | "assign-symbols": {
125 | "version": "1.0.0",
126 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
127 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
128 | "dev": true
129 | },
130 | "async": {
131 | "version": "2.6.0",
132 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
133 | "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
134 | "dev": true,
135 | "requires": {
136 | "lodash": "4.17.10"
137 | }
138 | },
139 | "async-each": {
140 | "version": "1.0.1",
141 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
142 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
143 | "dev": true
144 | },
145 | "atob": {
146 | "version": "2.1.1",
147 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
148 | "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
149 | "dev": true
150 | },
151 | "babel-code-frame": {
152 | "version": "6.26.0",
153 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
154 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
155 | "dev": true,
156 | "requires": {
157 | "chalk": "1.1.3",
158 | "esutils": "2.0.2",
159 | "js-tokens": "3.0.2"
160 | }
161 | },
162 | "babel-core": {
163 | "version": "6.26.3",
164 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
165 | "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
166 | "dev": true,
167 | "requires": {
168 | "babel-code-frame": "6.26.0",
169 | "babel-generator": "6.26.1",
170 | "babel-helpers": "6.24.1",
171 | "babel-messages": "6.23.0",
172 | "babel-register": "6.26.0",
173 | "babel-runtime": "6.26.0",
174 | "babel-template": "6.26.0",
175 | "babel-traverse": "6.26.0",
176 | "babel-types": "6.26.0",
177 | "babylon": "6.18.0",
178 | "convert-source-map": "1.5.1",
179 | "debug": "2.6.9",
180 | "json5": "0.5.1",
181 | "lodash": "4.17.10",
182 | "minimatch": "3.0.4",
183 | "path-is-absolute": "1.0.1",
184 | "private": "0.1.8",
185 | "slash": "1.0.0",
186 | "source-map": "0.5.7"
187 | }
188 | },
189 | "babel-generator": {
190 | "version": "6.26.1",
191 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
192 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
193 | "dev": true,
194 | "requires": {
195 | "babel-messages": "6.23.0",
196 | "babel-runtime": "6.26.0",
197 | "babel-types": "6.26.0",
198 | "detect-indent": "4.0.0",
199 | "jsesc": "1.3.0",
200 | "lodash": "4.17.10",
201 | "source-map": "0.5.7",
202 | "trim-right": "1.0.1"
203 | }
204 | },
205 | "babel-helper-builder-react-jsx": {
206 | "version": "6.26.0",
207 | "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
208 | "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
209 | "dev": true,
210 | "requires": {
211 | "babel-runtime": "6.26.0",
212 | "babel-types": "6.26.0",
213 | "esutils": "2.0.2"
214 | }
215 | },
216 | "babel-helper-call-delegate": {
217 | "version": "6.24.1",
218 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
219 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
220 | "dev": true,
221 | "requires": {
222 | "babel-helper-hoist-variables": "6.24.1",
223 | "babel-runtime": "6.26.0",
224 | "babel-traverse": "6.26.0",
225 | "babel-types": "6.26.0"
226 | }
227 | },
228 | "babel-helper-define-map": {
229 | "version": "6.26.0",
230 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
231 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
232 | "dev": true,
233 | "requires": {
234 | "babel-helper-function-name": "6.24.1",
235 | "babel-runtime": "6.26.0",
236 | "babel-types": "6.26.0",
237 | "lodash": "4.17.10"
238 | }
239 | },
240 | "babel-helper-function-name": {
241 | "version": "6.24.1",
242 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
243 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
244 | "dev": true,
245 | "requires": {
246 | "babel-helper-get-function-arity": "6.24.1",
247 | "babel-runtime": "6.26.0",
248 | "babel-template": "6.26.0",
249 | "babel-traverse": "6.26.0",
250 | "babel-types": "6.26.0"
251 | }
252 | },
253 | "babel-helper-get-function-arity": {
254 | "version": "6.24.1",
255 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
256 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
257 | "dev": true,
258 | "requires": {
259 | "babel-runtime": "6.26.0",
260 | "babel-types": "6.26.0"
261 | }
262 | },
263 | "babel-helper-hoist-variables": {
264 | "version": "6.24.1",
265 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
266 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
267 | "dev": true,
268 | "requires": {
269 | "babel-runtime": "6.26.0",
270 | "babel-types": "6.26.0"
271 | }
272 | },
273 | "babel-helper-optimise-call-expression": {
274 | "version": "6.24.1",
275 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
276 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
277 | "dev": true,
278 | "requires": {
279 | "babel-runtime": "6.26.0",
280 | "babel-types": "6.26.0"
281 | }
282 | },
283 | "babel-helper-regex": {
284 | "version": "6.26.0",
285 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
286 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
287 | "dev": true,
288 | "requires": {
289 | "babel-runtime": "6.26.0",
290 | "babel-types": "6.26.0",
291 | "lodash": "4.17.10"
292 | }
293 | },
294 | "babel-helper-replace-supers": {
295 | "version": "6.24.1",
296 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
297 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
298 | "dev": true,
299 | "requires": {
300 | "babel-helper-optimise-call-expression": "6.24.1",
301 | "babel-messages": "6.23.0",
302 | "babel-runtime": "6.26.0",
303 | "babel-template": "6.26.0",
304 | "babel-traverse": "6.26.0",
305 | "babel-types": "6.26.0"
306 | }
307 | },
308 | "babel-helpers": {
309 | "version": "6.24.1",
310 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
311 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
312 | "dev": true,
313 | "requires": {
314 | "babel-runtime": "6.26.0",
315 | "babel-template": "6.26.0"
316 | }
317 | },
318 | "babel-loader": {
319 | "version": "7.1.4",
320 | "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz",
321 | "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==",
322 | "dev": true,
323 | "requires": {
324 | "find-cache-dir": "1.0.0",
325 | "loader-utils": "1.1.0",
326 | "mkdirp": "0.5.1"
327 | }
328 | },
329 | "babel-messages": {
330 | "version": "6.23.0",
331 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
332 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
333 | "dev": true,
334 | "requires": {
335 | "babel-runtime": "6.26.0"
336 | }
337 | },
338 | "babel-plugin-check-es2015-constants": {
339 | "version": "6.22.0",
340 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
341 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
342 | "dev": true,
343 | "requires": {
344 | "babel-runtime": "6.26.0"
345 | }
346 | },
347 | "babel-plugin-syntax-flow": {
348 | "version": "6.18.0",
349 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
350 | "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=",
351 | "dev": true
352 | },
353 | "babel-plugin-syntax-jsx": {
354 | "version": "6.18.0",
355 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
356 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
357 | "dev": true
358 | },
359 | "babel-plugin-syntax-object-rest-spread": {
360 | "version": "6.13.0",
361 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
362 | "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
363 | "dev": true
364 | },
365 | "babel-plugin-transform-es2015-arrow-functions": {
366 | "version": "6.22.0",
367 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
368 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
369 | "dev": true,
370 | "requires": {
371 | "babel-runtime": "6.26.0"
372 | }
373 | },
374 | "babel-plugin-transform-es2015-block-scoped-functions": {
375 | "version": "6.22.0",
376 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
377 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
378 | "dev": true,
379 | "requires": {
380 | "babel-runtime": "6.26.0"
381 | }
382 | },
383 | "babel-plugin-transform-es2015-block-scoping": {
384 | "version": "6.26.0",
385 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
386 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
387 | "dev": true,
388 | "requires": {
389 | "babel-runtime": "6.26.0",
390 | "babel-template": "6.26.0",
391 | "babel-traverse": "6.26.0",
392 | "babel-types": "6.26.0",
393 | "lodash": "4.17.10"
394 | }
395 | },
396 | "babel-plugin-transform-es2015-classes": {
397 | "version": "6.24.1",
398 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
399 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
400 | "dev": true,
401 | "requires": {
402 | "babel-helper-define-map": "6.26.0",
403 | "babel-helper-function-name": "6.24.1",
404 | "babel-helper-optimise-call-expression": "6.24.1",
405 | "babel-helper-replace-supers": "6.24.1",
406 | "babel-messages": "6.23.0",
407 | "babel-runtime": "6.26.0",
408 | "babel-template": "6.26.0",
409 | "babel-traverse": "6.26.0",
410 | "babel-types": "6.26.0"
411 | }
412 | },
413 | "babel-plugin-transform-es2015-computed-properties": {
414 | "version": "6.24.1",
415 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
416 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
417 | "dev": true,
418 | "requires": {
419 | "babel-runtime": "6.26.0",
420 | "babel-template": "6.26.0"
421 | }
422 | },
423 | "babel-plugin-transform-es2015-destructuring": {
424 | "version": "6.23.0",
425 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
426 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
427 | "dev": true,
428 | "requires": {
429 | "babel-runtime": "6.26.0"
430 | }
431 | },
432 | "babel-plugin-transform-es2015-duplicate-keys": {
433 | "version": "6.24.1",
434 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
435 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
436 | "dev": true,
437 | "requires": {
438 | "babel-runtime": "6.26.0",
439 | "babel-types": "6.26.0"
440 | }
441 | },
442 | "babel-plugin-transform-es2015-for-of": {
443 | "version": "6.23.0",
444 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
445 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
446 | "dev": true,
447 | "requires": {
448 | "babel-runtime": "6.26.0"
449 | }
450 | },
451 | "babel-plugin-transform-es2015-function-name": {
452 | "version": "6.24.1",
453 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
454 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
455 | "dev": true,
456 | "requires": {
457 | "babel-helper-function-name": "6.24.1",
458 | "babel-runtime": "6.26.0",
459 | "babel-types": "6.26.0"
460 | }
461 | },
462 | "babel-plugin-transform-es2015-literals": {
463 | "version": "6.22.0",
464 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
465 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
466 | "dev": true,
467 | "requires": {
468 | "babel-runtime": "6.26.0"
469 | }
470 | },
471 | "babel-plugin-transform-es2015-modules-amd": {
472 | "version": "6.24.1",
473 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
474 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
475 | "dev": true,
476 | "requires": {
477 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
478 | "babel-runtime": "6.26.0",
479 | "babel-template": "6.26.0"
480 | }
481 | },
482 | "babel-plugin-transform-es2015-modules-commonjs": {
483 | "version": "6.26.2",
484 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
485 | "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
486 | "dev": true,
487 | "requires": {
488 | "babel-plugin-transform-strict-mode": "6.24.1",
489 | "babel-runtime": "6.26.0",
490 | "babel-template": "6.26.0",
491 | "babel-types": "6.26.0"
492 | }
493 | },
494 | "babel-plugin-transform-es2015-modules-systemjs": {
495 | "version": "6.24.1",
496 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
497 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
498 | "dev": true,
499 | "requires": {
500 | "babel-helper-hoist-variables": "6.24.1",
501 | "babel-runtime": "6.26.0",
502 | "babel-template": "6.26.0"
503 | }
504 | },
505 | "babel-plugin-transform-es2015-modules-umd": {
506 | "version": "6.24.1",
507 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
508 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
509 | "dev": true,
510 | "requires": {
511 | "babel-plugin-transform-es2015-modules-amd": "6.24.1",
512 | "babel-runtime": "6.26.0",
513 | "babel-template": "6.26.0"
514 | }
515 | },
516 | "babel-plugin-transform-es2015-object-super": {
517 | "version": "6.24.1",
518 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
519 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
520 | "dev": true,
521 | "requires": {
522 | "babel-helper-replace-supers": "6.24.1",
523 | "babel-runtime": "6.26.0"
524 | }
525 | },
526 | "babel-plugin-transform-es2015-parameters": {
527 | "version": "6.24.1",
528 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
529 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
530 | "dev": true,
531 | "requires": {
532 | "babel-helper-call-delegate": "6.24.1",
533 | "babel-helper-get-function-arity": "6.24.1",
534 | "babel-runtime": "6.26.0",
535 | "babel-template": "6.26.0",
536 | "babel-traverse": "6.26.0",
537 | "babel-types": "6.26.0"
538 | }
539 | },
540 | "babel-plugin-transform-es2015-shorthand-properties": {
541 | "version": "6.24.1",
542 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
543 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
544 | "dev": true,
545 | "requires": {
546 | "babel-runtime": "6.26.0",
547 | "babel-types": "6.26.0"
548 | }
549 | },
550 | "babel-plugin-transform-es2015-spread": {
551 | "version": "6.22.0",
552 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
553 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
554 | "dev": true,
555 | "requires": {
556 | "babel-runtime": "6.26.0"
557 | }
558 | },
559 | "babel-plugin-transform-es2015-sticky-regex": {
560 | "version": "6.24.1",
561 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
562 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
563 | "dev": true,
564 | "requires": {
565 | "babel-helper-regex": "6.26.0",
566 | "babel-runtime": "6.26.0",
567 | "babel-types": "6.26.0"
568 | }
569 | },
570 | "babel-plugin-transform-es2015-template-literals": {
571 | "version": "6.22.0",
572 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
573 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
574 | "dev": true,
575 | "requires": {
576 | "babel-runtime": "6.26.0"
577 | }
578 | },
579 | "babel-plugin-transform-es2015-typeof-symbol": {
580 | "version": "6.23.0",
581 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
582 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
583 | "dev": true,
584 | "requires": {
585 | "babel-runtime": "6.26.0"
586 | }
587 | },
588 | "babel-plugin-transform-es2015-unicode-regex": {
589 | "version": "6.24.1",
590 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
591 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
592 | "dev": true,
593 | "requires": {
594 | "babel-helper-regex": "6.26.0",
595 | "babel-runtime": "6.26.0",
596 | "regexpu-core": "2.0.0"
597 | }
598 | },
599 | "babel-plugin-transform-flow-strip-types": {
600 | "version": "6.22.0",
601 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
602 | "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
603 | "dev": true,
604 | "requires": {
605 | "babel-plugin-syntax-flow": "6.18.0",
606 | "babel-runtime": "6.26.0"
607 | }
608 | },
609 | "babel-plugin-transform-object-rest-spread": {
610 | "version": "6.26.0",
611 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
612 | "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
613 | "dev": true,
614 | "requires": {
615 | "babel-plugin-syntax-object-rest-spread": "6.13.0",
616 | "babel-runtime": "6.26.0"
617 | }
618 | },
619 | "babel-plugin-transform-react-display-name": {
620 | "version": "6.25.0",
621 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
622 | "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
623 | "dev": true,
624 | "requires": {
625 | "babel-runtime": "6.26.0"
626 | }
627 | },
628 | "babel-plugin-transform-react-jsx": {
629 | "version": "6.24.1",
630 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
631 | "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
632 | "dev": true,
633 | "requires": {
634 | "babel-helper-builder-react-jsx": "6.26.0",
635 | "babel-plugin-syntax-jsx": "6.18.0",
636 | "babel-runtime": "6.26.0"
637 | }
638 | },
639 | "babel-plugin-transform-react-jsx-self": {
640 | "version": "6.22.0",
641 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz",
642 | "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=",
643 | "dev": true,
644 | "requires": {
645 | "babel-plugin-syntax-jsx": "6.18.0",
646 | "babel-runtime": "6.26.0"
647 | }
648 | },
649 | "babel-plugin-transform-react-jsx-source": {
650 | "version": "6.22.0",
651 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
652 | "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
653 | "dev": true,
654 | "requires": {
655 | "babel-plugin-syntax-jsx": "6.18.0",
656 | "babel-runtime": "6.26.0"
657 | }
658 | },
659 | "babel-plugin-transform-regenerator": {
660 | "version": "6.26.0",
661 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
662 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
663 | "dev": true,
664 | "requires": {
665 | "regenerator-transform": "0.10.1"
666 | }
667 | },
668 | "babel-plugin-transform-runtime": {
669 | "version": "6.23.0",
670 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz",
671 | "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=",
672 | "dev": true,
673 | "requires": {
674 | "babel-runtime": "6.26.0"
675 | }
676 | },
677 | "babel-plugin-transform-strict-mode": {
678 | "version": "6.24.1",
679 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
680 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
681 | "dev": true,
682 | "requires": {
683 | "babel-runtime": "6.26.0",
684 | "babel-types": "6.26.0"
685 | }
686 | },
687 | "babel-preset-es2015": {
688 | "version": "6.24.1",
689 | "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
690 | "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=",
691 | "dev": true,
692 | "requires": {
693 | "babel-plugin-check-es2015-constants": "6.22.0",
694 | "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
695 | "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
696 | "babel-plugin-transform-es2015-block-scoping": "6.26.0",
697 | "babel-plugin-transform-es2015-classes": "6.24.1",
698 | "babel-plugin-transform-es2015-computed-properties": "6.24.1",
699 | "babel-plugin-transform-es2015-destructuring": "6.23.0",
700 | "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
701 | "babel-plugin-transform-es2015-for-of": "6.23.0",
702 | "babel-plugin-transform-es2015-function-name": "6.24.1",
703 | "babel-plugin-transform-es2015-literals": "6.22.0",
704 | "babel-plugin-transform-es2015-modules-amd": "6.24.1",
705 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
706 | "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
707 | "babel-plugin-transform-es2015-modules-umd": "6.24.1",
708 | "babel-plugin-transform-es2015-object-super": "6.24.1",
709 | "babel-plugin-transform-es2015-parameters": "6.24.1",
710 | "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
711 | "babel-plugin-transform-es2015-spread": "6.22.0",
712 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
713 | "babel-plugin-transform-es2015-template-literals": "6.22.0",
714 | "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
715 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
716 | "babel-plugin-transform-regenerator": "6.26.0"
717 | }
718 | },
719 | "babel-preset-flow": {
720 | "version": "6.23.0",
721 | "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz",
722 | "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=",
723 | "dev": true,
724 | "requires": {
725 | "babel-plugin-transform-flow-strip-types": "6.22.0"
726 | }
727 | },
728 | "babel-preset-react": {
729 | "version": "6.24.1",
730 | "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz",
731 | "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=",
732 | "dev": true,
733 | "requires": {
734 | "babel-plugin-syntax-jsx": "6.18.0",
735 | "babel-plugin-transform-react-display-name": "6.25.0",
736 | "babel-plugin-transform-react-jsx": "6.24.1",
737 | "babel-plugin-transform-react-jsx-self": "6.22.0",
738 | "babel-plugin-transform-react-jsx-source": "6.22.0",
739 | "babel-preset-flow": "6.23.0"
740 | }
741 | },
742 | "babel-register": {
743 | "version": "6.26.0",
744 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
745 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
746 | "dev": true,
747 | "requires": {
748 | "babel-core": "6.26.3",
749 | "babel-runtime": "6.26.0",
750 | "core-js": "2.5.6",
751 | "home-or-tmp": "2.0.0",
752 | "lodash": "4.17.10",
753 | "mkdirp": "0.5.1",
754 | "source-map-support": "0.4.18"
755 | },
756 | "dependencies": {
757 | "core-js": {
758 | "version": "2.5.6",
759 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
760 | "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
761 | "dev": true
762 | }
763 | }
764 | },
765 | "babel-runtime": {
766 | "version": "6.26.0",
767 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
768 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
769 | "dev": true,
770 | "requires": {
771 | "core-js": "2.5.6",
772 | "regenerator-runtime": "0.11.1"
773 | },
774 | "dependencies": {
775 | "core-js": {
776 | "version": "2.5.6",
777 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
778 | "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
779 | "dev": true
780 | }
781 | }
782 | },
783 | "babel-template": {
784 | "version": "6.26.0",
785 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
786 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
787 | "dev": true,
788 | "requires": {
789 | "babel-runtime": "6.26.0",
790 | "babel-traverse": "6.26.0",
791 | "babel-types": "6.26.0",
792 | "babylon": "6.18.0",
793 | "lodash": "4.17.10"
794 | }
795 | },
796 | "babel-traverse": {
797 | "version": "6.26.0",
798 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
799 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
800 | "dev": true,
801 | "requires": {
802 | "babel-code-frame": "6.26.0",
803 | "babel-messages": "6.23.0",
804 | "babel-runtime": "6.26.0",
805 | "babel-types": "6.26.0",
806 | "babylon": "6.18.0",
807 | "debug": "2.6.9",
808 | "globals": "9.18.0",
809 | "invariant": "2.2.4",
810 | "lodash": "4.17.10"
811 | }
812 | },
813 | "babel-types": {
814 | "version": "6.26.0",
815 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
816 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
817 | "dev": true,
818 | "requires": {
819 | "babel-runtime": "6.26.0",
820 | "esutils": "2.0.2",
821 | "lodash": "4.17.10",
822 | "to-fast-properties": "1.0.3"
823 | }
824 | },
825 | "babylon": {
826 | "version": "6.18.0",
827 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
828 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
829 | "dev": true
830 | },
831 | "balanced-match": {
832 | "version": "1.0.0",
833 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
834 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
835 | "dev": true
836 | },
837 | "base": {
838 | "version": "0.11.2",
839 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
840 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
841 | "dev": true,
842 | "requires": {
843 | "cache-base": "1.0.1",
844 | "class-utils": "0.3.6",
845 | "component-emitter": "1.2.1",
846 | "define-property": "1.0.0",
847 | "isobject": "3.0.1",
848 | "mixin-deep": "1.3.1",
849 | "pascalcase": "0.1.1"
850 | },
851 | "dependencies": {
852 | "define-property": {
853 | "version": "1.0.0",
854 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
855 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
856 | "dev": true,
857 | "requires": {
858 | "is-descriptor": "1.0.2"
859 | }
860 | },
861 | "is-accessor-descriptor": {
862 | "version": "1.0.0",
863 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
864 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
865 | "dev": true,
866 | "requires": {
867 | "kind-of": "6.0.2"
868 | }
869 | },
870 | "is-data-descriptor": {
871 | "version": "1.0.0",
872 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
873 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
874 | "dev": true,
875 | "requires": {
876 | "kind-of": "6.0.2"
877 | }
878 | },
879 | "is-descriptor": {
880 | "version": "1.0.2",
881 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
882 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
883 | "dev": true,
884 | "requires": {
885 | "is-accessor-descriptor": "1.0.0",
886 | "is-data-descriptor": "1.0.0",
887 | "kind-of": "6.0.2"
888 | }
889 | },
890 | "kind-of": {
891 | "version": "6.0.2",
892 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
893 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
894 | "dev": true
895 | }
896 | }
897 | },
898 | "base64-js": {
899 | "version": "1.3.0",
900 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
901 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
902 | "dev": true
903 | },
904 | "big.js": {
905 | "version": "3.2.0",
906 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
907 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
908 | "dev": true
909 | },
910 | "binary-extensions": {
911 | "version": "1.11.0",
912 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
913 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
914 | "dev": true
915 | },
916 | "bn.js": {
917 | "version": "4.11.8",
918 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
919 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
920 | "dev": true
921 | },
922 | "brace-expansion": {
923 | "version": "1.1.11",
924 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
925 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
926 | "dev": true,
927 | "requires": {
928 | "balanced-match": "1.0.0",
929 | "concat-map": "0.0.1"
930 | }
931 | },
932 | "braces": {
933 | "version": "2.3.2",
934 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
935 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
936 | "dev": true,
937 | "requires": {
938 | "arr-flatten": "1.1.0",
939 | "array-unique": "0.3.2",
940 | "extend-shallow": "2.0.1",
941 | "fill-range": "4.0.0",
942 | "isobject": "3.0.1",
943 | "repeat-element": "1.1.2",
944 | "snapdragon": "0.8.2",
945 | "snapdragon-node": "2.1.1",
946 | "split-string": "3.1.0",
947 | "to-regex": "3.0.2"
948 | },
949 | "dependencies": {
950 | "extend-shallow": {
951 | "version": "2.0.1",
952 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
953 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
954 | "dev": true,
955 | "requires": {
956 | "is-extendable": "0.1.1"
957 | }
958 | }
959 | }
960 | },
961 | "brorand": {
962 | "version": "1.1.0",
963 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
964 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
965 | "dev": true
966 | },
967 | "browserify-aes": {
968 | "version": "1.2.0",
969 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
970 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
971 | "dev": true,
972 | "requires": {
973 | "buffer-xor": "1.0.3",
974 | "cipher-base": "1.0.4",
975 | "create-hash": "1.2.0",
976 | "evp_bytestokey": "1.0.3",
977 | "inherits": "2.0.3",
978 | "safe-buffer": "5.1.2"
979 | }
980 | },
981 | "browserify-cipher": {
982 | "version": "1.0.1",
983 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
984 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
985 | "dev": true,
986 | "requires": {
987 | "browserify-aes": "1.2.0",
988 | "browserify-des": "1.0.1",
989 | "evp_bytestokey": "1.0.3"
990 | }
991 | },
992 | "browserify-des": {
993 | "version": "1.0.1",
994 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
995 | "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
996 | "dev": true,
997 | "requires": {
998 | "cipher-base": "1.0.4",
999 | "des.js": "1.0.0",
1000 | "inherits": "2.0.3"
1001 | }
1002 | },
1003 | "browserify-rsa": {
1004 | "version": "4.0.1",
1005 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
1006 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
1007 | "dev": true,
1008 | "requires": {
1009 | "bn.js": "4.11.8",
1010 | "randombytes": "2.0.6"
1011 | }
1012 | },
1013 | "browserify-sign": {
1014 | "version": "4.0.4",
1015 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
1016 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
1017 | "dev": true,
1018 | "requires": {
1019 | "bn.js": "4.11.8",
1020 | "browserify-rsa": "4.0.1",
1021 | "create-hash": "1.2.0",
1022 | "create-hmac": "1.1.7",
1023 | "elliptic": "6.4.0",
1024 | "inherits": "2.0.3",
1025 | "parse-asn1": "5.1.1"
1026 | }
1027 | },
1028 | "browserify-zlib": {
1029 | "version": "0.2.0",
1030 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
1031 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
1032 | "dev": true,
1033 | "requires": {
1034 | "pako": "1.0.6"
1035 | }
1036 | },
1037 | "buffer": {
1038 | "version": "4.9.1",
1039 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
1040 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
1041 | "dev": true,
1042 | "requires": {
1043 | "base64-js": "1.3.0",
1044 | "ieee754": "1.1.11",
1045 | "isarray": "1.0.0"
1046 | }
1047 | },
1048 | "buffer-xor": {
1049 | "version": "1.0.3",
1050 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
1051 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
1052 | "dev": true
1053 | },
1054 | "builtin-modules": {
1055 | "version": "1.1.1",
1056 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
1057 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
1058 | "dev": true
1059 | },
1060 | "builtin-status-codes": {
1061 | "version": "3.0.0",
1062 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
1063 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
1064 | "dev": true
1065 | },
1066 | "cache-base": {
1067 | "version": "1.0.1",
1068 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
1069 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
1070 | "dev": true,
1071 | "requires": {
1072 | "collection-visit": "1.0.0",
1073 | "component-emitter": "1.2.1",
1074 | "get-value": "2.0.6",
1075 | "has-value": "1.0.0",
1076 | "isobject": "3.0.1",
1077 | "set-value": "2.0.0",
1078 | "to-object-path": "0.3.0",
1079 | "union-value": "1.0.0",
1080 | "unset-value": "1.0.0"
1081 | }
1082 | },
1083 | "camelcase": {
1084 | "version": "1.2.1",
1085 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
1086 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
1087 | "dev": true
1088 | },
1089 | "camelcase-css": {
1090 | "version": "2.0.0",
1091 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.0.tgz",
1092 | "integrity": "sha512-FnvdCC/TkM9eoypxeMPS41Vxu7moPmgsu37oeVxIhiXi8t0KrGGKCLaASkQ+/5tX4X9r/S8UDlV4Efz7VvHIRw==",
1093 | "dev": true
1094 | },
1095 | "center-align": {
1096 | "version": "0.1.3",
1097 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
1098 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
1099 | "dev": true,
1100 | "requires": {
1101 | "align-text": "0.1.4",
1102 | "lazy-cache": "1.0.4"
1103 | }
1104 | },
1105 | "chalk": {
1106 | "version": "1.1.3",
1107 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1108 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1109 | "dev": true,
1110 | "requires": {
1111 | "ansi-styles": "2.2.1",
1112 | "escape-string-regexp": "1.0.5",
1113 | "has-ansi": "2.0.0",
1114 | "strip-ansi": "3.0.1",
1115 | "supports-color": "2.0.0"
1116 | }
1117 | },
1118 | "chokidar": {
1119 | "version": "2.0.3",
1120 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz",
1121 | "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==",
1122 | "dev": true,
1123 | "requires": {
1124 | "anymatch": "2.0.0",
1125 | "async-each": "1.0.1",
1126 | "braces": "2.3.2",
1127 | "fsevents": "1.2.4",
1128 | "glob-parent": "3.1.0",
1129 | "inherits": "2.0.3",
1130 | "is-binary-path": "1.0.1",
1131 | "is-glob": "4.0.0",
1132 | "normalize-path": "2.1.1",
1133 | "path-is-absolute": "1.0.1",
1134 | "readdirp": "2.1.0",
1135 | "upath": "1.1.0"
1136 | }
1137 | },
1138 | "cipher-base": {
1139 | "version": "1.0.4",
1140 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
1141 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
1142 | "dev": true,
1143 | "requires": {
1144 | "inherits": "2.0.3",
1145 | "safe-buffer": "5.1.2"
1146 | }
1147 | },
1148 | "class-utils": {
1149 | "version": "0.3.6",
1150 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
1151 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
1152 | "dev": true,
1153 | "requires": {
1154 | "arr-union": "3.1.0",
1155 | "define-property": "0.2.5",
1156 | "isobject": "3.0.1",
1157 | "static-extend": "0.1.2"
1158 | },
1159 | "dependencies": {
1160 | "define-property": {
1161 | "version": "0.2.5",
1162 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1163 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1164 | "dev": true,
1165 | "requires": {
1166 | "is-descriptor": "0.1.6"
1167 | }
1168 | }
1169 | }
1170 | },
1171 | "cliui": {
1172 | "version": "2.1.0",
1173 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
1174 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
1175 | "dev": true,
1176 | "requires": {
1177 | "center-align": "0.1.3",
1178 | "right-align": "0.1.3",
1179 | "wordwrap": "0.0.2"
1180 | }
1181 | },
1182 | "code-point-at": {
1183 | "version": "1.1.0",
1184 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
1185 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
1186 | "dev": true
1187 | },
1188 | "collection-visit": {
1189 | "version": "1.0.0",
1190 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
1191 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
1192 | "dev": true,
1193 | "requires": {
1194 | "map-visit": "1.0.0",
1195 | "object-visit": "1.0.1"
1196 | }
1197 | },
1198 | "commondir": {
1199 | "version": "1.0.1",
1200 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1201 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
1202 | "dev": true
1203 | },
1204 | "component-emitter": {
1205 | "version": "1.2.1",
1206 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
1207 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
1208 | "dev": true
1209 | },
1210 | "concat-map": {
1211 | "version": "0.0.1",
1212 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1213 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1214 | "dev": true
1215 | },
1216 | "console-browserify": {
1217 | "version": "1.1.0",
1218 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
1219 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
1220 | "dev": true,
1221 | "requires": {
1222 | "date-now": "0.1.4"
1223 | }
1224 | },
1225 | "constants-browserify": {
1226 | "version": "1.0.0",
1227 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
1228 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
1229 | "dev": true
1230 | },
1231 | "convert-source-map": {
1232 | "version": "1.5.1",
1233 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
1234 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
1235 | "dev": true
1236 | },
1237 | "copy-descriptor": {
1238 | "version": "0.1.1",
1239 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
1240 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
1241 | "dev": true
1242 | },
1243 | "core-util-is": {
1244 | "version": "1.0.2",
1245 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1246 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1247 | "dev": true
1248 | },
1249 | "create-ecdh": {
1250 | "version": "4.0.3",
1251 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
1252 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
1253 | "dev": true,
1254 | "requires": {
1255 | "bn.js": "4.11.8",
1256 | "elliptic": "6.4.0"
1257 | }
1258 | },
1259 | "create-hash": {
1260 | "version": "1.2.0",
1261 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
1262 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
1263 | "dev": true,
1264 | "requires": {
1265 | "cipher-base": "1.0.4",
1266 | "inherits": "2.0.3",
1267 | "md5.js": "1.3.4",
1268 | "ripemd160": "2.0.2",
1269 | "sha.js": "2.4.11"
1270 | }
1271 | },
1272 | "create-hmac": {
1273 | "version": "1.1.7",
1274 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
1275 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
1276 | "dev": true,
1277 | "requires": {
1278 | "cipher-base": "1.0.4",
1279 | "create-hash": "1.2.0",
1280 | "inherits": "2.0.3",
1281 | "ripemd160": "2.0.2",
1282 | "safe-buffer": "5.1.2",
1283 | "sha.js": "2.4.11"
1284 | }
1285 | },
1286 | "cross-spawn": {
1287 | "version": "5.1.0",
1288 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
1289 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
1290 | "dev": true,
1291 | "requires": {
1292 | "lru-cache": "4.1.3",
1293 | "shebang-command": "1.2.0",
1294 | "which": "1.3.0"
1295 | }
1296 | },
1297 | "crypto-browserify": {
1298 | "version": "3.12.0",
1299 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
1300 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
1301 | "dev": true,
1302 | "requires": {
1303 | "browserify-cipher": "1.0.1",
1304 | "browserify-sign": "4.0.4",
1305 | "create-ecdh": "4.0.3",
1306 | "create-hash": "1.2.0",
1307 | "create-hmac": "1.1.7",
1308 | "diffie-hellman": "5.0.3",
1309 | "inherits": "2.0.3",
1310 | "pbkdf2": "3.0.16",
1311 | "public-encrypt": "4.0.2",
1312 | "randombytes": "2.0.6",
1313 | "randomfill": "1.0.4"
1314 | }
1315 | },
1316 | "d": {
1317 | "version": "1.0.0",
1318 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
1319 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
1320 | "dev": true,
1321 | "requires": {
1322 | "es5-ext": "0.10.42"
1323 | }
1324 | },
1325 | "date-now": {
1326 | "version": "0.1.4",
1327 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
1328 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
1329 | "dev": true
1330 | },
1331 | "debug": {
1332 | "version": "2.6.9",
1333 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1334 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1335 | "dev": true,
1336 | "requires": {
1337 | "ms": "2.0.0"
1338 | }
1339 | },
1340 | "decamelize": {
1341 | "version": "1.2.0",
1342 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1343 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1344 | "dev": true
1345 | },
1346 | "decode-uri-component": {
1347 | "version": "0.2.0",
1348 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
1349 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
1350 | "dev": true
1351 | },
1352 | "define-property": {
1353 | "version": "2.0.2",
1354 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
1355 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
1356 | "dev": true,
1357 | "requires": {
1358 | "is-descriptor": "1.0.2",
1359 | "isobject": "3.0.1"
1360 | },
1361 | "dependencies": {
1362 | "is-accessor-descriptor": {
1363 | "version": "1.0.0",
1364 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1365 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1366 | "dev": true,
1367 | "requires": {
1368 | "kind-of": "6.0.2"
1369 | }
1370 | },
1371 | "is-data-descriptor": {
1372 | "version": "1.0.0",
1373 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1374 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1375 | "dev": true,
1376 | "requires": {
1377 | "kind-of": "6.0.2"
1378 | }
1379 | },
1380 | "is-descriptor": {
1381 | "version": "1.0.2",
1382 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1383 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1384 | "dev": true,
1385 | "requires": {
1386 | "is-accessor-descriptor": "1.0.0",
1387 | "is-data-descriptor": "1.0.0",
1388 | "kind-of": "6.0.2"
1389 | }
1390 | },
1391 | "kind-of": {
1392 | "version": "6.0.2",
1393 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1394 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1395 | "dev": true
1396 | }
1397 | }
1398 | },
1399 | "des.js": {
1400 | "version": "1.0.0",
1401 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
1402 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
1403 | "dev": true,
1404 | "requires": {
1405 | "inherits": "2.0.3",
1406 | "minimalistic-assert": "1.0.1"
1407 | }
1408 | },
1409 | "detect-indent": {
1410 | "version": "4.0.0",
1411 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
1412 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
1413 | "dev": true,
1414 | "requires": {
1415 | "repeating": "2.0.1"
1416 | }
1417 | },
1418 | "diffie-hellman": {
1419 | "version": "5.0.3",
1420 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
1421 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
1422 | "dev": true,
1423 | "requires": {
1424 | "bn.js": "4.11.8",
1425 | "miller-rabin": "4.0.1",
1426 | "randombytes": "2.0.6"
1427 | }
1428 | },
1429 | "domain-browser": {
1430 | "version": "1.2.0",
1431 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
1432 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
1433 | "dev": true
1434 | },
1435 | "elliptic": {
1436 | "version": "6.4.0",
1437 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
1438 | "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
1439 | "dev": true,
1440 | "requires": {
1441 | "bn.js": "4.11.8",
1442 | "brorand": "1.1.0",
1443 | "hash.js": "1.1.3",
1444 | "hmac-drbg": "1.0.1",
1445 | "inherits": "2.0.3",
1446 | "minimalistic-assert": "1.0.1",
1447 | "minimalistic-crypto-utils": "1.0.1"
1448 | }
1449 | },
1450 | "emojis-list": {
1451 | "version": "2.1.0",
1452 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
1453 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
1454 | "dev": true
1455 | },
1456 | "enhanced-resolve": {
1457 | "version": "3.4.1",
1458 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
1459 | "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
1460 | "dev": true,
1461 | "requires": {
1462 | "graceful-fs": "4.1.11",
1463 | "memory-fs": "0.4.1",
1464 | "object-assign": "4.1.1",
1465 | "tapable": "0.2.8"
1466 | }
1467 | },
1468 | "errno": {
1469 | "version": "0.1.7",
1470 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
1471 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
1472 | "dev": true,
1473 | "requires": {
1474 | "prr": "1.0.1"
1475 | }
1476 | },
1477 | "error-ex": {
1478 | "version": "1.3.1",
1479 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
1480 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
1481 | "dev": true,
1482 | "requires": {
1483 | "is-arrayish": "0.2.1"
1484 | }
1485 | },
1486 | "es5-ext": {
1487 | "version": "0.10.42",
1488 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz",
1489 | "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==",
1490 | "dev": true,
1491 | "requires": {
1492 | "es6-iterator": "2.0.3",
1493 | "es6-symbol": "3.1.1",
1494 | "next-tick": "1.0.0"
1495 | }
1496 | },
1497 | "es6-iterator": {
1498 | "version": "2.0.3",
1499 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
1500 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
1501 | "dev": true,
1502 | "requires": {
1503 | "d": "1.0.0",
1504 | "es5-ext": "0.10.42",
1505 | "es6-symbol": "3.1.1"
1506 | }
1507 | },
1508 | "es6-map": {
1509 | "version": "0.1.5",
1510 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
1511 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
1512 | "dev": true,
1513 | "requires": {
1514 | "d": "1.0.0",
1515 | "es5-ext": "0.10.42",
1516 | "es6-iterator": "2.0.3",
1517 | "es6-set": "0.1.5",
1518 | "es6-symbol": "3.1.1",
1519 | "event-emitter": "0.3.5"
1520 | }
1521 | },
1522 | "es6-set": {
1523 | "version": "0.1.5",
1524 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
1525 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
1526 | "dev": true,
1527 | "requires": {
1528 | "d": "1.0.0",
1529 | "es5-ext": "0.10.42",
1530 | "es6-iterator": "2.0.3",
1531 | "es6-symbol": "3.1.1",
1532 | "event-emitter": "0.3.5"
1533 | }
1534 | },
1535 | "es6-symbol": {
1536 | "version": "3.1.1",
1537 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
1538 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
1539 | "dev": true,
1540 | "requires": {
1541 | "d": "1.0.0",
1542 | "es5-ext": "0.10.42"
1543 | }
1544 | },
1545 | "es6-weak-map": {
1546 | "version": "2.0.2",
1547 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
1548 | "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
1549 | "dev": true,
1550 | "requires": {
1551 | "d": "1.0.0",
1552 | "es5-ext": "0.10.42",
1553 | "es6-iterator": "2.0.3",
1554 | "es6-symbol": "3.1.1"
1555 | }
1556 | },
1557 | "escape-string-regexp": {
1558 | "version": "1.0.5",
1559 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1560 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1561 | "dev": true
1562 | },
1563 | "escope": {
1564 | "version": "3.6.0",
1565 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
1566 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
1567 | "dev": true,
1568 | "requires": {
1569 | "es6-map": "0.1.5",
1570 | "es6-weak-map": "2.0.2",
1571 | "esrecurse": "4.2.1",
1572 | "estraverse": "4.2.0"
1573 | }
1574 | },
1575 | "esrecurse": {
1576 | "version": "4.2.1",
1577 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1578 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1579 | "dev": true,
1580 | "requires": {
1581 | "estraverse": "4.2.0"
1582 | }
1583 | },
1584 | "estraverse": {
1585 | "version": "4.2.0",
1586 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
1587 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
1588 | "dev": true
1589 | },
1590 | "esutils": {
1591 | "version": "2.0.2",
1592 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
1593 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
1594 | "dev": true
1595 | },
1596 | "event-emitter": {
1597 | "version": "0.3.5",
1598 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
1599 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
1600 | "dev": true,
1601 | "requires": {
1602 | "d": "1.0.0",
1603 | "es5-ext": "0.10.42"
1604 | }
1605 | },
1606 | "events": {
1607 | "version": "1.1.1",
1608 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
1609 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
1610 | "dev": true
1611 | },
1612 | "evp_bytestokey": {
1613 | "version": "1.0.3",
1614 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1615 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1616 | "dev": true,
1617 | "requires": {
1618 | "md5.js": "1.3.4",
1619 | "safe-buffer": "5.1.2"
1620 | }
1621 | },
1622 | "execa": {
1623 | "version": "0.7.0",
1624 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
1625 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
1626 | "dev": true,
1627 | "requires": {
1628 | "cross-spawn": "5.1.0",
1629 | "get-stream": "3.0.0",
1630 | "is-stream": "1.1.0",
1631 | "npm-run-path": "2.0.2",
1632 | "p-finally": "1.0.0",
1633 | "signal-exit": "3.0.2",
1634 | "strip-eof": "1.0.0"
1635 | }
1636 | },
1637 | "expand-brackets": {
1638 | "version": "2.1.4",
1639 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
1640 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
1641 | "dev": true,
1642 | "requires": {
1643 | "debug": "2.6.9",
1644 | "define-property": "0.2.5",
1645 | "extend-shallow": "2.0.1",
1646 | "posix-character-classes": "0.1.1",
1647 | "regex-not": "1.0.2",
1648 | "snapdragon": "0.8.2",
1649 | "to-regex": "3.0.2"
1650 | },
1651 | "dependencies": {
1652 | "define-property": {
1653 | "version": "0.2.5",
1654 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1655 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1656 | "dev": true,
1657 | "requires": {
1658 | "is-descriptor": "0.1.6"
1659 | }
1660 | },
1661 | "extend-shallow": {
1662 | "version": "2.0.1",
1663 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1664 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1665 | "dev": true,
1666 | "requires": {
1667 | "is-extendable": "0.1.1"
1668 | }
1669 | }
1670 | }
1671 | },
1672 | "extend-shallow": {
1673 | "version": "3.0.2",
1674 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
1675 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
1676 | "dev": true,
1677 | "requires": {
1678 | "assign-symbols": "1.0.0",
1679 | "is-extendable": "1.0.1"
1680 | },
1681 | "dependencies": {
1682 | "is-extendable": {
1683 | "version": "1.0.1",
1684 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1685 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1686 | "dev": true,
1687 | "requires": {
1688 | "is-plain-object": "2.0.4"
1689 | }
1690 | }
1691 | }
1692 | },
1693 | "extglob": {
1694 | "version": "2.0.4",
1695 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
1696 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
1697 | "dev": true,
1698 | "requires": {
1699 | "array-unique": "0.3.2",
1700 | "define-property": "1.0.0",
1701 | "expand-brackets": "2.1.4",
1702 | "extend-shallow": "2.0.1",
1703 | "fragment-cache": "0.2.1",
1704 | "regex-not": "1.0.2",
1705 | "snapdragon": "0.8.2",
1706 | "to-regex": "3.0.2"
1707 | },
1708 | "dependencies": {
1709 | "define-property": {
1710 | "version": "1.0.0",
1711 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1712 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1713 | "dev": true,
1714 | "requires": {
1715 | "is-descriptor": "1.0.2"
1716 | }
1717 | },
1718 | "extend-shallow": {
1719 | "version": "2.0.1",
1720 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1721 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1722 | "dev": true,
1723 | "requires": {
1724 | "is-extendable": "0.1.1"
1725 | }
1726 | },
1727 | "is-accessor-descriptor": {
1728 | "version": "1.0.0",
1729 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1730 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1731 | "dev": true,
1732 | "requires": {
1733 | "kind-of": "6.0.2"
1734 | }
1735 | },
1736 | "is-data-descriptor": {
1737 | "version": "1.0.0",
1738 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1739 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1740 | "dev": true,
1741 | "requires": {
1742 | "kind-of": "6.0.2"
1743 | }
1744 | },
1745 | "is-descriptor": {
1746 | "version": "1.0.2",
1747 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1748 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1749 | "dev": true,
1750 | "requires": {
1751 | "is-accessor-descriptor": "1.0.0",
1752 | "is-data-descriptor": "1.0.0",
1753 | "kind-of": "6.0.2"
1754 | }
1755 | },
1756 | "kind-of": {
1757 | "version": "6.0.2",
1758 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1759 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1760 | "dev": true
1761 | }
1762 | }
1763 | },
1764 | "fast-deep-equal": {
1765 | "version": "2.0.1",
1766 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
1767 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
1768 | "dev": true
1769 | },
1770 | "fast-json-stable-stringify": {
1771 | "version": "2.0.0",
1772 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1773 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
1774 | "dev": true
1775 | },
1776 | "fill-range": {
1777 | "version": "4.0.0",
1778 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
1779 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
1780 | "dev": true,
1781 | "requires": {
1782 | "extend-shallow": "2.0.1",
1783 | "is-number": "3.0.0",
1784 | "repeat-string": "1.6.1",
1785 | "to-regex-range": "2.1.1"
1786 | },
1787 | "dependencies": {
1788 | "extend-shallow": {
1789 | "version": "2.0.1",
1790 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1791 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1792 | "dev": true,
1793 | "requires": {
1794 | "is-extendable": "0.1.1"
1795 | }
1796 | }
1797 | }
1798 | },
1799 | "find-cache-dir": {
1800 | "version": "1.0.0",
1801 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
1802 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
1803 | "dev": true,
1804 | "requires": {
1805 | "commondir": "1.0.1",
1806 | "make-dir": "1.3.0",
1807 | "pkg-dir": "2.0.0"
1808 | }
1809 | },
1810 | "find-up": {
1811 | "version": "2.1.0",
1812 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1813 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1814 | "dev": true,
1815 | "requires": {
1816 | "locate-path": "2.0.0"
1817 | }
1818 | },
1819 | "for-in": {
1820 | "version": "1.0.2",
1821 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1822 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1823 | "dev": true
1824 | },
1825 | "fragment-cache": {
1826 | "version": "0.2.1",
1827 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1828 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1829 | "dev": true,
1830 | "requires": {
1831 | "map-cache": "0.2.2"
1832 | }
1833 | },
1834 | "fsevents": {
1835 | "version": "1.2.4",
1836 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
1837 | "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
1838 | "dev": true,
1839 | "optional": true,
1840 | "requires": {
1841 | "nan": "2.10.0",
1842 | "node-pre-gyp": "0.10.0"
1843 | },
1844 | "dependencies": {
1845 | "abbrev": {
1846 | "version": "1.1.1",
1847 | "bundled": true,
1848 | "dev": true,
1849 | "optional": true
1850 | },
1851 | "ansi-regex": {
1852 | "version": "2.1.1",
1853 | "bundled": true,
1854 | "dev": true
1855 | },
1856 | "aproba": {
1857 | "version": "1.2.0",
1858 | "bundled": true,
1859 | "dev": true,
1860 | "optional": true
1861 | },
1862 | "are-we-there-yet": {
1863 | "version": "1.1.4",
1864 | "bundled": true,
1865 | "dev": true,
1866 | "optional": true,
1867 | "requires": {
1868 | "delegates": "1.0.0",
1869 | "readable-stream": "2.3.6"
1870 | }
1871 | },
1872 | "balanced-match": {
1873 | "version": "1.0.0",
1874 | "bundled": true,
1875 | "dev": true
1876 | },
1877 | "brace-expansion": {
1878 | "version": "1.1.11",
1879 | "bundled": true,
1880 | "dev": true,
1881 | "requires": {
1882 | "balanced-match": "1.0.0",
1883 | "concat-map": "0.0.1"
1884 | }
1885 | },
1886 | "chownr": {
1887 | "version": "1.0.1",
1888 | "bundled": true,
1889 | "dev": true,
1890 | "optional": true
1891 | },
1892 | "code-point-at": {
1893 | "version": "1.1.0",
1894 | "bundled": true,
1895 | "dev": true
1896 | },
1897 | "concat-map": {
1898 | "version": "0.0.1",
1899 | "bundled": true,
1900 | "dev": true
1901 | },
1902 | "console-control-strings": {
1903 | "version": "1.1.0",
1904 | "bundled": true,
1905 | "dev": true
1906 | },
1907 | "core-util-is": {
1908 | "version": "1.0.2",
1909 | "bundled": true,
1910 | "dev": true,
1911 | "optional": true
1912 | },
1913 | "debug": {
1914 | "version": "2.6.9",
1915 | "bundled": true,
1916 | "dev": true,
1917 | "optional": true,
1918 | "requires": {
1919 | "ms": "2.0.0"
1920 | }
1921 | },
1922 | "deep-extend": {
1923 | "version": "0.5.1",
1924 | "bundled": true,
1925 | "dev": true,
1926 | "optional": true
1927 | },
1928 | "delegates": {
1929 | "version": "1.0.0",
1930 | "bundled": true,
1931 | "dev": true,
1932 | "optional": true
1933 | },
1934 | "detect-libc": {
1935 | "version": "1.0.3",
1936 | "bundled": true,
1937 | "dev": true,
1938 | "optional": true
1939 | },
1940 | "fs-minipass": {
1941 | "version": "1.2.5",
1942 | "bundled": true,
1943 | "dev": true,
1944 | "optional": true,
1945 | "requires": {
1946 | "minipass": "2.2.4"
1947 | }
1948 | },
1949 | "fs.realpath": {
1950 | "version": "1.0.0",
1951 | "bundled": true,
1952 | "dev": true,
1953 | "optional": true
1954 | },
1955 | "gauge": {
1956 | "version": "2.7.4",
1957 | "bundled": true,
1958 | "dev": true,
1959 | "optional": true,
1960 | "requires": {
1961 | "aproba": "1.2.0",
1962 | "console-control-strings": "1.1.0",
1963 | "has-unicode": "2.0.1",
1964 | "object-assign": "4.1.1",
1965 | "signal-exit": "3.0.2",
1966 | "string-width": "1.0.2",
1967 | "strip-ansi": "3.0.1",
1968 | "wide-align": "1.1.2"
1969 | }
1970 | },
1971 | "glob": {
1972 | "version": "7.1.2",
1973 | "bundled": true,
1974 | "dev": true,
1975 | "optional": true,
1976 | "requires": {
1977 | "fs.realpath": "1.0.0",
1978 | "inflight": "1.0.6",
1979 | "inherits": "2.0.3",
1980 | "minimatch": "3.0.4",
1981 | "once": "1.4.0",
1982 | "path-is-absolute": "1.0.1"
1983 | }
1984 | },
1985 | "has-unicode": {
1986 | "version": "2.0.1",
1987 | "bundled": true,
1988 | "dev": true,
1989 | "optional": true
1990 | },
1991 | "iconv-lite": {
1992 | "version": "0.4.21",
1993 | "bundled": true,
1994 | "dev": true,
1995 | "optional": true,
1996 | "requires": {
1997 | "safer-buffer": "2.1.2"
1998 | }
1999 | },
2000 | "ignore-walk": {
2001 | "version": "3.0.1",
2002 | "bundled": true,
2003 | "dev": true,
2004 | "optional": true,
2005 | "requires": {
2006 | "minimatch": "3.0.4"
2007 | }
2008 | },
2009 | "inflight": {
2010 | "version": "1.0.6",
2011 | "bundled": true,
2012 | "dev": true,
2013 | "optional": 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.5",
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 | "isarray": {
2039 | "version": "1.0.0",
2040 | "bundled": true,
2041 | "dev": true,
2042 | "optional": true
2043 | },
2044 | "minimatch": {
2045 | "version": "3.0.4",
2046 | "bundled": true,
2047 | "dev": true,
2048 | "requires": {
2049 | "brace-expansion": "1.1.11"
2050 | }
2051 | },
2052 | "minimist": {
2053 | "version": "0.0.8",
2054 | "bundled": true,
2055 | "dev": true
2056 | },
2057 | "minipass": {
2058 | "version": "2.2.4",
2059 | "bundled": true,
2060 | "dev": true,
2061 | "requires": {
2062 | "safe-buffer": "5.1.1",
2063 | "yallist": "3.0.2"
2064 | }
2065 | },
2066 | "minizlib": {
2067 | "version": "1.1.0",
2068 | "bundled": true,
2069 | "dev": true,
2070 | "optional": true,
2071 | "requires": {
2072 | "minipass": "2.2.4"
2073 | }
2074 | },
2075 | "mkdirp": {
2076 | "version": "0.5.1",
2077 | "bundled": true,
2078 | "dev": true,
2079 | "requires": {
2080 | "minimist": "0.0.8"
2081 | }
2082 | },
2083 | "ms": {
2084 | "version": "2.0.0",
2085 | "bundled": true,
2086 | "dev": true,
2087 | "optional": true
2088 | },
2089 | "needle": {
2090 | "version": "2.2.0",
2091 | "bundled": true,
2092 | "dev": true,
2093 | "optional": true,
2094 | "requires": {
2095 | "debug": "2.6.9",
2096 | "iconv-lite": "0.4.21",
2097 | "sax": "1.2.4"
2098 | }
2099 | },
2100 | "node-pre-gyp": {
2101 | "version": "0.10.0",
2102 | "bundled": true,
2103 | "dev": true,
2104 | "optional": true,
2105 | "requires": {
2106 | "detect-libc": "1.0.3",
2107 | "mkdirp": "0.5.1",
2108 | "needle": "2.2.0",
2109 | "nopt": "4.0.1",
2110 | "npm-packlist": "1.1.10",
2111 | "npmlog": "4.1.2",
2112 | "rc": "1.2.7",
2113 | "rimraf": "2.6.2",
2114 | "semver": "5.5.0",
2115 | "tar": "4.4.1"
2116 | }
2117 | },
2118 | "nopt": {
2119 | "version": "4.0.1",
2120 | "bundled": true,
2121 | "dev": true,
2122 | "optional": true,
2123 | "requires": {
2124 | "abbrev": "1.1.1",
2125 | "osenv": "0.1.5"
2126 | }
2127 | },
2128 | "npm-bundled": {
2129 | "version": "1.0.3",
2130 | "bundled": true,
2131 | "dev": true,
2132 | "optional": true
2133 | },
2134 | "npm-packlist": {
2135 | "version": "1.1.10",
2136 | "bundled": true,
2137 | "dev": true,
2138 | "optional": true,
2139 | "requires": {
2140 | "ignore-walk": "3.0.1",
2141 | "npm-bundled": "1.0.3"
2142 | }
2143 | },
2144 | "npmlog": {
2145 | "version": "4.1.2",
2146 | "bundled": true,
2147 | "dev": true,
2148 | "optional": true,
2149 | "requires": {
2150 | "are-we-there-yet": "1.1.4",
2151 | "console-control-strings": "1.1.0",
2152 | "gauge": "2.7.4",
2153 | "set-blocking": "2.0.0"
2154 | }
2155 | },
2156 | "number-is-nan": {
2157 | "version": "1.0.1",
2158 | "bundled": true,
2159 | "dev": true
2160 | },
2161 | "object-assign": {
2162 | "version": "4.1.1",
2163 | "bundled": true,
2164 | "dev": true,
2165 | "optional": true
2166 | },
2167 | "once": {
2168 | "version": "1.4.0",
2169 | "bundled": true,
2170 | "dev": true,
2171 | "requires": {
2172 | "wrappy": "1.0.2"
2173 | }
2174 | },
2175 | "os-homedir": {
2176 | "version": "1.0.2",
2177 | "bundled": true,
2178 | "dev": true,
2179 | "optional": true
2180 | },
2181 | "os-tmpdir": {
2182 | "version": "1.0.2",
2183 | "bundled": true,
2184 | "dev": true,
2185 | "optional": true
2186 | },
2187 | "osenv": {
2188 | "version": "0.1.5",
2189 | "bundled": true,
2190 | "dev": true,
2191 | "optional": true,
2192 | "requires": {
2193 | "os-homedir": "1.0.2",
2194 | "os-tmpdir": "1.0.2"
2195 | }
2196 | },
2197 | "path-is-absolute": {
2198 | "version": "1.0.1",
2199 | "bundled": true,
2200 | "dev": true,
2201 | "optional": true
2202 | },
2203 | "process-nextick-args": {
2204 | "version": "2.0.0",
2205 | "bundled": true,
2206 | "dev": true,
2207 | "optional": true
2208 | },
2209 | "rc": {
2210 | "version": "1.2.7",
2211 | "bundled": true,
2212 | "dev": true,
2213 | "optional": true,
2214 | "requires": {
2215 | "deep-extend": "0.5.1",
2216 | "ini": "1.3.5",
2217 | "minimist": "1.2.0",
2218 | "strip-json-comments": "2.0.1"
2219 | },
2220 | "dependencies": {
2221 | "minimist": {
2222 | "version": "1.2.0",
2223 | "bundled": true,
2224 | "dev": true,
2225 | "optional": true
2226 | }
2227 | }
2228 | },
2229 | "readable-stream": {
2230 | "version": "2.3.6",
2231 | "bundled": true,
2232 | "dev": true,
2233 | "optional": true,
2234 | "requires": {
2235 | "core-util-is": "1.0.2",
2236 | "inherits": "2.0.3",
2237 | "isarray": "1.0.0",
2238 | "process-nextick-args": "2.0.0",
2239 | "safe-buffer": "5.1.1",
2240 | "string_decoder": "1.1.1",
2241 | "util-deprecate": "1.0.2"
2242 | }
2243 | },
2244 | "rimraf": {
2245 | "version": "2.6.2",
2246 | "bundled": true,
2247 | "dev": true,
2248 | "optional": true,
2249 | "requires": {
2250 | "glob": "7.1.2"
2251 | }
2252 | },
2253 | "safe-buffer": {
2254 | "version": "5.1.1",
2255 | "bundled": true,
2256 | "dev": true
2257 | },
2258 | "safer-buffer": {
2259 | "version": "2.1.2",
2260 | "bundled": true,
2261 | "dev": true,
2262 | "optional": true
2263 | },
2264 | "sax": {
2265 | "version": "1.2.4",
2266 | "bundled": true,
2267 | "dev": true,
2268 | "optional": true
2269 | },
2270 | "semver": {
2271 | "version": "5.5.0",
2272 | "bundled": true,
2273 | "dev": true,
2274 | "optional": true
2275 | },
2276 | "set-blocking": {
2277 | "version": "2.0.0",
2278 | "bundled": true,
2279 | "dev": true,
2280 | "optional": true
2281 | },
2282 | "signal-exit": {
2283 | "version": "3.0.2",
2284 | "bundled": true,
2285 | "dev": true,
2286 | "optional": true
2287 | },
2288 | "string_decoder": {
2289 | "version": "1.1.1",
2290 | "bundled": true,
2291 | "dev": true,
2292 | "optional": true,
2293 | "requires": {
2294 | "safe-buffer": "5.1.1"
2295 | }
2296 | },
2297 | "string-width": {
2298 | "version": "1.0.2",
2299 | "bundled": true,
2300 | "dev": true,
2301 | "requires": {
2302 | "code-point-at": "1.1.0",
2303 | "is-fullwidth-code-point": "1.0.0",
2304 | "strip-ansi": "3.0.1"
2305 | }
2306 | },
2307 | "strip-ansi": {
2308 | "version": "3.0.1",
2309 | "bundled": true,
2310 | "dev": true,
2311 | "requires": {
2312 | "ansi-regex": "2.1.1"
2313 | }
2314 | },
2315 | "strip-json-comments": {
2316 | "version": "2.0.1",
2317 | "bundled": true,
2318 | "dev": true,
2319 | "optional": true
2320 | },
2321 | "tar": {
2322 | "version": "4.4.1",
2323 | "bundled": true,
2324 | "dev": true,
2325 | "optional": true,
2326 | "requires": {
2327 | "chownr": "1.0.1",
2328 | "fs-minipass": "1.2.5",
2329 | "minipass": "2.2.4",
2330 | "minizlib": "1.1.0",
2331 | "mkdirp": "0.5.1",
2332 | "safe-buffer": "5.1.1",
2333 | "yallist": "3.0.2"
2334 | }
2335 | },
2336 | "util-deprecate": {
2337 | "version": "1.0.2",
2338 | "bundled": true,
2339 | "dev": true,
2340 | "optional": true
2341 | },
2342 | "wide-align": {
2343 | "version": "1.1.2",
2344 | "bundled": true,
2345 | "dev": true,
2346 | "optional": true,
2347 | "requires": {
2348 | "string-width": "1.0.2"
2349 | }
2350 | },
2351 | "wrappy": {
2352 | "version": "1.0.2",
2353 | "bundled": true,
2354 | "dev": true
2355 | },
2356 | "yallist": {
2357 | "version": "3.0.2",
2358 | "bundled": true,
2359 | "dev": true
2360 | }
2361 | }
2362 | },
2363 | "get-caller-file": {
2364 | "version": "1.0.2",
2365 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
2366 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
2367 | "dev": true
2368 | },
2369 | "get-stream": {
2370 | "version": "3.0.0",
2371 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
2372 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
2373 | "dev": true
2374 | },
2375 | "get-value": {
2376 | "version": "2.0.6",
2377 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
2378 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
2379 | "dev": true
2380 | },
2381 | "glob-parent": {
2382 | "version": "3.1.0",
2383 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
2384 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
2385 | "dev": true,
2386 | "requires": {
2387 | "is-glob": "3.1.0",
2388 | "path-dirname": "1.0.2"
2389 | },
2390 | "dependencies": {
2391 | "is-glob": {
2392 | "version": "3.1.0",
2393 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
2394 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
2395 | "dev": true,
2396 | "requires": {
2397 | "is-extglob": "2.1.1"
2398 | }
2399 | }
2400 | }
2401 | },
2402 | "globals": {
2403 | "version": "9.18.0",
2404 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
2405 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
2406 | "dev": true
2407 | },
2408 | "graceful-fs": {
2409 | "version": "4.1.11",
2410 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2411 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
2412 | "dev": true
2413 | },
2414 | "has-ansi": {
2415 | "version": "2.0.0",
2416 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
2417 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
2418 | "dev": true,
2419 | "requires": {
2420 | "ansi-regex": "2.1.1"
2421 | }
2422 | },
2423 | "has-flag": {
2424 | "version": "2.0.0",
2425 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
2426 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
2427 | "dev": true
2428 | },
2429 | "has-value": {
2430 | "version": "1.0.0",
2431 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
2432 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
2433 | "dev": true,
2434 | "requires": {
2435 | "get-value": "2.0.6",
2436 | "has-values": "1.0.0",
2437 | "isobject": "3.0.1"
2438 | }
2439 | },
2440 | "has-values": {
2441 | "version": "1.0.0",
2442 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
2443 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
2444 | "dev": true,
2445 | "requires": {
2446 | "is-number": "3.0.0",
2447 | "kind-of": "4.0.0"
2448 | },
2449 | "dependencies": {
2450 | "kind-of": {
2451 | "version": "4.0.0",
2452 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
2453 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
2454 | "dev": true,
2455 | "requires": {
2456 | "is-buffer": "1.1.6"
2457 | }
2458 | }
2459 | }
2460 | },
2461 | "hash-base": {
2462 | "version": "3.0.4",
2463 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
2464 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
2465 | "dev": true,
2466 | "requires": {
2467 | "inherits": "2.0.3",
2468 | "safe-buffer": "5.1.2"
2469 | }
2470 | },
2471 | "hash.js": {
2472 | "version": "1.1.3",
2473 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
2474 | "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
2475 | "dev": true,
2476 | "requires": {
2477 | "inherits": "2.0.3",
2478 | "minimalistic-assert": "1.0.1"
2479 | }
2480 | },
2481 | "hmac-drbg": {
2482 | "version": "1.0.1",
2483 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
2484 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
2485 | "dev": true,
2486 | "requires": {
2487 | "hash.js": "1.1.3",
2488 | "minimalistic-assert": "1.0.1",
2489 | "minimalistic-crypto-utils": "1.0.1"
2490 | }
2491 | },
2492 | "home-or-tmp": {
2493 | "version": "2.0.0",
2494 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
2495 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
2496 | "dev": true,
2497 | "requires": {
2498 | "os-homedir": "1.0.2",
2499 | "os-tmpdir": "1.0.2"
2500 | }
2501 | },
2502 | "hosted-git-info": {
2503 | "version": "2.6.0",
2504 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
2505 | "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
2506 | "dev": true
2507 | },
2508 | "html-element-attributes": {
2509 | "version": "1.3.1",
2510 | "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz",
2511 | "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==",
2512 | "dev": true
2513 | },
2514 | "https-browserify": {
2515 | "version": "1.0.0",
2516 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
2517 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
2518 | "dev": true
2519 | },
2520 | "ieee754": {
2521 | "version": "1.1.11",
2522 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz",
2523 | "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==",
2524 | "dev": true
2525 | },
2526 | "indexof": {
2527 | "version": "0.0.1",
2528 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
2529 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
2530 | "dev": true
2531 | },
2532 | "inherits": {
2533 | "version": "2.0.3",
2534 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2535 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
2536 | "dev": true
2537 | },
2538 | "interpret": {
2539 | "version": "1.1.0",
2540 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
2541 | "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
2542 | "dev": true
2543 | },
2544 | "invariant": {
2545 | "version": "2.2.4",
2546 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
2547 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
2548 | "dev": true,
2549 | "requires": {
2550 | "loose-envify": "1.3.1"
2551 | }
2552 | },
2553 | "invert-kv": {
2554 | "version": "1.0.0",
2555 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
2556 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
2557 | "dev": true
2558 | },
2559 | "is-accessor-descriptor": {
2560 | "version": "0.1.6",
2561 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
2562 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
2563 | "dev": true,
2564 | "requires": {
2565 | "kind-of": "3.2.2"
2566 | }
2567 | },
2568 | "is-arrayish": {
2569 | "version": "0.2.1",
2570 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
2571 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
2572 | "dev": true
2573 | },
2574 | "is-binary-path": {
2575 | "version": "1.0.1",
2576 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
2577 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
2578 | "dev": true,
2579 | "requires": {
2580 | "binary-extensions": "1.11.0"
2581 | }
2582 | },
2583 | "is-buffer": {
2584 | "version": "1.1.6",
2585 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
2586 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
2587 | "dev": true
2588 | },
2589 | "is-builtin-module": {
2590 | "version": "1.0.0",
2591 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
2592 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
2593 | "dev": true,
2594 | "requires": {
2595 | "builtin-modules": "1.1.1"
2596 | }
2597 | },
2598 | "is-data-descriptor": {
2599 | "version": "0.1.4",
2600 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
2601 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
2602 | "dev": true,
2603 | "requires": {
2604 | "kind-of": "3.2.2"
2605 | }
2606 | },
2607 | "is-descriptor": {
2608 | "version": "0.1.6",
2609 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
2610 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
2611 | "dev": true,
2612 | "requires": {
2613 | "is-accessor-descriptor": "0.1.6",
2614 | "is-data-descriptor": "0.1.4",
2615 | "kind-of": "5.1.0"
2616 | },
2617 | "dependencies": {
2618 | "kind-of": {
2619 | "version": "5.1.0",
2620 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
2621 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
2622 | "dev": true
2623 | }
2624 | }
2625 | },
2626 | "is-extendable": {
2627 | "version": "0.1.1",
2628 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
2629 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
2630 | "dev": true
2631 | },
2632 | "is-extglob": {
2633 | "version": "2.1.1",
2634 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2635 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2636 | "dev": true
2637 | },
2638 | "is-finite": {
2639 | "version": "1.0.2",
2640 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
2641 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
2642 | "dev": true,
2643 | "requires": {
2644 | "number-is-nan": "1.0.1"
2645 | }
2646 | },
2647 | "is-fullwidth-code-point": {
2648 | "version": "1.0.0",
2649 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
2650 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
2651 | "dev": true,
2652 | "requires": {
2653 | "number-is-nan": "1.0.1"
2654 | }
2655 | },
2656 | "is-glob": {
2657 | "version": "4.0.0",
2658 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
2659 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
2660 | "dev": true,
2661 | "requires": {
2662 | "is-extglob": "2.1.1"
2663 | }
2664 | },
2665 | "is-number": {
2666 | "version": "3.0.0",
2667 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2668 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2669 | "dev": true,
2670 | "requires": {
2671 | "kind-of": "3.2.2"
2672 | }
2673 | },
2674 | "is-odd": {
2675 | "version": "2.0.0",
2676 | "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
2677 | "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
2678 | "dev": true,
2679 | "requires": {
2680 | "is-number": "4.0.0"
2681 | },
2682 | "dependencies": {
2683 | "is-number": {
2684 | "version": "4.0.0",
2685 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
2686 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
2687 | "dev": true
2688 | }
2689 | }
2690 | },
2691 | "is-plain-object": {
2692 | "version": "2.0.4",
2693 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
2694 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
2695 | "dev": true,
2696 | "requires": {
2697 | "isobject": "3.0.1"
2698 | }
2699 | },
2700 | "is-stream": {
2701 | "version": "1.1.0",
2702 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
2703 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
2704 | "dev": true
2705 | },
2706 | "is-windows": {
2707 | "version": "1.0.2",
2708 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
2709 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
2710 | "dev": true
2711 | },
2712 | "isarray": {
2713 | "version": "1.0.0",
2714 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2715 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2716 | "dev": true
2717 | },
2718 | "isexe": {
2719 | "version": "2.0.0",
2720 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2721 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2722 | "dev": true
2723 | },
2724 | "isobject": {
2725 | "version": "3.0.1",
2726 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
2727 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
2728 | "dev": true
2729 | },
2730 | "js-tokens": {
2731 | "version": "3.0.2",
2732 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
2733 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
2734 | "dev": true
2735 | },
2736 | "jsesc": {
2737 | "version": "1.3.0",
2738 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
2739 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
2740 | "dev": true
2741 | },
2742 | "json-loader": {
2743 | "version": "0.5.7",
2744 | "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
2745 | "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
2746 | "dev": true
2747 | },
2748 | "json-schema-traverse": {
2749 | "version": "0.3.1",
2750 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
2751 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
2752 | "dev": true
2753 | },
2754 | "json5": {
2755 | "version": "0.5.1",
2756 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
2757 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
2758 | "dev": true
2759 | },
2760 | "kind-of": {
2761 | "version": "3.2.2",
2762 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2763 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2764 | "dev": true,
2765 | "requires": {
2766 | "is-buffer": "1.1.6"
2767 | }
2768 | },
2769 | "known-css-properties": {
2770 | "version": "0.6.1",
2771 | "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.6.1.tgz",
2772 | "integrity": "sha512-nQRpMcHm1cQ6gmztdvLcIvxocznSMqH/y6XtERrWrHaymOYdDGroRqetJvJycxGEr1aakXiigDgn7JnzuXlk6A==",
2773 | "dev": true
2774 | },
2775 | "lazy-cache": {
2776 | "version": "1.0.4",
2777 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
2778 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
2779 | "dev": true
2780 | },
2781 | "lcid": {
2782 | "version": "1.0.0",
2783 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
2784 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
2785 | "dev": true,
2786 | "requires": {
2787 | "invert-kv": "1.0.0"
2788 | }
2789 | },
2790 | "load-json-file": {
2791 | "version": "2.0.0",
2792 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
2793 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
2794 | "dev": true,
2795 | "requires": {
2796 | "graceful-fs": "4.1.11",
2797 | "parse-json": "2.2.0",
2798 | "pify": "2.3.0",
2799 | "strip-bom": "3.0.0"
2800 | },
2801 | "dependencies": {
2802 | "pify": {
2803 | "version": "2.3.0",
2804 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2805 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2806 | "dev": true
2807 | }
2808 | }
2809 | },
2810 | "loader-runner": {
2811 | "version": "2.3.0",
2812 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
2813 | "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
2814 | "dev": true
2815 | },
2816 | "loader-utils": {
2817 | "version": "1.1.0",
2818 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
2819 | "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
2820 | "dev": true,
2821 | "requires": {
2822 | "big.js": "3.2.0",
2823 | "emojis-list": "2.1.0",
2824 | "json5": "0.5.1"
2825 | }
2826 | },
2827 | "locate-path": {
2828 | "version": "2.0.0",
2829 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2830 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2831 | "dev": true,
2832 | "requires": {
2833 | "p-locate": "2.0.0",
2834 | "path-exists": "3.0.0"
2835 | }
2836 | },
2837 | "lodash": {
2838 | "version": "4.17.10",
2839 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
2840 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
2841 | "dev": true
2842 | },
2843 | "longest": {
2844 | "version": "1.0.1",
2845 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
2846 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
2847 | "dev": true
2848 | },
2849 | "loose-envify": {
2850 | "version": "1.3.1",
2851 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
2852 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
2853 | "dev": true,
2854 | "requires": {
2855 | "js-tokens": "3.0.2"
2856 | }
2857 | },
2858 | "lru-cache": {
2859 | "version": "4.1.3",
2860 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
2861 | "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
2862 | "dev": true,
2863 | "requires": {
2864 | "pseudomap": "1.0.2",
2865 | "yallist": "2.1.2"
2866 | }
2867 | },
2868 | "make-dir": {
2869 | "version": "1.3.0",
2870 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
2871 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
2872 | "dev": true,
2873 | "requires": {
2874 | "pify": "3.0.0"
2875 | }
2876 | },
2877 | "map-cache": {
2878 | "version": "0.2.2",
2879 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
2880 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
2881 | "dev": true
2882 | },
2883 | "map-visit": {
2884 | "version": "1.0.0",
2885 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
2886 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
2887 | "dev": true,
2888 | "requires": {
2889 | "object-visit": "1.0.1"
2890 | }
2891 | },
2892 | "md5.js": {
2893 | "version": "1.3.4",
2894 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
2895 | "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
2896 | "dev": true,
2897 | "requires": {
2898 | "hash-base": "3.0.4",
2899 | "inherits": "2.0.3"
2900 | }
2901 | },
2902 | "mem": {
2903 | "version": "1.1.0",
2904 | "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
2905 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
2906 | "dev": true,
2907 | "requires": {
2908 | "mimic-fn": "1.2.0"
2909 | }
2910 | },
2911 | "memory-fs": {
2912 | "version": "0.4.1",
2913 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
2914 | "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
2915 | "dev": true,
2916 | "requires": {
2917 | "errno": "0.1.7",
2918 | "readable-stream": "2.3.6"
2919 | }
2920 | },
2921 | "micromatch": {
2922 | "version": "3.1.10",
2923 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
2924 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
2925 | "dev": true,
2926 | "requires": {
2927 | "arr-diff": "4.0.0",
2928 | "array-unique": "0.3.2",
2929 | "braces": "2.3.2",
2930 | "define-property": "2.0.2",
2931 | "extend-shallow": "3.0.2",
2932 | "extglob": "2.0.4",
2933 | "fragment-cache": "0.2.1",
2934 | "kind-of": "6.0.2",
2935 | "nanomatch": "1.2.9",
2936 | "object.pick": "1.3.0",
2937 | "regex-not": "1.0.2",
2938 | "snapdragon": "0.8.2",
2939 | "to-regex": "3.0.2"
2940 | },
2941 | "dependencies": {
2942 | "kind-of": {
2943 | "version": "6.0.2",
2944 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
2945 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
2946 | "dev": true
2947 | }
2948 | }
2949 | },
2950 | "miller-rabin": {
2951 | "version": "4.0.1",
2952 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
2953 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
2954 | "dev": true,
2955 | "requires": {
2956 | "bn.js": "4.11.8",
2957 | "brorand": "1.1.0"
2958 | }
2959 | },
2960 | "mimic-fn": {
2961 | "version": "1.2.0",
2962 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
2963 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
2964 | "dev": true
2965 | },
2966 | "minimalistic-assert": {
2967 | "version": "1.0.1",
2968 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
2969 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
2970 | "dev": true
2971 | },
2972 | "minimalistic-crypto-utils": {
2973 | "version": "1.0.1",
2974 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
2975 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
2976 | "dev": true
2977 | },
2978 | "minimatch": {
2979 | "version": "3.0.4",
2980 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2981 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2982 | "dev": true,
2983 | "requires": {
2984 | "brace-expansion": "1.1.11"
2985 | }
2986 | },
2987 | "minimist": {
2988 | "version": "0.0.8",
2989 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2990 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2991 | "dev": true
2992 | },
2993 | "mixin-deep": {
2994 | "version": "1.3.1",
2995 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
2996 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
2997 | "dev": true,
2998 | "requires": {
2999 | "for-in": "1.0.2",
3000 | "is-extendable": "1.0.1"
3001 | },
3002 | "dependencies": {
3003 | "is-extendable": {
3004 | "version": "1.0.1",
3005 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
3006 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
3007 | "dev": true,
3008 | "requires": {
3009 | "is-plain-object": "2.0.4"
3010 | }
3011 | }
3012 | }
3013 | },
3014 | "mkdirp": {
3015 | "version": "0.5.1",
3016 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3017 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
3018 | "dev": true,
3019 | "requires": {
3020 | "minimist": "0.0.8"
3021 | }
3022 | },
3023 | "ms": {
3024 | "version": "2.0.0",
3025 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3026 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
3027 | "dev": true
3028 | },
3029 | "nan": {
3030 | "version": "2.10.0",
3031 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
3032 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
3033 | "dev": true,
3034 | "optional": true
3035 | },
3036 | "nanomatch": {
3037 | "version": "1.2.9",
3038 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
3039 | "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
3040 | "dev": true,
3041 | "requires": {
3042 | "arr-diff": "4.0.0",
3043 | "array-unique": "0.3.2",
3044 | "define-property": "2.0.2",
3045 | "extend-shallow": "3.0.2",
3046 | "fragment-cache": "0.2.1",
3047 | "is-odd": "2.0.0",
3048 | "is-windows": "1.0.2",
3049 | "kind-of": "6.0.2",
3050 | "object.pick": "1.3.0",
3051 | "regex-not": "1.0.2",
3052 | "snapdragon": "0.8.2",
3053 | "to-regex": "3.0.2"
3054 | },
3055 | "dependencies": {
3056 | "kind-of": {
3057 | "version": "6.0.2",
3058 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
3059 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
3060 | "dev": true
3061 | }
3062 | }
3063 | },
3064 | "neo-async": {
3065 | "version": "2.5.1",
3066 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz",
3067 | "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==",
3068 | "dev": true
3069 | },
3070 | "next-tick": {
3071 | "version": "1.0.0",
3072 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
3073 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
3074 | "dev": true
3075 | },
3076 | "node-libs-browser": {
3077 | "version": "2.1.0",
3078 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
3079 | "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
3080 | "dev": true,
3081 | "requires": {
3082 | "assert": "1.4.1",
3083 | "browserify-zlib": "0.2.0",
3084 | "buffer": "4.9.1",
3085 | "console-browserify": "1.1.0",
3086 | "constants-browserify": "1.0.0",
3087 | "crypto-browserify": "3.12.0",
3088 | "domain-browser": "1.2.0",
3089 | "events": "1.1.1",
3090 | "https-browserify": "1.0.0",
3091 | "os-browserify": "0.3.0",
3092 | "path-browserify": "0.0.0",
3093 | "process": "0.11.10",
3094 | "punycode": "1.4.1",
3095 | "querystring-es3": "0.2.1",
3096 | "readable-stream": "2.3.6",
3097 | "stream-browserify": "2.0.1",
3098 | "stream-http": "2.8.2",
3099 | "string_decoder": "1.1.1",
3100 | "timers-browserify": "2.0.10",
3101 | "tty-browserify": "0.0.0",
3102 | "url": "0.11.0",
3103 | "util": "0.10.3",
3104 | "vm-browserify": "0.0.4"
3105 | },
3106 | "dependencies": {
3107 | "punycode": {
3108 | "version": "1.4.1",
3109 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
3110 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
3111 | "dev": true
3112 | }
3113 | }
3114 | },
3115 | "normalize-package-data": {
3116 | "version": "2.4.0",
3117 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
3118 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
3119 | "dev": true,
3120 | "requires": {
3121 | "hosted-git-info": "2.6.0",
3122 | "is-builtin-module": "1.0.0",
3123 | "semver": "5.5.0",
3124 | "validate-npm-package-license": "3.0.3"
3125 | }
3126 | },
3127 | "normalize-path": {
3128 | "version": "2.1.1",
3129 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
3130 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
3131 | "dev": true,
3132 | "requires": {
3133 | "remove-trailing-separator": "1.1.0"
3134 | }
3135 | },
3136 | "npm-run-path": {
3137 | "version": "2.0.2",
3138 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
3139 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
3140 | "dev": true,
3141 | "requires": {
3142 | "path-key": "2.0.1"
3143 | }
3144 | },
3145 | "number-is-nan": {
3146 | "version": "1.0.1",
3147 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
3148 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
3149 | "dev": true
3150 | },
3151 | "object-assign": {
3152 | "version": "4.1.1",
3153 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3154 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3155 | "dev": true
3156 | },
3157 | "object-copy": {
3158 | "version": "0.1.0",
3159 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
3160 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
3161 | "dev": true,
3162 | "requires": {
3163 | "copy-descriptor": "0.1.1",
3164 | "define-property": "0.2.5",
3165 | "kind-of": "3.2.2"
3166 | },
3167 | "dependencies": {
3168 | "define-property": {
3169 | "version": "0.2.5",
3170 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3171 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3172 | "dev": true,
3173 | "requires": {
3174 | "is-descriptor": "0.1.6"
3175 | }
3176 | }
3177 | }
3178 | },
3179 | "object-visit": {
3180 | "version": "1.0.1",
3181 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
3182 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
3183 | "dev": true,
3184 | "requires": {
3185 | "isobject": "3.0.1"
3186 | }
3187 | },
3188 | "object.pick": {
3189 | "version": "1.3.0",
3190 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
3191 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
3192 | "dev": true,
3193 | "requires": {
3194 | "isobject": "3.0.1"
3195 | }
3196 | },
3197 | "os-browserify": {
3198 | "version": "0.3.0",
3199 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
3200 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
3201 | "dev": true
3202 | },
3203 | "os-homedir": {
3204 | "version": "1.0.2",
3205 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
3206 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
3207 | "dev": true
3208 | },
3209 | "os-locale": {
3210 | "version": "2.1.0",
3211 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
3212 | "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
3213 | "dev": true,
3214 | "requires": {
3215 | "execa": "0.7.0",
3216 | "lcid": "1.0.0",
3217 | "mem": "1.1.0"
3218 | }
3219 | },
3220 | "os-tmpdir": {
3221 | "version": "1.0.2",
3222 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
3223 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
3224 | "dev": true
3225 | },
3226 | "p-finally": {
3227 | "version": "1.0.0",
3228 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
3229 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
3230 | "dev": true
3231 | },
3232 | "p-limit": {
3233 | "version": "1.2.0",
3234 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
3235 | "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
3236 | "dev": true,
3237 | "requires": {
3238 | "p-try": "1.0.0"
3239 | }
3240 | },
3241 | "p-locate": {
3242 | "version": "2.0.0",
3243 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
3244 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
3245 | "dev": true,
3246 | "requires": {
3247 | "p-limit": "1.2.0"
3248 | }
3249 | },
3250 | "p-try": {
3251 | "version": "1.0.0",
3252 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
3253 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
3254 | "dev": true
3255 | },
3256 | "pako": {
3257 | "version": "1.0.6",
3258 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
3259 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
3260 | "dev": true
3261 | },
3262 | "parse-asn1": {
3263 | "version": "5.1.1",
3264 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
3265 | "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
3266 | "dev": true,
3267 | "requires": {
3268 | "asn1.js": "4.10.1",
3269 | "browserify-aes": "1.2.0",
3270 | "create-hash": "1.2.0",
3271 | "evp_bytestokey": "1.0.3",
3272 | "pbkdf2": "3.0.16"
3273 | }
3274 | },
3275 | "parse-json": {
3276 | "version": "2.2.0",
3277 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
3278 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
3279 | "dev": true,
3280 | "requires": {
3281 | "error-ex": "1.3.1"
3282 | }
3283 | },
3284 | "pascalcase": {
3285 | "version": "0.1.1",
3286 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
3287 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
3288 | "dev": true
3289 | },
3290 | "path-browserify": {
3291 | "version": "0.0.0",
3292 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
3293 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
3294 | "dev": true
3295 | },
3296 | "path-dirname": {
3297 | "version": "1.0.2",
3298 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
3299 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
3300 | "dev": true
3301 | },
3302 | "path-exists": {
3303 | "version": "3.0.0",
3304 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
3305 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
3306 | "dev": true
3307 | },
3308 | "path-is-absolute": {
3309 | "version": "1.0.1",
3310 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3311 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3312 | "dev": true
3313 | },
3314 | "path-key": {
3315 | "version": "2.0.1",
3316 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
3317 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
3318 | "dev": true
3319 | },
3320 | "path-type": {
3321 | "version": "2.0.0",
3322 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
3323 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
3324 | "dev": true,
3325 | "requires": {
3326 | "pify": "2.3.0"
3327 | },
3328 | "dependencies": {
3329 | "pify": {
3330 | "version": "2.3.0",
3331 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3332 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
3333 | "dev": true
3334 | }
3335 | }
3336 | },
3337 | "pbkdf2": {
3338 | "version": "3.0.16",
3339 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
3340 | "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
3341 | "dev": true,
3342 | "requires": {
3343 | "create-hash": "1.2.0",
3344 | "create-hmac": "1.1.7",
3345 | "ripemd160": "2.0.2",
3346 | "safe-buffer": "5.1.2",
3347 | "sha.js": "2.4.11"
3348 | }
3349 | },
3350 | "pify": {
3351 | "version": "3.0.0",
3352 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3353 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3354 | "dev": true
3355 | },
3356 | "pkg-dir": {
3357 | "version": "2.0.0",
3358 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
3359 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
3360 | "dev": true,
3361 | "requires": {
3362 | "find-up": "2.1.0"
3363 | }
3364 | },
3365 | "posix-character-classes": {
3366 | "version": "0.1.1",
3367 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
3368 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
3369 | "dev": true
3370 | },
3371 | "private": {
3372 | "version": "0.1.8",
3373 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
3374 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
3375 | "dev": true
3376 | },
3377 | "process": {
3378 | "version": "0.11.10",
3379 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
3380 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
3381 | "dev": true
3382 | },
3383 | "process-nextick-args": {
3384 | "version": "2.0.0",
3385 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
3386 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
3387 | "dev": true
3388 | },
3389 | "prr": {
3390 | "version": "1.0.1",
3391 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
3392 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
3393 | "dev": true
3394 | },
3395 | "pseudomap": {
3396 | "version": "1.0.2",
3397 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
3398 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
3399 | "dev": true
3400 | },
3401 | "public-encrypt": {
3402 | "version": "4.0.2",
3403 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
3404 | "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
3405 | "dev": true,
3406 | "requires": {
3407 | "bn.js": "4.11.8",
3408 | "browserify-rsa": "4.0.1",
3409 | "create-hash": "1.2.0",
3410 | "parse-asn1": "5.1.1",
3411 | "randombytes": "2.0.6"
3412 | }
3413 | },
3414 | "punycode": {
3415 | "version": "2.1.0",
3416 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
3417 | "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
3418 | "dev": true
3419 | },
3420 | "querystring": {
3421 | "version": "0.2.0",
3422 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
3423 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
3424 | "dev": true
3425 | },
3426 | "querystring-es3": {
3427 | "version": "0.2.1",
3428 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
3429 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
3430 | "dev": true
3431 | },
3432 | "randombytes": {
3433 | "version": "2.0.6",
3434 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
3435 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
3436 | "dev": true,
3437 | "requires": {
3438 | "safe-buffer": "5.1.2"
3439 | }
3440 | },
3441 | "randomfill": {
3442 | "version": "1.0.4",
3443 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
3444 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
3445 | "dev": true,
3446 | "requires": {
3447 | "randombytes": "2.0.6",
3448 | "safe-buffer": "5.1.2"
3449 | }
3450 | },
3451 | "react-html-attributes": {
3452 | "version": "1.4.2",
3453 | "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.2.tgz",
3454 | "integrity": "sha1-DSzPE0/Hmy01Q4N9wVkdMre5A/k=",
3455 | "dev": true,
3456 | "requires": {
3457 | "html-element-attributes": "1.3.1"
3458 | }
3459 | },
3460 | "read-pkg": {
3461 | "version": "2.0.0",
3462 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
3463 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
3464 | "dev": true,
3465 | "requires": {
3466 | "load-json-file": "2.0.0",
3467 | "normalize-package-data": "2.4.0",
3468 | "path-type": "2.0.0"
3469 | }
3470 | },
3471 | "read-pkg-up": {
3472 | "version": "2.0.0",
3473 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
3474 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
3475 | "dev": true,
3476 | "requires": {
3477 | "find-up": "2.1.0",
3478 | "read-pkg": "2.0.0"
3479 | }
3480 | },
3481 | "readable-stream": {
3482 | "version": "2.3.6",
3483 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
3484 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
3485 | "dev": true,
3486 | "requires": {
3487 | "core-util-is": "1.0.2",
3488 | "inherits": "2.0.3",
3489 | "isarray": "1.0.0",
3490 | "process-nextick-args": "2.0.0",
3491 | "safe-buffer": "5.1.2",
3492 | "string_decoder": "1.1.1",
3493 | "util-deprecate": "1.0.2"
3494 | }
3495 | },
3496 | "readdirp": {
3497 | "version": "2.1.0",
3498 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
3499 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
3500 | "dev": true,
3501 | "requires": {
3502 | "graceful-fs": "4.1.11",
3503 | "minimatch": "3.0.4",
3504 | "readable-stream": "2.3.6",
3505 | "set-immediate-shim": "1.0.1"
3506 | }
3507 | },
3508 | "regenerate": {
3509 | "version": "1.4.0",
3510 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
3511 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
3512 | "dev": true
3513 | },
3514 | "regenerator-runtime": {
3515 | "version": "0.11.1",
3516 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
3517 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
3518 | "dev": true
3519 | },
3520 | "regenerator-transform": {
3521 | "version": "0.10.1",
3522 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
3523 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
3524 | "dev": true,
3525 | "requires": {
3526 | "babel-runtime": "6.26.0",
3527 | "babel-types": "6.26.0",
3528 | "private": "0.1.8"
3529 | }
3530 | },
3531 | "regex-not": {
3532 | "version": "1.0.2",
3533 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
3534 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
3535 | "dev": true,
3536 | "requires": {
3537 | "extend-shallow": "3.0.2",
3538 | "safe-regex": "1.1.0"
3539 | }
3540 | },
3541 | "regexpu-core": {
3542 | "version": "2.0.0",
3543 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
3544 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
3545 | "dev": true,
3546 | "requires": {
3547 | "regenerate": "1.4.0",
3548 | "regjsgen": "0.2.0",
3549 | "regjsparser": "0.1.5"
3550 | }
3551 | },
3552 | "regjsgen": {
3553 | "version": "0.2.0",
3554 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
3555 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
3556 | "dev": true
3557 | },
3558 | "regjsparser": {
3559 | "version": "0.1.5",
3560 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
3561 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
3562 | "dev": true,
3563 | "requires": {
3564 | "jsesc": "0.5.0"
3565 | },
3566 | "dependencies": {
3567 | "jsesc": {
3568 | "version": "0.5.0",
3569 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
3570 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
3571 | "dev": true
3572 | }
3573 | }
3574 | },
3575 | "remove-trailing-separator": {
3576 | "version": "1.1.0",
3577 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
3578 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
3579 | "dev": true
3580 | },
3581 | "repeat-element": {
3582 | "version": "1.1.2",
3583 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
3584 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
3585 | "dev": true
3586 | },
3587 | "repeat-string": {
3588 | "version": "1.6.1",
3589 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3590 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3591 | "dev": true
3592 | },
3593 | "repeating": {
3594 | "version": "2.0.1",
3595 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
3596 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
3597 | "dev": true,
3598 | "requires": {
3599 | "is-finite": "1.0.2"
3600 | }
3601 | },
3602 | "require-directory": {
3603 | "version": "2.1.1",
3604 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
3605 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
3606 | "dev": true
3607 | },
3608 | "require-main-filename": {
3609 | "version": "1.0.1",
3610 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
3611 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
3612 | "dev": true
3613 | },
3614 | "resolve-url": {
3615 | "version": "0.2.1",
3616 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
3617 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
3618 | "dev": true
3619 | },
3620 | "ret": {
3621 | "version": "0.1.15",
3622 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
3623 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
3624 | "dev": true
3625 | },
3626 | "right-align": {
3627 | "version": "0.1.3",
3628 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
3629 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
3630 | "dev": true,
3631 | "requires": {
3632 | "align-text": "0.1.4"
3633 | }
3634 | },
3635 | "ripemd160": {
3636 | "version": "2.0.2",
3637 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
3638 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
3639 | "dev": true,
3640 | "requires": {
3641 | "hash-base": "3.0.4",
3642 | "inherits": "2.0.3"
3643 | }
3644 | },
3645 | "safe-buffer": {
3646 | "version": "5.1.2",
3647 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3648 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
3649 | "dev": true
3650 | },
3651 | "safe-regex": {
3652 | "version": "1.1.0",
3653 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
3654 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
3655 | "dev": true,
3656 | "requires": {
3657 | "ret": "0.1.15"
3658 | }
3659 | },
3660 | "semver": {
3661 | "version": "5.5.0",
3662 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
3663 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
3664 | "dev": true
3665 | },
3666 | "set-blocking": {
3667 | "version": "2.0.0",
3668 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
3669 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
3670 | "dev": true
3671 | },
3672 | "set-immediate-shim": {
3673 | "version": "1.0.1",
3674 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
3675 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
3676 | "dev": true
3677 | },
3678 | "set-value": {
3679 | "version": "2.0.0",
3680 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
3681 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
3682 | "dev": true,
3683 | "requires": {
3684 | "extend-shallow": "2.0.1",
3685 | "is-extendable": "0.1.1",
3686 | "is-plain-object": "2.0.4",
3687 | "split-string": "3.1.0"
3688 | },
3689 | "dependencies": {
3690 | "extend-shallow": {
3691 | "version": "2.0.1",
3692 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
3693 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
3694 | "dev": true,
3695 | "requires": {
3696 | "is-extendable": "0.1.1"
3697 | }
3698 | }
3699 | }
3700 | },
3701 | "setimmediate": {
3702 | "version": "1.0.5",
3703 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
3704 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
3705 | "dev": true
3706 | },
3707 | "sha.js": {
3708 | "version": "2.4.11",
3709 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
3710 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
3711 | "dev": true,
3712 | "requires": {
3713 | "inherits": "2.0.3",
3714 | "safe-buffer": "5.1.2"
3715 | }
3716 | },
3717 | "shebang-command": {
3718 | "version": "1.2.0",
3719 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
3720 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
3721 | "dev": true,
3722 | "requires": {
3723 | "shebang-regex": "1.0.0"
3724 | }
3725 | },
3726 | "shebang-regex": {
3727 | "version": "1.0.0",
3728 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
3729 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
3730 | "dev": true
3731 | },
3732 | "signal-exit": {
3733 | "version": "3.0.2",
3734 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3735 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3736 | "dev": true
3737 | },
3738 | "slash": {
3739 | "version": "1.0.0",
3740 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
3741 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
3742 | "dev": true
3743 | },
3744 | "snapdragon": {
3745 | "version": "0.8.2",
3746 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
3747 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
3748 | "dev": true,
3749 | "requires": {
3750 | "base": "0.11.2",
3751 | "debug": "2.6.9",
3752 | "define-property": "0.2.5",
3753 | "extend-shallow": "2.0.1",
3754 | "map-cache": "0.2.2",
3755 | "source-map": "0.5.7",
3756 | "source-map-resolve": "0.5.2",
3757 | "use": "3.1.0"
3758 | },
3759 | "dependencies": {
3760 | "define-property": {
3761 | "version": "0.2.5",
3762 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3763 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3764 | "dev": true,
3765 | "requires": {
3766 | "is-descriptor": "0.1.6"
3767 | }
3768 | },
3769 | "extend-shallow": {
3770 | "version": "2.0.1",
3771 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
3772 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
3773 | "dev": true,
3774 | "requires": {
3775 | "is-extendable": "0.1.1"
3776 | }
3777 | }
3778 | }
3779 | },
3780 | "snapdragon-node": {
3781 | "version": "2.1.1",
3782 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
3783 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
3784 | "dev": true,
3785 | "requires": {
3786 | "define-property": "1.0.0",
3787 | "isobject": "3.0.1",
3788 | "snapdragon-util": "3.0.1"
3789 | },
3790 | "dependencies": {
3791 | "define-property": {
3792 | "version": "1.0.0",
3793 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
3794 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
3795 | "dev": true,
3796 | "requires": {
3797 | "is-descriptor": "1.0.2"
3798 | }
3799 | },
3800 | "is-accessor-descriptor": {
3801 | "version": "1.0.0",
3802 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
3803 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
3804 | "dev": true,
3805 | "requires": {
3806 | "kind-of": "6.0.2"
3807 | }
3808 | },
3809 | "is-data-descriptor": {
3810 | "version": "1.0.0",
3811 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
3812 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
3813 | "dev": true,
3814 | "requires": {
3815 | "kind-of": "6.0.2"
3816 | }
3817 | },
3818 | "is-descriptor": {
3819 | "version": "1.0.2",
3820 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
3821 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
3822 | "dev": true,
3823 | "requires": {
3824 | "is-accessor-descriptor": "1.0.0",
3825 | "is-data-descriptor": "1.0.0",
3826 | "kind-of": "6.0.2"
3827 | }
3828 | },
3829 | "kind-of": {
3830 | "version": "6.0.2",
3831 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
3832 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
3833 | "dev": true
3834 | }
3835 | }
3836 | },
3837 | "snapdragon-util": {
3838 | "version": "3.0.1",
3839 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
3840 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
3841 | "dev": true,
3842 | "requires": {
3843 | "kind-of": "3.2.2"
3844 | }
3845 | },
3846 | "source-list-map": {
3847 | "version": "2.0.0",
3848 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
3849 | "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
3850 | "dev": true
3851 | },
3852 | "source-map": {
3853 | "version": "0.5.7",
3854 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3855 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
3856 | "dev": true
3857 | },
3858 | "source-map-resolve": {
3859 | "version": "0.5.2",
3860 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
3861 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
3862 | "dev": true,
3863 | "requires": {
3864 | "atob": "2.1.1",
3865 | "decode-uri-component": "0.2.0",
3866 | "resolve-url": "0.2.1",
3867 | "source-map-url": "0.4.0",
3868 | "urix": "0.1.0"
3869 | }
3870 | },
3871 | "source-map-support": {
3872 | "version": "0.4.18",
3873 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
3874 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
3875 | "dev": true,
3876 | "requires": {
3877 | "source-map": "0.5.7"
3878 | }
3879 | },
3880 | "source-map-url": {
3881 | "version": "0.4.0",
3882 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
3883 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
3884 | "dev": true
3885 | },
3886 | "spdx-correct": {
3887 | "version": "3.0.0",
3888 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
3889 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
3890 | "dev": true,
3891 | "requires": {
3892 | "spdx-expression-parse": "3.0.0",
3893 | "spdx-license-ids": "3.0.0"
3894 | }
3895 | },
3896 | "spdx-exceptions": {
3897 | "version": "2.1.0",
3898 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
3899 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
3900 | "dev": true
3901 | },
3902 | "spdx-expression-parse": {
3903 | "version": "3.0.0",
3904 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
3905 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
3906 | "dev": true,
3907 | "requires": {
3908 | "spdx-exceptions": "2.1.0",
3909 | "spdx-license-ids": "3.0.0"
3910 | }
3911 | },
3912 | "spdx-license-ids": {
3913 | "version": "3.0.0",
3914 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
3915 | "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
3916 | "dev": true
3917 | },
3918 | "split-string": {
3919 | "version": "3.1.0",
3920 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
3921 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
3922 | "dev": true,
3923 | "requires": {
3924 | "extend-shallow": "3.0.2"
3925 | }
3926 | },
3927 | "static-extend": {
3928 | "version": "0.1.2",
3929 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
3930 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
3931 | "dev": true,
3932 | "requires": {
3933 | "define-property": "0.2.5",
3934 | "object-copy": "0.1.0"
3935 | },
3936 | "dependencies": {
3937 | "define-property": {
3938 | "version": "0.2.5",
3939 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3940 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3941 | "dev": true,
3942 | "requires": {
3943 | "is-descriptor": "0.1.6"
3944 | }
3945 | }
3946 | }
3947 | },
3948 | "stream-browserify": {
3949 | "version": "2.0.1",
3950 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
3951 | "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
3952 | "dev": true,
3953 | "requires": {
3954 | "inherits": "2.0.3",
3955 | "readable-stream": "2.3.6"
3956 | }
3957 | },
3958 | "stream-http": {
3959 | "version": "2.8.2",
3960 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz",
3961 | "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
3962 | "dev": true,
3963 | "requires": {
3964 | "builtin-status-codes": "3.0.0",
3965 | "inherits": "2.0.3",
3966 | "readable-stream": "2.3.6",
3967 | "to-arraybuffer": "1.0.1",
3968 | "xtend": "4.0.1"
3969 | }
3970 | },
3971 | "string_decoder": {
3972 | "version": "1.1.1",
3973 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3974 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3975 | "dev": true,
3976 | "requires": {
3977 | "safe-buffer": "5.1.2"
3978 | }
3979 | },
3980 | "string-width": {
3981 | "version": "2.1.1",
3982 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
3983 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
3984 | "dev": true,
3985 | "requires": {
3986 | "is-fullwidth-code-point": "2.0.0",
3987 | "strip-ansi": "4.0.0"
3988 | },
3989 | "dependencies": {
3990 | "ansi-regex": {
3991 | "version": "3.0.0",
3992 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
3993 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
3994 | "dev": true
3995 | },
3996 | "is-fullwidth-code-point": {
3997 | "version": "2.0.0",
3998 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3999 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
4000 | "dev": true
4001 | },
4002 | "strip-ansi": {
4003 | "version": "4.0.0",
4004 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
4005 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
4006 | "dev": true,
4007 | "requires": {
4008 | "ansi-regex": "3.0.0"
4009 | }
4010 | }
4011 | }
4012 | },
4013 | "strip-ansi": {
4014 | "version": "3.0.1",
4015 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
4016 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
4017 | "dev": true,
4018 | "requires": {
4019 | "ansi-regex": "2.1.1"
4020 | }
4021 | },
4022 | "strip-bom": {
4023 | "version": "3.0.0",
4024 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
4025 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
4026 | "dev": true
4027 | },
4028 | "strip-eof": {
4029 | "version": "1.0.0",
4030 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
4031 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
4032 | "dev": true
4033 | },
4034 | "supports-color": {
4035 | "version": "2.0.0",
4036 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
4037 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
4038 | "dev": true
4039 | },
4040 | "tapable": {
4041 | "version": "0.2.8",
4042 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
4043 | "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
4044 | "dev": true
4045 | },
4046 | "timers-browserify": {
4047 | "version": "2.0.10",
4048 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
4049 | "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
4050 | "dev": true,
4051 | "requires": {
4052 | "setimmediate": "1.0.5"
4053 | }
4054 | },
4055 | "to-arraybuffer": {
4056 | "version": "1.0.1",
4057 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
4058 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
4059 | "dev": true
4060 | },
4061 | "to-fast-properties": {
4062 | "version": "1.0.3",
4063 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
4064 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
4065 | "dev": true
4066 | },
4067 | "to-object-path": {
4068 | "version": "0.3.0",
4069 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
4070 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
4071 | "dev": true,
4072 | "requires": {
4073 | "kind-of": "3.2.2"
4074 | }
4075 | },
4076 | "to-regex": {
4077 | "version": "3.0.2",
4078 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
4079 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
4080 | "dev": true,
4081 | "requires": {
4082 | "define-property": "2.0.2",
4083 | "extend-shallow": "3.0.2",
4084 | "regex-not": "1.0.2",
4085 | "safe-regex": "1.1.0"
4086 | }
4087 | },
4088 | "to-regex-range": {
4089 | "version": "2.1.1",
4090 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
4091 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
4092 | "dev": true,
4093 | "requires": {
4094 | "is-number": "3.0.0",
4095 | "repeat-string": "1.6.1"
4096 | }
4097 | },
4098 | "trim-right": {
4099 | "version": "1.0.1",
4100 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
4101 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
4102 | "dev": true
4103 | },
4104 | "tty-browserify": {
4105 | "version": "0.0.0",
4106 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
4107 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
4108 | "dev": true
4109 | },
4110 | "uglify-js": {
4111 | "version": "2.8.29",
4112 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
4113 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
4114 | "dev": true,
4115 | "requires": {
4116 | "source-map": "0.5.7",
4117 | "uglify-to-browserify": "1.0.2",
4118 | "yargs": "3.10.0"
4119 | },
4120 | "dependencies": {
4121 | "yargs": {
4122 | "version": "3.10.0",
4123 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
4124 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
4125 | "dev": true,
4126 | "requires": {
4127 | "camelcase": "1.2.1",
4128 | "cliui": "2.1.0",
4129 | "decamelize": "1.2.0",
4130 | "window-size": "0.1.0"
4131 | }
4132 | }
4133 | }
4134 | },
4135 | "uglify-to-browserify": {
4136 | "version": "1.0.2",
4137 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
4138 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
4139 | "dev": true,
4140 | "optional": true
4141 | },
4142 | "uglifyjs-webpack-plugin": {
4143 | "version": "0.4.6",
4144 | "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz",
4145 | "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
4146 | "dev": true,
4147 | "requires": {
4148 | "source-map": "0.5.7",
4149 | "uglify-js": "2.8.29",
4150 | "webpack-sources": "1.1.0"
4151 | }
4152 | },
4153 | "union-value": {
4154 | "version": "1.0.0",
4155 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
4156 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
4157 | "dev": true,
4158 | "requires": {
4159 | "arr-union": "3.1.0",
4160 | "get-value": "2.0.6",
4161 | "is-extendable": "0.1.1",
4162 | "set-value": "0.4.3"
4163 | },
4164 | "dependencies": {
4165 | "extend-shallow": {
4166 | "version": "2.0.1",
4167 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
4168 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
4169 | "dev": true,
4170 | "requires": {
4171 | "is-extendable": "0.1.1"
4172 | }
4173 | },
4174 | "set-value": {
4175 | "version": "0.4.3",
4176 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
4177 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
4178 | "dev": true,
4179 | "requires": {
4180 | "extend-shallow": "2.0.1",
4181 | "is-extendable": "0.1.1",
4182 | "is-plain-object": "2.0.4",
4183 | "to-object-path": "0.3.0"
4184 | }
4185 | }
4186 | }
4187 | },
4188 | "unset-value": {
4189 | "version": "1.0.0",
4190 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
4191 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
4192 | "dev": true,
4193 | "requires": {
4194 | "has-value": "0.3.1",
4195 | "isobject": "3.0.1"
4196 | },
4197 | "dependencies": {
4198 | "has-value": {
4199 | "version": "0.3.1",
4200 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
4201 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
4202 | "dev": true,
4203 | "requires": {
4204 | "get-value": "2.0.6",
4205 | "has-values": "0.1.4",
4206 | "isobject": "2.1.0"
4207 | },
4208 | "dependencies": {
4209 | "isobject": {
4210 | "version": "2.1.0",
4211 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
4212 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
4213 | "dev": true,
4214 | "requires": {
4215 | "isarray": "1.0.0"
4216 | }
4217 | }
4218 | }
4219 | },
4220 | "has-values": {
4221 | "version": "0.1.4",
4222 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
4223 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
4224 | "dev": true
4225 | }
4226 | }
4227 | },
4228 | "upath": {
4229 | "version": "1.1.0",
4230 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
4231 | "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
4232 | "dev": true
4233 | },
4234 | "uri-js": {
4235 | "version": "4.2.1",
4236 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz",
4237 | "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==",
4238 | "dev": true,
4239 | "requires": {
4240 | "punycode": "2.1.0"
4241 | }
4242 | },
4243 | "urix": {
4244 | "version": "0.1.0",
4245 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
4246 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
4247 | "dev": true
4248 | },
4249 | "url": {
4250 | "version": "0.11.0",
4251 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
4252 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
4253 | "dev": true,
4254 | "requires": {
4255 | "punycode": "1.3.2",
4256 | "querystring": "0.2.0"
4257 | },
4258 | "dependencies": {
4259 | "punycode": {
4260 | "version": "1.3.2",
4261 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
4262 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
4263 | "dev": true
4264 | }
4265 | }
4266 | },
4267 | "use": {
4268 | "version": "3.1.0",
4269 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
4270 | "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
4271 | "dev": true,
4272 | "requires": {
4273 | "kind-of": "6.0.2"
4274 | },
4275 | "dependencies": {
4276 | "kind-of": {
4277 | "version": "6.0.2",
4278 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
4279 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
4280 | "dev": true
4281 | }
4282 | }
4283 | },
4284 | "util": {
4285 | "version": "0.10.3",
4286 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
4287 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
4288 | "dev": true,
4289 | "requires": {
4290 | "inherits": "2.0.1"
4291 | },
4292 | "dependencies": {
4293 | "inherits": {
4294 | "version": "2.0.1",
4295 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
4296 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
4297 | "dev": true
4298 | }
4299 | }
4300 | },
4301 | "util-deprecate": {
4302 | "version": "1.0.2",
4303 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4304 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
4305 | "dev": true
4306 | },
4307 | "validate-npm-package-license": {
4308 | "version": "3.0.3",
4309 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
4310 | "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
4311 | "dev": true,
4312 | "requires": {
4313 | "spdx-correct": "3.0.0",
4314 | "spdx-expression-parse": "3.0.0"
4315 | }
4316 | },
4317 | "vm-browserify": {
4318 | "version": "0.0.4",
4319 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
4320 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
4321 | "dev": true,
4322 | "requires": {
4323 | "indexof": "0.0.1"
4324 | }
4325 | },
4326 | "watchpack": {
4327 | "version": "1.6.0",
4328 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
4329 | "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
4330 | "dev": true,
4331 | "requires": {
4332 | "chokidar": "2.0.3",
4333 | "graceful-fs": "4.1.11",
4334 | "neo-async": "2.5.1"
4335 | }
4336 | },
4337 | "webpack": {
4338 | "version": "3.12.0",
4339 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz",
4340 | "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==",
4341 | "dev": true,
4342 | "requires": {
4343 | "acorn": "5.5.3",
4344 | "acorn-dynamic-import": "2.0.2",
4345 | "ajv": "6.5.0",
4346 | "ajv-keywords": "3.2.0",
4347 | "async": "2.6.0",
4348 | "enhanced-resolve": "3.4.1",
4349 | "escope": "3.6.0",
4350 | "interpret": "1.1.0",
4351 | "json-loader": "0.5.7",
4352 | "json5": "0.5.1",
4353 | "loader-runner": "2.3.0",
4354 | "loader-utils": "1.1.0",
4355 | "memory-fs": "0.4.1",
4356 | "mkdirp": "0.5.1",
4357 | "node-libs-browser": "2.1.0",
4358 | "source-map": "0.5.7",
4359 | "supports-color": "4.5.0",
4360 | "tapable": "0.2.8",
4361 | "uglifyjs-webpack-plugin": "0.4.6",
4362 | "watchpack": "1.6.0",
4363 | "webpack-sources": "1.1.0",
4364 | "yargs": "8.0.2"
4365 | },
4366 | "dependencies": {
4367 | "supports-color": {
4368 | "version": "4.5.0",
4369 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
4370 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
4371 | "dev": true,
4372 | "requires": {
4373 | "has-flag": "2.0.0"
4374 | }
4375 | }
4376 | }
4377 | },
4378 | "webpack-sources": {
4379 | "version": "1.1.0",
4380 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
4381 | "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
4382 | "dev": true,
4383 | "requires": {
4384 | "source-list-map": "2.0.0",
4385 | "source-map": "0.6.1"
4386 | },
4387 | "dependencies": {
4388 | "source-map": {
4389 | "version": "0.6.1",
4390 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
4391 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
4392 | "dev": true
4393 | }
4394 | }
4395 | },
4396 | "which": {
4397 | "version": "1.3.0",
4398 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
4399 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
4400 | "dev": true,
4401 | "requires": {
4402 | "isexe": "2.0.0"
4403 | }
4404 | },
4405 | "which-module": {
4406 | "version": "2.0.0",
4407 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
4408 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
4409 | "dev": true
4410 | },
4411 | "window-size": {
4412 | "version": "0.1.0",
4413 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
4414 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
4415 | "dev": true
4416 | },
4417 | "wordwrap": {
4418 | "version": "0.0.2",
4419 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
4420 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
4421 | "dev": true
4422 | },
4423 | "wrap-ansi": {
4424 | "version": "2.1.0",
4425 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
4426 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
4427 | "dev": true,
4428 | "requires": {
4429 | "string-width": "1.0.2",
4430 | "strip-ansi": "3.0.1"
4431 | },
4432 | "dependencies": {
4433 | "string-width": {
4434 | "version": "1.0.2",
4435 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
4436 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
4437 | "dev": true,
4438 | "requires": {
4439 | "code-point-at": "1.1.0",
4440 | "is-fullwidth-code-point": "1.0.0",
4441 | "strip-ansi": "3.0.1"
4442 | }
4443 | }
4444 | }
4445 | },
4446 | "xtend": {
4447 | "version": "4.0.1",
4448 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
4449 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
4450 | "dev": true
4451 | },
4452 | "y18n": {
4453 | "version": "3.2.1",
4454 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
4455 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
4456 | "dev": true
4457 | },
4458 | "yallist": {
4459 | "version": "2.1.2",
4460 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
4461 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
4462 | "dev": true
4463 | },
4464 | "yargs": {
4465 | "version": "8.0.2",
4466 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
4467 | "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
4468 | "dev": true,
4469 | "requires": {
4470 | "camelcase": "4.1.0",
4471 | "cliui": "3.2.0",
4472 | "decamelize": "1.2.0",
4473 | "get-caller-file": "1.0.2",
4474 | "os-locale": "2.1.0",
4475 | "read-pkg-up": "2.0.0",
4476 | "require-directory": "2.1.1",
4477 | "require-main-filename": "1.0.1",
4478 | "set-blocking": "2.0.0",
4479 | "string-width": "2.1.1",
4480 | "which-module": "2.0.0",
4481 | "y18n": "3.2.1",
4482 | "yargs-parser": "7.0.0"
4483 | },
4484 | "dependencies": {
4485 | "camelcase": {
4486 | "version": "4.1.0",
4487 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
4488 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
4489 | "dev": true
4490 | },
4491 | "cliui": {
4492 | "version": "3.2.0",
4493 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
4494 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
4495 | "dev": true,
4496 | "requires": {
4497 | "string-width": "1.0.2",
4498 | "strip-ansi": "3.0.1",
4499 | "wrap-ansi": "2.1.0"
4500 | },
4501 | "dependencies": {
4502 | "string-width": {
4503 | "version": "1.0.2",
4504 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
4505 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
4506 | "dev": true,
4507 | "requires": {
4508 | "code-point-at": "1.1.0",
4509 | "is-fullwidth-code-point": "1.0.0",
4510 | "strip-ansi": "3.0.1"
4511 | }
4512 | }
4513 | }
4514 | }
4515 | }
4516 | },
4517 | "yargs-parser": {
4518 | "version": "7.0.0",
4519 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
4520 | "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
4521 | "dev": true,
4522 | "requires": {
4523 | "camelcase": "4.1.0"
4524 | },
4525 | "dependencies": {
4526 | "camelcase": {
4527 | "version": "4.1.0",
4528 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
4529 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
4530 | "dev": true
4531 | }
4532 | }
4533 | }
4534 | }
4535 | }
4536 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "subatomic",
3 | "version": "0.0.5",
4 | "description": "Inline style props for emotion and styled-components",
5 | "main": "emotion.js",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "https://github.com/gragland/subatomic"
10 | },
11 | "author": "Gabe Ragland ",
12 | "bugs": {
13 | "url": "https://github.com/gragland/subatomic/issues"
14 | },
15 | "devDependencies": {
16 | "babel-core": "6.26.3",
17 | "babel-loader": "7.1.4",
18 | "babel-plugin-transform-object-rest-spread": "^6.26.0",
19 | "babel-plugin-transform-runtime": "^6.23.0",
20 | "babel-preset-es2015": "6.24.1",
21 | "babel-preset-react": "6.24.1",
22 | "webpack": "^3.12.0",
23 | "camelcase-css": "^2.0.0",
24 | "known-css-properties": "^0.6.1",
25 | "react-html-attributes": "^1.4.2"
26 | },
27 | "scripts": {
28 | "build": "NODE_ENV=production webpack --config webpack.config.js",
29 | "prepare": "npm run build"
30 | },
31 | "keywords": [
32 | "react",
33 | "component",
34 | "inline-styles",
35 | "css-in-js",
36 | "emotion",
37 | "styled-components",
38 | "design-systems"
39 | ]
40 | }
41 |
--------------------------------------------------------------------------------
/src/blacklisted-attributes.js:
--------------------------------------------------------------------------------
1 | // These are valid attributes but we consider them style props instead
2 | // TODO: Allow them to be passed to html element by doing attrColor
3 | // TODO (?): Replace attribute whitelist with react-html-attributes so that attributes ...
4 | // ... are considered invalid (and thus style props) if not valid for that element
5 | // Then we could remove any of these where attribute has same effect as css property for the given element
6 | // See how Glamorous does it: https://github.com/paypal/glamorous/blob/6d806889e9991065f1243d4abdce9c0b6cd3a2ae/src/should-forward-property.js
7 | export default [
8 | 'color', // link, svg
9 | 'cursor', // svg
10 | 'display', // svg
11 | 'fontFamily', // svg
12 | 'fontSize', // svg
13 | 'fontStyle', // svg
14 | 'fontWeight', // svg
15 | 'height', // applet, canvas, embed, iframe, img, input, object, td, th, video
16 | 'width', // applet, canvas, col, colgroup, embed, hr, iframe, img, input, object, pre, table, td, th, video
17 | 'letterSpacing', // svg
18 | 'opacity', // svg
19 | 'order', // svg
20 | 'overflow', // svg
21 | 'size', // basefont, font, hr, input, select
22 | 'scale', // svg
23 | 'textDecoration', // svg
24 | 'transform' // svg
25 | ];
26 |
--------------------------------------------------------------------------------
/src/blacklisted-style-props.js:
--------------------------------------------------------------------------------
1 | // Props that are neither attributes or style props
2 | export default [
3 | // React
4 | 'theme',
5 | 'children',
6 | // Subatomic Emotion
7 | 'parentClassName'
8 | ];
9 |
--------------------------------------------------------------------------------
/src/emotion.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styled, { cx } from 'react-emotion';
3 | import { createSubatomic as createSubatomicBase } from './subatomic.js';
4 | import emotionIsPropValid from '@emotion/is-prop-valid';
5 | import blacklistedAttributes from './blacklisted-attributes.js';
6 |
7 | export default tag => {
8 | const Subatomic = createSubatomic(tag);
9 | return props => {
10 | return React.createElement(Subatomic, props);
11 | };
12 | };
13 |
14 | function createSubatomic(tag) {
15 | return createSubatomicBase(
16 | tag,
17 | getComponent,
18 | // Pass in so we can re-use emotion whitelist for lower bundle size
19 | isValidAttribute
20 | );
21 | }
22 |
23 | function getComponent(
24 | tag, // string or component
25 | styleBuilder
26 | ) {
27 | let createStyled;
28 |
29 | if (typeof tag === 'string') {
30 | // We now filter using isValidAttribute()
31 | //const Root = styled(tag); // So whitelist filters out invalid element attributes
32 |
33 | const Filter = ({ parentClassName, ...props }) => {
34 | // Only pass props to DOM element if they are valid html attributes
35 | let next = {};
36 | for (let key in props) {
37 | if (isValidAttribute(key)) {
38 | next[key] = props[key];
39 | }
40 | }
41 |
42 | const { className, ...passProps } = next;
43 |
44 | return React.createElement(tag, {
45 | // This seems to work fine, but for now merging
46 | //className: `${parentClassName} ${className}`,
47 | // Merge to avoid any possible ordering issues
48 | className: cx(parentClassName, className),
49 | ...passProps
50 | });
51 |
52 | // No longer created a root element wrapped with styled() because we do filtering above
53 | //return ;
54 | };
55 |
56 | createStyled = styled(Filter);
57 | } else {
58 | //createStyled = styled(tag);
59 | // This seems to work (at least with emotion)
60 | // I think with styled components there was some style ordering issue with just returning the tag
61 | // NOTE: If component (tag) doesn't have a subatomic element at its root then style props will have no effect
62 | return tag;
63 | }
64 |
65 | const Component = createStyled`
66 | ${styleBuilder}
67 | `;
68 |
69 | if (typeof tag === 'string') {
70 | // Wrap with function so we can split off className
71 | const ComponentWrapper = props => {
72 | // Pass className as parentClassName so emotion doesn't merge styles
73 | // Then within Filter we use cx() to merge classNames with order reversed ...
74 | // ... so that the className from style props takes precedence
75 | const { className, ...passProps } = props;
76 | return React.createElement(Component, {
77 | parentClassName: className,
78 | ...passProps
79 | });
80 | };
81 | return ComponentWrapper;
82 | } else {
83 | return Component;
84 | }
85 | }
86 |
87 | function isValidAttribute(attribute) {
88 | return (
89 | emotionIsPropValid(attribute) &&
90 | blacklistedAttributes.indexOf(attribute) === -1
91 | );
92 | }
93 |
--------------------------------------------------------------------------------
/src/other/css-test.js:
--------------------------------------------------------------------------------
1 | import { all as properties } from 'known-css-properties';
2 | import camelCaseCSS from 'camelcase-css';
3 | import htmlElementAttributes from 'react-html-attributes';
4 | import validAttr from './validAttr.js';
5 |
6 | const cssObject = {};
7 |
8 | const cssAndAttributes = [];
9 |
10 | for (var i = 0; i < properties.length; i++) {
11 | const camelCased = camelCaseCSS(properties[i]);
12 | cssObject[camelCased] = camelCased;
13 | if (validAttr(camelCased)) {
14 | cssAndAttributes.push(camelCased);
15 | }
16 | }
17 |
18 | const cssAndAttributesSvg = [];
19 | const cssAndAttributesNotSvg = [];
20 |
21 | const cssAndAttributesTypes = {};
22 | for (var i = 0; i < cssAndAttributes.length; i++) {
23 | for (let key in htmlElementAttributes) {
24 | if (key === 'elements') continue;
25 | if (htmlElementAttributes[key].indexOf(cssAndAttributes[i]) >= 0) {
26 | if (!cssAndAttributesTypes[key]) cssAndAttributesTypes[key] = [];
27 | cssAndAttributesTypes[key].push(cssAndAttributes[i]);
28 | }
29 | }
30 |
31 | if (htmlElementAttributes.svg.indexOf(cssAndAttributes[i]) >= 0) {
32 | cssAndAttributesSvg.push(cssAndAttributes[i]);
33 | } else {
34 | cssAndAttributesNotSvg.push(cssAndAttributes[i]);
35 | }
36 | }
37 |
38 | // Things that are valid css properties and element attributes, organized by element type
39 | // This should make it easy to see which ones should always be considered style props (color, width, height, etc) ...
40 | // ... so long as there is a way to force it as an attribute (like "attrColor")
41 | console.log('cssAndAttributesTypes', cssAndAttributesTypes);
42 |
43 | // Things that are valid css properties and element attributes
44 | //console.log('cssAndAttributes', cssAndAttributes);
45 |
46 | // Things that are valid css properties and SVG attributes
47 | //console.log('cssAndAttributesSvg', cssAndAttributesSvg);
48 |
49 | // Things that are valid css properties but not on SVG (doesn't include one's on svg AND others)
50 | // This is so we can get a sense of how much over overlap is SVG related.
51 | //console.log('cssAndAttributesNotSvg', cssAndAttributesNotSvg);
52 |
53 | export default cssObject;
54 |
--------------------------------------------------------------------------------
/src/pseudoclasses.js:
--------------------------------------------------------------------------------
1 | export default {
2 | active: 'class',
3 | checked: 'class',
4 | disabled: 'class',
5 | empty: 'class',
6 | enabled: 'class',
7 | focus: 'class',
8 | hover: 'class',
9 | invalid: 'class',
10 | required: 'class',
11 | target: 'class',
12 | valid: 'class',
13 | after: 'element',
14 | before: 'element',
15 | placeholder: 'element',
16 | selection: 'element'
17 | };
18 |
--------------------------------------------------------------------------------
/src/styled-components.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createSubatomic as createSubatomicBase } from './subatomic.js';
3 | import styled from 'styled-components';
4 | // We can't import directly from styled-components/src because ...
5 | // ... we'd want webpack to treat as external (not bundle with lib), but consuming project ...
6 | // ... won't be able to parse depending on their babel/webpack. Also it breaks our lib if sc changes.
7 | //import isHtmlAttribute from "styled-components/src/utils/validAttr";
8 | import isHtmlAttribute from './validAttr.js'; // Exact copy of file above (minus flow types)
9 | // We could wrap final element in styled() to filter out attributes (but performance hit?)
10 | // Or we could use @emotion/is-prop-valid and bundle with lib since we're taking a file size hit anyway
11 | // That way we at least use the same attribute filtering logic across style libs
12 | // If we do that than move isValidAttribute() logic to subatomic.js
13 | //import isHtmlAttribute from "@emotion/is-prop-valid";
14 | import blacklistedAttributes from './blacklisted-attributes.js';
15 |
16 | export default tag => {
17 | return props => {
18 | const Subatomic = createSubatomic(tag);
19 | return React.createElement(Subatomic, props);
20 | };
21 | };
22 |
23 | function createSubatomic(tag) {
24 | return createSubatomicBase(
25 | tag,
26 | getComponent,
27 | // We pass this in so that we can re-use emotion/sc whitelist for lower bundle size
28 | isValidAttribute
29 | );
30 | }
31 |
32 | function getComponent(
33 | tag, // string or component
34 | styleBuilder,
35 | componentNumber
36 | ) {
37 | let createStyled;
38 |
39 | if (typeof tag === 'string') {
40 | // We now filter using isValidAttribute()
41 | //const Root = styled(tag)``; // So whitelist filters out invalid element attributes
42 |
43 | const Filter = props => {
44 | // Only pass props to DOM element if they are valid html attributes
45 | let next = {};
46 | for (let key in props) {
47 | if (isValidAttribute(key)) {
48 | next[key] = props[key];
49 | }
50 | }
51 |
52 | // RECENT EXPERIMENT
53 | //const Root = styled(tag).attrs(next)``;
54 | //return React.createElement(Root);
55 |
56 | return React.createElement(tag, next);
57 |
58 | // No longer created a root element wrapped with styled() because we do filtering above
59 | //return React.createElement(Root, next);
60 | };
61 |
62 | // Manually setting displayName based on tag is necessary otherwise displayName will always be ...
63 | // ... hashed version of "createStyled" and may already have a "sc-component-id" comment marker in ...
64 | // ... causing styled generated from props to be inserted above interpolated style ...
65 | // ... resulting in prop style being overriden.
66 | // NOTE: createStyled`${styleBuilder}` needs to be on its own line (like it is currently) ...
67 | // ... as opposed to doing styled(Filter).withConfig()`${styleBuilder}` otherwise there are ...
68 | // ... issues with style inheritance. Probably a bug with babel plugin.
69 | createStyled = styled(Filter)
70 | .attrs({ suppressClassNameWarning: true })
71 | .withConfig({
72 | displayName: `Tag-${tag}`
73 | });
74 | } else {
75 | // This appears to work but to be safe sticking with original code for now
76 | // Pretty sure we ran into style inheritance issues that were solved by generating classname now ...
77 | // ... rather then in root subatomic element.
78 | //return tag;
79 |
80 | // Since we can't rely on tag (a function) to have a displayName ...
81 | // ... we use componentNumber (its future index in the component cache, same on both server and client)
82 | // This ensures that the same className hash is generated on both server and client
83 | // NOTE: Ideally we could just `return tag` here since prop style get regenerated at root anyway ...
84 | // ... but this caused css ordering issues
85 | createStyled = styled(tag)
86 | .attrs({ suppressClassNameWarning: true })
87 | .withConfig({
88 | //displayName: `Tag()-${tag.displayName || 'unknown'}`
89 | displayName: `Tag()-${componentNumber}`
90 | });
91 | }
92 |
93 | return createStyled`
94 | ${styleBuilder};
95 | `;
96 | }
97 |
98 | function isValidAttribute(attribute) {
99 | return (
100 | isHtmlAttribute(attribute) &&
101 | blacklistedAttributes.indexOf(attribute) === -1
102 | );
103 | }
104 |
--------------------------------------------------------------------------------
/src/subatomic.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import blacklistedStyleProps from './blacklisted-style-props.js';
3 | import pseudoclasses from './pseudoclasses.js';
4 | import defaultTheme from './../themes/default.js';
5 |
6 | const isBlacklistedStyleProp = prop => blacklistedStyleProps.indexOf(prop) >= 0;
7 |
8 | let customPropsCached;
9 |
10 | // Cache for styled components (so we're not creating new ones on each render)
11 | const Cache = createCache();
12 |
13 | export const createSubatomic = (tag, getComponent, isValidAttribute) => {
14 | const defaultOptions = {
15 | themeBreakpointsKey: 'breakpoints',
16 | tagProp: 'is'
17 | };
18 |
19 | const options = defaultOptions;
20 |
21 | // TODO: Let consumer pass in custom options to createSubatomic
22 | /*if (options) {
23 | options = Object.assign(defaultOptions, options);
24 | } else {
25 | options = defaultOptions;
26 | }*/
27 |
28 | // The returned stateless functional component
29 | const Subatomic = ({ ...allProps }) => {
30 | // Destructure tagProp from props and assign value to "is" variable
31 | let { [options.tagProp]: is, ...props } = allProps;
32 |
33 | // "is" prop overrides tag so we can change element
34 | if (is) {
35 | tag = is;
36 | }
37 |
38 | // Will be the returned react component
39 | let Component = getComponentWithCache(
40 | tag,
41 | options,
42 | getComponent,
43 | isValidAttribute
44 | );
45 |
46 | // Save Component to cache
47 | Cache.put(tag, Component);
48 |
49 | return ;
50 | };
51 |
52 | return Subatomic;
53 | };
54 |
55 | function getComponentWithCache(tag, options, getComponent, isValidAttribute) {
56 | // Get component from cache by its tag (tag can be string or function reference)
57 | const CachedComponent = Cache.get(tag);
58 | if (CachedComponent) {
59 | return CachedComponent;
60 | }
61 |
62 | const styleBuilder = createStyleBuilder(options, isValidAttribute);
63 |
64 | // Get the cache index Component will have once it's added to cache
65 | // Used to create a deterministic hash for className (since will be same across server and client)
66 | // If tag is a string then value will be null (not needed)
67 | let referenceCacheIndex = null;
68 | if (typeof tag === 'object') {
69 | const cache = Cache.get();
70 | referenceCacheIndex = cache.byReference.keys.length;
71 | }
72 |
73 | let Component = getComponent(tag, styleBuilder, referenceCacheIndex);
74 |
75 | // Save Component to cache
76 | Cache.put(tag, Component);
77 |
78 | return Component;
79 | }
80 |
81 | function createStyleBuilder(options, isValidAttribute) {
82 | const styleBuilder = allProps => {
83 | // If theme passed via ThemeProvider then use it!
84 | // If not then allProps.theme will be an empty object
85 | let theme;
86 | if (isEmptyObject(allProps.theme) === false) {
87 | theme = allProps.theme;
88 | } else if (!theme) {
89 | // Otherwise use our basic default theme
90 | theme = defaultTheme;
91 | }
92 |
93 | let customProps;
94 | if (customPropsCached) {
95 | customProps = customPropsCached;
96 | } else {
97 | customProps = createPropVariations(theme.props);
98 | customPropsCached = customProps;
99 | }
100 |
101 | // TODO: memoize?
102 | const breakpoints = getBreakpoints(theme, options);
103 |
104 | const buildStyleFromObject = (props, fromPseudoClassObject = false) => {
105 | let allStyles = {};
106 |
107 | // Iterate through the component's props
108 | for (var propName in props) {
109 | const prop = props[propName];
110 | const propType = typeof prop;
111 |
112 | // Skip this style prop if blacklisted (not a style prop)
113 | // Or if not a custom style prop and it is a valid attribute
114 | if (
115 | isBlacklistedStyleProp(propName) ||
116 | (!customProps[propName] && isValidAttribute(propName))
117 | ) {
118 | continue;
119 | }
120 |
121 | // Get the prop's config
122 | let config = customProps[propName] || propName;
123 |
124 | // Make config an object if string
125 | // Could be string if using shorthand or values in pseudoClass style
126 | if (typeof config === 'string') {
127 | config = {
128 | style: config
129 | };
130 | }
131 |
132 | // See if prop is a pseudoclass (hoverColor, hoverPlaceholderColor)
133 | // Skip if custom style prop in config
134 | if (!customProps[propName]) {
135 | let wasPseudoclass = false;
136 | // Iterate through pseudoclasses (also contains pseudoelements)
137 | for (let key in pseudoclasses) {
138 | const pseudo = key;
139 | // Check if string starts with pseudoclass
140 | if (propName.startsWith(pseudo)) {
141 | // Get the portion after the pseudoclass
142 | let remainder = propName.slice(pseudo.length);
143 | remainder =
144 | remainder.charAt(0).toLowerCase() + remainder.slice(1);
145 | // Prefix with : or :: depending on whether class or element
146 | const pseudoPrefixed =
147 | (pseudoclasses[key] === 'class' ? ':' : '::') + pseudo;
148 | // Recursively call build style on remaining portion as a prop
149 | const result = buildStyleFromObject({ [remainder]: prop }, true);
150 | // Add to allStyles (or merge if already populated by another prop with same psuedoclass)
151 | if (allStyles[pseudoPrefixed]) {
152 | allStyles[pseudoPrefixed] = Object.assign(
153 | allStyles[pseudoPrefixed],
154 | result
155 | );
156 | } else {
157 | allStyles[pseudoPrefixed] = result;
158 | }
159 |
160 | wasPseudoclass = true;
161 | continue;
162 | }
163 | }
164 |
165 | // Continue because pseudoclass style already generated from recursive call
166 | if (wasPseudoclass) continue;
167 | }
168 |
169 | // No longer doing pseudoclass object syntax
170 | /*
171 | if (config.pseudoClass) {
172 | allStyles[config.pseudoClass] = buildStyleFromObject(prop, true);
173 | continue;
174 | }
175 | */
176 |
177 | // Function that looks up prop value in theme
178 | const getFromTheme = value => {
179 | // Convert value to positive if a negative number
180 | const posValue = isNegative(value) ? value * -1 : value;
181 | // Construct dot notation key to actual value in theme
182 | const fullKey = `${config.themeKey}.${posValue}`;
183 | // Get value from theme
184 | let themeValue = get(theme, fullKey);
185 | // If value from theme is a number and input value was negative ...
186 | // ... then make the theme value negative
187 | if (isNegative(value) && isNumber(themeValue)) {
188 | themeValue = themeValue * -1;
189 | }
190 | return themeValue;
191 | };
192 |
193 | // Make props value an array if it's not
194 | const propValues = Array.isArray(prop) ? prop : [prop];
195 |
196 | // Iteration through props value array
197 | for (let i = 0; i < propValues.length; i++) {
198 | let propValue = propValues[i];
199 |
200 | // If no prop value is boolean true (example: )
201 | // Then set it to defaultValue if specified
202 | if (config.defaultValue && propValue === true) {
203 | propValue = config.defaultValue;
204 | }
205 |
206 | // Prop value might be a key for actual value in theme
207 | propValue = (config.themeKey && getFromTheme(propValue)) || propValue;
208 |
209 | // Append unit to propValue if number and defaultUnit specified
210 | if (config.defaultUnit && isNumber(propValue)) {
211 | propValue = `${propValue}${config.defaultUnit}`;
212 | }
213 |
214 | let styleObj;
215 | if (typeof config === 'string') {
216 | styleObj = makeStyle(propValue, config);
217 | } else if (typeof config.style === 'function') {
218 | styleObj = config.style(propValue, propName);
219 | } else {
220 | // Otherwise assume config.style is string or array
221 | styleObj = makeStyle(propValue, config.style);
222 | }
223 |
224 | if (i === 0) {
225 | // Merge with rest of component's styles
226 | Object.assign(allStyles, styleObj);
227 | } else {
228 | // Any prop values after the first get wrapped in media query
229 | const bp = breakpoints[i - 1];
230 | if (!allStyles[bp]) allStyles[bp] = {};
231 | Object.assign(allStyles[bp], styleObj);
232 | }
233 | }
234 | }
235 |
236 | return allStyles;
237 | };
238 |
239 | return buildStyleFromObject(allProps);
240 | };
241 |
242 | return styleBuilder;
243 | }
244 |
245 | // Accepts a single css property (string) or multiple (array)
246 | // Returns a style object with
247 | function makeStyle(value, cssProperty) {
248 | let styleObj = {};
249 | // Ensure we have an array of css properties
250 | let cssProperties = Array.isArray(cssProperty) ? cssProperty : [cssProperty];
251 | // Iterate through cssProperties and build styleObj
252 | cssProperties.forEach(p => (styleObj[p] = value));
253 | return styleObj;
254 | }
255 |
256 | function createPropVariations(props) {
257 | for (var key in props) {
258 | const prop = props[key];
259 | if (prop.variations) {
260 | for (var vKey in prop.variations) {
261 | var { style, variations, ...newProp } = prop;
262 | newProp.style = variations[vKey];
263 | props[vKey] = newProp;
264 | }
265 | }
266 | }
267 | return props;
268 | }
269 |
270 | function getBreakpoints(theme, options) {
271 | return theme[options.themeBreakpointsKey].map(bp => {
272 | return `@media screen and (min-width: ${bp})`;
273 | });
274 | }
275 |
276 | function isNumber(value) {
277 | return typeof value === 'number' && !isNaN(value);
278 | }
279 |
280 | function isNegative(value) {
281 | return isNumber(value) && value < 0;
282 | }
283 |
284 | // Returns a cache object where key can be string or object/function reference
285 | function createCache() {
286 | let cache = {
287 | byString: {},
288 | byReference: {
289 | keys: [],
290 | values: []
291 | }
292 | };
293 | return {
294 | put: function(key, value) {
295 | if (typeof key === 'object') {
296 | const index = cache.byReference.keys.indexOf(key);
297 | if (index === -1) {
298 | cache.byReference.keys.push(key);
299 | cache.byReference.values.push(value);
300 | } else {
301 | cache.byReference.values[index] = value;
302 | }
303 | } else {
304 | cache.byString[key] = value;
305 | }
306 | },
307 | get: function(key) {
308 | if (!key) {
309 | return cache;
310 | } else if (typeof key === 'object') {
311 | const index = cache.byReference.keys.indexOf(key);
312 | return cache.byReference.values[index];
313 | } else {
314 | return cache.byString[key];
315 | }
316 | }
317 | };
318 | }
319 |
320 | // lodash.get alternative (much smaller file size)
321 | // From https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf
322 | function get(obj, path, def) {
323 | var fullPath = path
324 | .replace(/\[/g, '.')
325 | .replace(/]/g, '')
326 | .split('.')
327 | .filter(Boolean);
328 |
329 | return fullPath.every(everyFunc) ? obj : def;
330 |
331 | function everyFunc(step) {
332 | return !(step && (obj = obj[step]) === undefined);
333 | }
334 | }
335 |
336 | const isEmptyObject = obj =>
337 | Object.keys(obj).length === 0 && obj.constructor === Object;
338 |
--------------------------------------------------------------------------------
/src/validAttr.js:
--------------------------------------------------------------------------------
1 | // @flow
2 | /* eslint-disable max-len */
3 | /**
4 | * Trying to avoid the unknown-prop errors on styled components by filtering by
5 | * React's attribute whitelist.
6 | *
7 | * To regenerate this regex:
8 | *
9 | * 1. `npm i -g regexgen` (https://github.com/devongovett/regexgen)
10 | * 2. Run `regexgen` with the list of space-separated words below as input
11 | * 3. Surround the emitted regex with this: `/^(GENERATED_REGEX)$/` -- this will ensure a full string match
12 | * and no false positives from partials
13 | * */
14 | /*
15 | children dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onInvalid onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controlsList controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan onPointerDown onPointerMove onPointerUp onPointerCancel onGotPointerCapture onLostPointerCapture onPointerEnter onPointerLeave onPointerOver onPointerOut class for autofocus
16 | */
17 | /* eslint-enable max-len */
18 |
19 | const ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:Animation|Touch|Load|Drag)Start|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|Lo(?:stPointer|ad)|TimeUpdate|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|GotPointer|MouseDown|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|KeyPress|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|P(?:rogress|laying)|DragEnd|Key(?:Down|Up)|(?:MouseU|Dro)p|(?:Wait|Seek)ing|Scroll|Focus|Paste|Abort|Drag|Play|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|onPointerLeav|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|onPointerMov|(?:attribute|glyph)Nam|playsInlin|(?:writing|input|edge)Mod|(?:formE|e)ncTyp|(?:amplitu|mo)d|(?:xlinkTy|itemSco|keyTy|slo)p|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ord)s|o(?:lor(?:Interpolation)?|nt(?:rols|ent))|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|(?:ontrolsLis|apHeigh)t|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|o(?:ntextMenu|ls)|(?:rossOrigi|olSpa)n|l(?:ip(?:Path)?|ass)|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|auto[Ff]ocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|on(?:PointerDow|FocusI)|formActio|zoomAndPa|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveA(?:spectRatio|lpha)|ointsAt[X-Z]|anose1)|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:gradientT|patternT|t)ransform|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:strokeMiterlimi|(?:specularConsta|repeatCou|fontVaria)n|(?:(?:specularE|e)xpon|renderingInt|asc)en|d(?:iffuseConsta|esce)n|(?:fontSizeAdju|lengthAdju|manife)s|baselineShif|onPointerOu|vectorEffec|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|markerStar|a(?:utoCorrec|bou)|onFocusOu|intercep|restar|forma|inlis|heigh|lis)t|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|k(?:ernel(?:UnitLength|Matrix)|[1-4])|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|(?:markerM|onInval)i|preloa|metho|kin)d|strokeDasharray|(?:onPointerCanc|lab)el|(?:allowFullScre|hidd)en|systemLanguage|(?:(?:o(?:nPointer(?:Ent|Ov)|rd)|allowReord|placehold|frameBord|paintOrd|post)e|repeatDu|d(?:efe|u))r|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|(?:pointerEve|keyPoi)nts|(?:strokeLineca|onPointerU|itemPro|useMa|wra|loo)p|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|(?:vI|i)deographic|unicodeRange|mathematical|vAlphabetic|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|(?:xmlnsXl|valueL)ink|mediaGroup|spellCheck|(?:text|m(?:in|ax))Length|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|a(?:rabicForm|l(?:phabetic|t)|sync)|pathLength|innerHTML|xlinkShow|(?:xlinkHr|glyphR)ef|(?:tabInde|(?:sand|b)bo|viewBo)x|(?:(?:href|xml|src)La|kerni)ng|autoPlay|o(?:verflow|pen)|f(?:o(?:ntSize|rm?)|il(?:ter|l))|r(?:e(?:quired|sult|f))?|divisor|p(?:attern|oints)|unicode|d(?:efault|ata|ir)?|i(?:temRef|n2|s)|t(?:arget[XY]|o)|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|(?:width|size)s|prefix|typeof|itemID|s(?:t(?:roke|art)|hape|cope|rc)|t(?:arget|ype)|(?:stri|la)ng|a(?:ccept|s)|m(?:edia|a(?:sk|x)|in)|x(?:mlns)?|width|value|size|href|k(?:ey)?|end|low|by|i[dn]|y[12]|g[12]|x[12]|f[xy]|[yz])$/;
20 |
21 | /* From DOMProperty */
22 | const ATTRIBUTE_NAME_START_CHAR =
23 | ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
24 | const ATTRIBUTE_NAME_CHAR = `${ATTRIBUTE_NAME_START_CHAR}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;
25 | const isCustomAttribute = RegExp.prototype.test.bind(
26 | new RegExp(`^(x|data|aria)-[${ATTRIBUTE_NAME_CHAR}]*$`)
27 | );
28 |
29 | export default name =>
30 | ATTRIBUTE_REGEX.test(name) || isCustomAttribute(name.toLowerCase());
31 |
--------------------------------------------------------------------------------
/themes/default.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | breakpoints: ['576px', '768px', '992px', '1200px'],
3 | space: [0, 4, 8, 16, 32, 64, 128, 256, 512],
4 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
5 | // Custom style props go in the props object
6 | props: {
7 | f: {
8 | // Where to find values in theme
9 | themeKey: 'fontSizes',
10 | // Default unit if none specified
11 | defaultUnit: 'px',
12 | // Resulting css property
13 | style: 'fontSize'
14 | },
15 | color: {
16 | // Extend theme and add colors object
17 | themeKey: 'colors',
18 | style: 'color'
19 | },
20 | bg: {
21 | themeKey: 'colors',
22 | style: 'backgroundColor'
23 | },
24 | borderColor: {
25 | themeKey: 'colors',
26 | style: 'borderColor'
27 | },
28 | d: {
29 | style: 'display'
30 | },
31 | p: {
32 | themeKey: 'space',
33 | defaultUnit: 'px',
34 | style: 'padding',
35 | // Directional variations
36 | variations: {
37 | pt: 'paddingTop',
38 | pr: 'paddingRight',
39 | pb: 'paddingBottom',
40 | pl: 'paddingLeft',
41 | px: ['paddingLeft', 'paddingRight'],
42 | py: ['paddingTop', 'paddingBottom']
43 | }
44 | },
45 | m: {
46 | themeKey: 'space',
47 | defaultUnit: 'px',
48 | style: 'margin',
49 | variations: {
50 | mt: 'marginTop',
51 | mr: 'marginRight',
52 | mb: 'marginBottom',
53 | ml: 'marginLeft',
54 | mx: ['marginLeft', 'marginRight'],
55 | my: ['marginTop', 'marginBottom']
56 | }
57 | },
58 | h: {
59 | style: 'height'
60 | },
61 | // Advanced width prop
62 | w: {
63 | // Style is a function instead of a string
64 | style: function(value) {
65 | let width = value;
66 | // If less than 1 make it a fraction of 100% (1/3 = 33.33...%, etc)
67 | // Nice for column widths (
)
68 | if (isNumber(width) && width <= 1) {
69 | width = width * 100 + '%';
70 | }
71 | return {
72 | width: width
73 | };
74 | }
75 | }
76 | }
77 | };
78 |
79 | function isNumber(n) {
80 | return typeof n === 'number' && !isNaN(n);
81 | }
82 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const webpack = require("webpack");
2 |
3 | const config = {
4 | entry: {
5 | emotion: "./src/emotion.js",
6 | "styled-components": "./src/styled-components.js"
7 | },
8 | module: {
9 | loaders: [
10 | {
11 | test: /\.js$/,
12 | loaders: ["babel-loader"],
13 | include: __dirname + "/src"
14 | }
15 | ]
16 | },
17 | externals: {
18 | react: "react",
19 | "styled-components": "styled-components",
20 | emotion: "emotion",
21 | "react-emotion": "react-emotion",
22 | "@emotion/is-prop-valid": "@emotion/is-prop-valid"
23 | },
24 | output: {
25 | path: __dirname,
26 | filename: "[name].js",
27 | library: "Subatomic",
28 | libraryTarget: "umd"
29 | }
30 | };
31 |
32 | module.exports = config;
33 |
--------------------------------------------------------------------------------