├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── demo.png ├── dist ├── gradientify.min.js └── index.js ├── logo.png ├── package-lock.json ├── package.json ├── src └── index.ts └── tsconfig.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "module": { 4 | "presets": [ 5 | "@babel/preset-typescript", 6 | "@babel/preset-env" 7 | ], 8 | "plugins": [ 9 | "transform-object-rest-spread", 10 | "transform-class-properties", 11 | "@babel/plugin-transform-modules-commonjs" 12 | ] 13 | }, 14 | "commonjs": { 15 | "presets": [ 16 | "@babel/preset-typescript", 17 | "@babel/preset-env", 18 | "minify" 19 | ], 20 | "plugins": [ 21 | "transform-object-rest-spread", 22 | "transform-class-properties", 23 | [ 24 | "remove-import-export", 25 | { 26 | "removeImport": true, 27 | "removeExport": true, 28 | "removeExportDefault": false, 29 | "preseveNamedDeclaration": true 30 | } 31 | ] 32 | ] 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Karol Świerczek 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 | Create beautiful, animated gradients with ease. 4 | 5 | Ever wanted to animate a gradient background, but CSS transitions disappointed you with their lack of this in-extremely-high-demand functionality? Worry no more! 6 | 7 | 8 | DEMO 9 | 10 | 11 | ## Installation 12 | 13 | For wizards: 14 | ``` 15 | npm i gradientify 16 | ``` 17 | 18 | 19 | For less-experienced wizards: 20 | ```html 21 | 22 | ``` 23 | 24 | ## Usage 25 | 26 | ```javascript 27 | let gradientify = new Gradientify( 28 | '.yourClass', 29 | [ 30 | "linear-gradient(60deg, rgb(255, 0, 0), rgb(0, 0, 255))", // Array of CSS gradients 31 | "linear-gradient(10deg, rgb(25, 123, 23), #ff22af)", 32 | "radial-gradient(rgb(25, 123, 223), red)" 33 | ], 34 | 3000 // Fading interval in miliseconds 35 | ) 36 | ``` 37 | 38 | 39 | -------------------------------------------------------------------------------- /demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karolsw3/gradientify/2c866618809bad90687cc8b0b137fed9cf94bfe4/demo.png -------------------------------------------------------------------------------- /dist/gradientify.min.js: -------------------------------------------------------------------------------- 1 | "use strict";function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(a,b){if(Symbol.iterator in Object(a)||"[object Arguments]"===Object.prototype.toString.call(a)){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h["return"]||h["return"]()}finally{if(e)throw f}}return c}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d= 2.1.2 < 3" 2225 | } 2226 | }, 2227 | "ignore-walk": { 2228 | "version": "3.0.3", 2229 | "bundled": true, 2230 | "dev": true, 2231 | "optional": true, 2232 | "requires": { 2233 | "minimatch": "^3.0.4" 2234 | } 2235 | }, 2236 | "inflight": { 2237 | "version": "1.0.6", 2238 | "bundled": true, 2239 | "dev": true, 2240 | "optional": true, 2241 | "requires": { 2242 | "once": "^1.3.0", 2243 | "wrappy": "1" 2244 | } 2245 | }, 2246 | "inherits": { 2247 | "version": "2.0.4", 2248 | "bundled": true, 2249 | "dev": true, 2250 | "optional": true 2251 | }, 2252 | "ini": { 2253 | "version": "1.3.5", 2254 | "bundled": true, 2255 | "dev": true, 2256 | "optional": true 2257 | }, 2258 | "is-fullwidth-code-point": { 2259 | "version": "1.0.0", 2260 | "bundled": true, 2261 | "dev": true, 2262 | "optional": true, 2263 | "requires": { 2264 | "number-is-nan": "^1.0.0" 2265 | } 2266 | }, 2267 | "isarray": { 2268 | "version": "1.0.0", 2269 | "bundled": true, 2270 | "dev": true, 2271 | "optional": true 2272 | }, 2273 | "minimatch": { 2274 | "version": "3.0.4", 2275 | "bundled": true, 2276 | "dev": true, 2277 | "optional": true, 2278 | "requires": { 2279 | "brace-expansion": "^1.1.7" 2280 | } 2281 | }, 2282 | "minimist": { 2283 | "version": "0.0.8", 2284 | "bundled": true, 2285 | "dev": true, 2286 | "optional": true 2287 | }, 2288 | "minipass": { 2289 | "version": "2.9.0", 2290 | "bundled": true, 2291 | "dev": true, 2292 | "optional": true, 2293 | "requires": { 2294 | "safe-buffer": "^5.1.2", 2295 | "yallist": "^3.0.0" 2296 | } 2297 | }, 2298 | "minizlib": { 2299 | "version": "1.3.3", 2300 | "bundled": true, 2301 | "dev": true, 2302 | "optional": true, 2303 | "requires": { 2304 | "minipass": "^2.9.0" 2305 | } 2306 | }, 2307 | "mkdirp": { 2308 | "version": "0.5.1", 2309 | "bundled": true, 2310 | "dev": true, 2311 | "optional": true, 2312 | "requires": { 2313 | "minimist": "0.0.8" 2314 | } 2315 | }, 2316 | "ms": { 2317 | "version": "2.1.2", 2318 | "bundled": true, 2319 | "dev": true, 2320 | "optional": true 2321 | }, 2322 | "needle": { 2323 | "version": "2.4.0", 2324 | "bundled": true, 2325 | "dev": true, 2326 | "optional": true, 2327 | "requires": { 2328 | "debug": "^3.2.6", 2329 | "iconv-lite": "^0.4.4", 2330 | "sax": "^1.2.4" 2331 | } 2332 | }, 2333 | "node-pre-gyp": { 2334 | "version": "0.14.0", 2335 | "bundled": true, 2336 | "dev": true, 2337 | "optional": true, 2338 | "requires": { 2339 | "detect-libc": "^1.0.2", 2340 | "mkdirp": "^0.5.1", 2341 | "needle": "^2.2.1", 2342 | "nopt": "^4.0.1", 2343 | "npm-packlist": "^1.1.6", 2344 | "npmlog": "^4.0.2", 2345 | "rc": "^1.2.7", 2346 | "rimraf": "^2.6.1", 2347 | "semver": "^5.3.0", 2348 | "tar": "^4.4.2" 2349 | } 2350 | }, 2351 | "nopt": { 2352 | "version": "4.0.1", 2353 | "bundled": true, 2354 | "dev": true, 2355 | "optional": true, 2356 | "requires": { 2357 | "abbrev": "1", 2358 | "osenv": "^0.1.4" 2359 | } 2360 | }, 2361 | "npm-bundled": { 2362 | "version": "1.1.1", 2363 | "bundled": true, 2364 | "dev": true, 2365 | "optional": true, 2366 | "requires": { 2367 | "npm-normalize-package-bin": "^1.0.1" 2368 | } 2369 | }, 2370 | "npm-normalize-package-bin": { 2371 | "version": "1.0.1", 2372 | "bundled": true, 2373 | "dev": true, 2374 | "optional": true 2375 | }, 2376 | "npm-packlist": { 2377 | "version": "1.4.7", 2378 | "bundled": true, 2379 | "dev": true, 2380 | "optional": true, 2381 | "requires": { 2382 | "ignore-walk": "^3.0.1", 2383 | "npm-bundled": "^1.0.1" 2384 | } 2385 | }, 2386 | "npmlog": { 2387 | "version": "4.1.2", 2388 | "bundled": true, 2389 | "dev": true, 2390 | "optional": true, 2391 | "requires": { 2392 | "are-we-there-yet": "~1.1.2", 2393 | "console-control-strings": "~1.1.0", 2394 | "gauge": "~2.7.3", 2395 | "set-blocking": "~2.0.0" 2396 | } 2397 | }, 2398 | "number-is-nan": { 2399 | "version": "1.0.1", 2400 | "bundled": true, 2401 | "dev": true, 2402 | "optional": true 2403 | }, 2404 | "object-assign": { 2405 | "version": "4.1.1", 2406 | "bundled": true, 2407 | "dev": true, 2408 | "optional": true 2409 | }, 2410 | "once": { 2411 | "version": "1.4.0", 2412 | "bundled": true, 2413 | "dev": true, 2414 | "optional": true, 2415 | "requires": { 2416 | "wrappy": "1" 2417 | } 2418 | }, 2419 | "os-homedir": { 2420 | "version": "1.0.2", 2421 | "bundled": true, 2422 | "dev": true, 2423 | "optional": true 2424 | }, 2425 | "os-tmpdir": { 2426 | "version": "1.0.2", 2427 | "bundled": true, 2428 | "dev": true, 2429 | "optional": true 2430 | }, 2431 | "osenv": { 2432 | "version": "0.1.5", 2433 | "bundled": true, 2434 | "dev": true, 2435 | "optional": true, 2436 | "requires": { 2437 | "os-homedir": "^1.0.0", 2438 | "os-tmpdir": "^1.0.0" 2439 | } 2440 | }, 2441 | "path-is-absolute": { 2442 | "version": "1.0.1", 2443 | "bundled": true, 2444 | "dev": true, 2445 | "optional": true 2446 | }, 2447 | "process-nextick-args": { 2448 | "version": "2.0.1", 2449 | "bundled": true, 2450 | "dev": true, 2451 | "optional": true 2452 | }, 2453 | "rc": { 2454 | "version": "1.2.8", 2455 | "bundled": true, 2456 | "dev": true, 2457 | "optional": true, 2458 | "requires": { 2459 | "deep-extend": "^0.6.0", 2460 | "ini": "~1.3.0", 2461 | "minimist": "^1.2.0", 2462 | "strip-json-comments": "~2.0.1" 2463 | }, 2464 | "dependencies": { 2465 | "minimist": { 2466 | "version": "1.2.0", 2467 | "bundled": true, 2468 | "dev": true, 2469 | "optional": true 2470 | } 2471 | } 2472 | }, 2473 | "readable-stream": { 2474 | "version": "2.3.6", 2475 | "bundled": true, 2476 | "dev": true, 2477 | "optional": true, 2478 | "requires": { 2479 | "core-util-is": "~1.0.0", 2480 | "inherits": "~2.0.3", 2481 | "isarray": "~1.0.0", 2482 | "process-nextick-args": "~2.0.0", 2483 | "safe-buffer": "~5.1.1", 2484 | "string_decoder": "~1.1.1", 2485 | "util-deprecate": "~1.0.1" 2486 | } 2487 | }, 2488 | "rimraf": { 2489 | "version": "2.7.1", 2490 | "bundled": true, 2491 | "dev": true, 2492 | "optional": true, 2493 | "requires": { 2494 | "glob": "^7.1.3" 2495 | } 2496 | }, 2497 | "safe-buffer": { 2498 | "version": "5.1.2", 2499 | "bundled": true, 2500 | "dev": true, 2501 | "optional": true 2502 | }, 2503 | "safer-buffer": { 2504 | "version": "2.1.2", 2505 | "bundled": true, 2506 | "dev": true, 2507 | "optional": true 2508 | }, 2509 | "sax": { 2510 | "version": "1.2.4", 2511 | "bundled": true, 2512 | "dev": true, 2513 | "optional": true 2514 | }, 2515 | "semver": { 2516 | "version": "5.7.1", 2517 | "bundled": true, 2518 | "dev": true, 2519 | "optional": true 2520 | }, 2521 | "set-blocking": { 2522 | "version": "2.0.0", 2523 | "bundled": true, 2524 | "dev": true, 2525 | "optional": true 2526 | }, 2527 | "signal-exit": { 2528 | "version": "3.0.2", 2529 | "bundled": true, 2530 | "dev": true, 2531 | "optional": true 2532 | }, 2533 | "string-width": { 2534 | "version": "1.0.2", 2535 | "bundled": true, 2536 | "dev": true, 2537 | "optional": true, 2538 | "requires": { 2539 | "code-point-at": "^1.0.0", 2540 | "is-fullwidth-code-point": "^1.0.0", 2541 | "strip-ansi": "^3.0.0" 2542 | } 2543 | }, 2544 | "string_decoder": { 2545 | "version": "1.1.1", 2546 | "bundled": true, 2547 | "dev": true, 2548 | "optional": true, 2549 | "requires": { 2550 | "safe-buffer": "~5.1.0" 2551 | } 2552 | }, 2553 | "strip-ansi": { 2554 | "version": "3.0.1", 2555 | "bundled": true, 2556 | "dev": true, 2557 | "optional": true, 2558 | "requires": { 2559 | "ansi-regex": "^2.0.0" 2560 | } 2561 | }, 2562 | "strip-json-comments": { 2563 | "version": "2.0.1", 2564 | "bundled": true, 2565 | "dev": true, 2566 | "optional": true 2567 | }, 2568 | "tar": { 2569 | "version": "4.4.13", 2570 | "bundled": true, 2571 | "dev": true, 2572 | "optional": true, 2573 | "requires": { 2574 | "chownr": "^1.1.1", 2575 | "fs-minipass": "^1.2.5", 2576 | "minipass": "^2.8.6", 2577 | "minizlib": "^1.2.1", 2578 | "mkdirp": "^0.5.0", 2579 | "safe-buffer": "^5.1.2", 2580 | "yallist": "^3.0.3" 2581 | } 2582 | }, 2583 | "util-deprecate": { 2584 | "version": "1.0.2", 2585 | "bundled": true, 2586 | "dev": true, 2587 | "optional": true 2588 | }, 2589 | "wide-align": { 2590 | "version": "1.1.3", 2591 | "bundled": true, 2592 | "dev": true, 2593 | "optional": true, 2594 | "requires": { 2595 | "string-width": "^1.0.2 || 2" 2596 | } 2597 | }, 2598 | "wrappy": { 2599 | "version": "1.0.2", 2600 | "bundled": true, 2601 | "dev": true, 2602 | "optional": true 2603 | }, 2604 | "yallist": { 2605 | "version": "3.1.1", 2606 | "bundled": true, 2607 | "dev": true, 2608 | "optional": true 2609 | } 2610 | } 2611 | }, 2612 | "function-bind": { 2613 | "version": "1.1.1", 2614 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2615 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2616 | "dev": true 2617 | }, 2618 | "get-value": { 2619 | "version": "2.0.6", 2620 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 2621 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 2622 | "dev": true, 2623 | "optional": true 2624 | }, 2625 | "glob": { 2626 | "version": "7.1.6", 2627 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 2628 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 2629 | "dev": true, 2630 | "requires": { 2631 | "fs.realpath": "^1.0.0", 2632 | "inflight": "^1.0.4", 2633 | "inherits": "2", 2634 | "minimatch": "^3.0.4", 2635 | "once": "^1.3.0", 2636 | "path-is-absolute": "^1.0.0" 2637 | } 2638 | }, 2639 | "glob-parent": { 2640 | "version": "3.1.0", 2641 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 2642 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 2643 | "dev": true, 2644 | "optional": true, 2645 | "requires": { 2646 | "is-glob": "^3.1.0", 2647 | "path-dirname": "^1.0.0" 2648 | }, 2649 | "dependencies": { 2650 | "is-glob": { 2651 | "version": "3.1.0", 2652 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 2653 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 2654 | "dev": true, 2655 | "optional": true, 2656 | "requires": { 2657 | "is-extglob": "^2.1.0" 2658 | } 2659 | } 2660 | } 2661 | }, 2662 | "globals": { 2663 | "version": "9.18.0", 2664 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 2665 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 2666 | "dev": true 2667 | }, 2668 | "graceful-fs": { 2669 | "version": "4.2.3", 2670 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 2671 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", 2672 | "dev": true, 2673 | "optional": true 2674 | }, 2675 | "has-ansi": { 2676 | "version": "2.0.0", 2677 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 2678 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 2679 | "dev": true, 2680 | "requires": { 2681 | "ansi-regex": "^2.0.0" 2682 | } 2683 | }, 2684 | "has-flag": { 2685 | "version": "3.0.0", 2686 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2687 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2688 | "dev": true 2689 | }, 2690 | "has-symbols": { 2691 | "version": "1.0.1", 2692 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 2693 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 2694 | "dev": true 2695 | }, 2696 | "has-value": { 2697 | "version": "1.0.0", 2698 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 2699 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 2700 | "dev": true, 2701 | "optional": true, 2702 | "requires": { 2703 | "get-value": "^2.0.6", 2704 | "has-values": "^1.0.0", 2705 | "isobject": "^3.0.0" 2706 | } 2707 | }, 2708 | "has-values": { 2709 | "version": "1.0.0", 2710 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 2711 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 2712 | "dev": true, 2713 | "optional": true, 2714 | "requires": { 2715 | "is-number": "^3.0.0", 2716 | "kind-of": "^4.0.0" 2717 | }, 2718 | "dependencies": { 2719 | "kind-of": { 2720 | "version": "4.0.0", 2721 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2722 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2723 | "dev": true, 2724 | "optional": true, 2725 | "requires": { 2726 | "is-buffer": "^1.1.5" 2727 | } 2728 | } 2729 | } 2730 | }, 2731 | "inflight": { 2732 | "version": "1.0.6", 2733 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2734 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2735 | "dev": true, 2736 | "requires": { 2737 | "once": "^1.3.0", 2738 | "wrappy": "1" 2739 | } 2740 | }, 2741 | "inherits": { 2742 | "version": "2.0.4", 2743 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2744 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2745 | "dev": true 2746 | }, 2747 | "invariant": { 2748 | "version": "2.2.4", 2749 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 2750 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 2751 | "dev": true, 2752 | "requires": { 2753 | "loose-envify": "^1.0.0" 2754 | } 2755 | }, 2756 | "is-accessor-descriptor": { 2757 | "version": "0.1.6", 2758 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2759 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2760 | "dev": true, 2761 | "optional": true, 2762 | "requires": { 2763 | "kind-of": "^3.0.2" 2764 | }, 2765 | "dependencies": { 2766 | "kind-of": { 2767 | "version": "3.2.2", 2768 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2769 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2770 | "dev": true, 2771 | "optional": true, 2772 | "requires": { 2773 | "is-buffer": "^1.1.5" 2774 | } 2775 | } 2776 | } 2777 | }, 2778 | "is-binary-path": { 2779 | "version": "1.0.1", 2780 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2781 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2782 | "dev": true, 2783 | "optional": true, 2784 | "requires": { 2785 | "binary-extensions": "^1.0.0" 2786 | } 2787 | }, 2788 | "is-buffer": { 2789 | "version": "1.1.6", 2790 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2791 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 2792 | "dev": true, 2793 | "optional": true 2794 | }, 2795 | "is-data-descriptor": { 2796 | "version": "0.1.4", 2797 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2798 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2799 | "dev": true, 2800 | "optional": true, 2801 | "requires": { 2802 | "kind-of": "^3.0.2" 2803 | }, 2804 | "dependencies": { 2805 | "kind-of": { 2806 | "version": "3.2.2", 2807 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2808 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2809 | "dev": true, 2810 | "optional": true, 2811 | "requires": { 2812 | "is-buffer": "^1.1.5" 2813 | } 2814 | } 2815 | } 2816 | }, 2817 | "is-descriptor": { 2818 | "version": "0.1.6", 2819 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 2820 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 2821 | "dev": true, 2822 | "optional": true, 2823 | "requires": { 2824 | "is-accessor-descriptor": "^0.1.6", 2825 | "is-data-descriptor": "^0.1.4", 2826 | "kind-of": "^5.0.0" 2827 | }, 2828 | "dependencies": { 2829 | "kind-of": { 2830 | "version": "5.1.0", 2831 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 2832 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 2833 | "dev": true, 2834 | "optional": true 2835 | } 2836 | } 2837 | }, 2838 | "is-extendable": { 2839 | "version": "0.1.1", 2840 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2841 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2842 | "dev": true, 2843 | "optional": true 2844 | }, 2845 | "is-extglob": { 2846 | "version": "2.1.1", 2847 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2848 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2849 | "dev": true, 2850 | "optional": true 2851 | }, 2852 | "is-glob": { 2853 | "version": "4.0.1", 2854 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 2855 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 2856 | "dev": true, 2857 | "optional": true, 2858 | "requires": { 2859 | "is-extglob": "^2.1.1" 2860 | } 2861 | }, 2862 | "is-number": { 2863 | "version": "3.0.0", 2864 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2865 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2866 | "dev": true, 2867 | "optional": true, 2868 | "requires": { 2869 | "kind-of": "^3.0.2" 2870 | }, 2871 | "dependencies": { 2872 | "kind-of": { 2873 | "version": "3.2.2", 2874 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2875 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2876 | "dev": true, 2877 | "optional": true, 2878 | "requires": { 2879 | "is-buffer": "^1.1.5" 2880 | } 2881 | } 2882 | } 2883 | }, 2884 | "is-plain-object": { 2885 | "version": "2.0.4", 2886 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2887 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2888 | "dev": true, 2889 | "optional": true, 2890 | "requires": { 2891 | "isobject": "^3.0.1" 2892 | } 2893 | }, 2894 | "is-windows": { 2895 | "version": "1.0.2", 2896 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2897 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2898 | "dev": true, 2899 | "optional": true 2900 | }, 2901 | "isarray": { 2902 | "version": "1.0.0", 2903 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2904 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2905 | "dev": true, 2906 | "optional": true 2907 | }, 2908 | "isobject": { 2909 | "version": "3.0.1", 2910 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2911 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2912 | "dev": true, 2913 | "optional": true 2914 | }, 2915 | "js-levenshtein": { 2916 | "version": "1.1.6", 2917 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 2918 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", 2919 | "dev": true 2920 | }, 2921 | "js-tokens": { 2922 | "version": "3.0.2", 2923 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 2924 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 2925 | "dev": true 2926 | }, 2927 | "jsesc": { 2928 | "version": "2.5.2", 2929 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2930 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2931 | "dev": true 2932 | }, 2933 | "kind-of": { 2934 | "version": "6.0.2", 2935 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2936 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2937 | "dev": true, 2938 | "optional": true 2939 | }, 2940 | "lodash": { 2941 | "version": "4.17.15", 2942 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 2943 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 2944 | "dev": true 2945 | }, 2946 | "loose-envify": { 2947 | "version": "1.4.0", 2948 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2949 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2950 | "dev": true, 2951 | "requires": { 2952 | "js-tokens": "^3.0.0 || ^4.0.0" 2953 | } 2954 | }, 2955 | "make-dir": { 2956 | "version": "2.1.0", 2957 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2958 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2959 | "dev": true, 2960 | "requires": { 2961 | "pify": "^4.0.1", 2962 | "semver": "^5.6.0" 2963 | } 2964 | }, 2965 | "map-cache": { 2966 | "version": "0.2.2", 2967 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2968 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2969 | "dev": true, 2970 | "optional": true 2971 | }, 2972 | "map-visit": { 2973 | "version": "1.0.0", 2974 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2975 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2976 | "dev": true, 2977 | "optional": true, 2978 | "requires": { 2979 | "object-visit": "^1.0.0" 2980 | } 2981 | }, 2982 | "micromatch": { 2983 | "version": "3.1.10", 2984 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 2985 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 2986 | "dev": true, 2987 | "optional": true, 2988 | "requires": { 2989 | "arr-diff": "^4.0.0", 2990 | "array-unique": "^0.3.2", 2991 | "braces": "^2.3.1", 2992 | "define-property": "^2.0.2", 2993 | "extend-shallow": "^3.0.2", 2994 | "extglob": "^2.0.4", 2995 | "fragment-cache": "^0.2.1", 2996 | "kind-of": "^6.0.2", 2997 | "nanomatch": "^1.2.9", 2998 | "object.pick": "^1.3.0", 2999 | "regex-not": "^1.0.0", 3000 | "snapdragon": "^0.8.1", 3001 | "to-regex": "^3.0.2" 3002 | } 3003 | }, 3004 | "minimatch": { 3005 | "version": "3.0.4", 3006 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3007 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3008 | "dev": true, 3009 | "requires": { 3010 | "brace-expansion": "^1.1.7" 3011 | } 3012 | }, 3013 | "mixin-deep": { 3014 | "version": "1.3.2", 3015 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 3016 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 3017 | "dev": true, 3018 | "optional": true, 3019 | "requires": { 3020 | "for-in": "^1.0.2", 3021 | "is-extendable": "^1.0.1" 3022 | }, 3023 | "dependencies": { 3024 | "is-extendable": { 3025 | "version": "1.0.1", 3026 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 3027 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 3028 | "dev": true, 3029 | "optional": true, 3030 | "requires": { 3031 | "is-plain-object": "^2.0.4" 3032 | } 3033 | } 3034 | } 3035 | }, 3036 | "ms": { 3037 | "version": "2.0.0", 3038 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3039 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3040 | "dev": true 3041 | }, 3042 | "nan": { 3043 | "version": "2.14.0", 3044 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", 3045 | "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", 3046 | "dev": true, 3047 | "optional": true 3048 | }, 3049 | "nanomatch": { 3050 | "version": "1.2.13", 3051 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 3052 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 3053 | "dev": true, 3054 | "optional": true, 3055 | "requires": { 3056 | "arr-diff": "^4.0.0", 3057 | "array-unique": "^0.3.2", 3058 | "define-property": "^2.0.2", 3059 | "extend-shallow": "^3.0.2", 3060 | "fragment-cache": "^0.2.1", 3061 | "is-windows": "^1.0.2", 3062 | "kind-of": "^6.0.2", 3063 | "object.pick": "^1.3.0", 3064 | "regex-not": "^1.0.0", 3065 | "snapdragon": "^0.8.1", 3066 | "to-regex": "^3.0.1" 3067 | } 3068 | }, 3069 | "node-releases": { 3070 | "version": "1.1.43", 3071 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.43.tgz", 3072 | "integrity": "sha512-Rmfnj52WNhvr83MvuAWHEqXVoZXCcDQssSOffU4n4XOL9sPrP61mSZ88g25NqmABDvH7PiAlFCzoSCSdzA293w==", 3073 | "dev": true, 3074 | "requires": { 3075 | "semver": "^6.3.0" 3076 | }, 3077 | "dependencies": { 3078 | "semver": { 3079 | "version": "6.3.0", 3080 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3081 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3082 | "dev": true 3083 | } 3084 | } 3085 | }, 3086 | "normalize-path": { 3087 | "version": "3.0.0", 3088 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3089 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3090 | "dev": true, 3091 | "optional": true 3092 | }, 3093 | "object-copy": { 3094 | "version": "0.1.0", 3095 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 3096 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 3097 | "dev": true, 3098 | "optional": true, 3099 | "requires": { 3100 | "copy-descriptor": "^0.1.0", 3101 | "define-property": "^0.2.5", 3102 | "kind-of": "^3.0.3" 3103 | }, 3104 | "dependencies": { 3105 | "define-property": { 3106 | "version": "0.2.5", 3107 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3108 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3109 | "dev": true, 3110 | "optional": true, 3111 | "requires": { 3112 | "is-descriptor": "^0.1.0" 3113 | } 3114 | }, 3115 | "kind-of": { 3116 | "version": "3.2.2", 3117 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3118 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3119 | "dev": true, 3120 | "optional": true, 3121 | "requires": { 3122 | "is-buffer": "^1.1.5" 3123 | } 3124 | } 3125 | } 3126 | }, 3127 | "object-keys": { 3128 | "version": "1.1.1", 3129 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 3130 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 3131 | "dev": true 3132 | }, 3133 | "object-visit": { 3134 | "version": "1.0.1", 3135 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 3136 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 3137 | "dev": true, 3138 | "optional": true, 3139 | "requires": { 3140 | "isobject": "^3.0.0" 3141 | } 3142 | }, 3143 | "object.assign": { 3144 | "version": "4.1.0", 3145 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 3146 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 3147 | "dev": true, 3148 | "requires": { 3149 | "define-properties": "^1.1.2", 3150 | "function-bind": "^1.1.1", 3151 | "has-symbols": "^1.0.0", 3152 | "object-keys": "^1.0.11" 3153 | } 3154 | }, 3155 | "object.pick": { 3156 | "version": "1.3.0", 3157 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 3158 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 3159 | "dev": true, 3160 | "optional": true, 3161 | "requires": { 3162 | "isobject": "^3.0.1" 3163 | } 3164 | }, 3165 | "once": { 3166 | "version": "1.4.0", 3167 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3168 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3169 | "dev": true, 3170 | "requires": { 3171 | "wrappy": "1" 3172 | } 3173 | }, 3174 | "pascalcase": { 3175 | "version": "0.1.1", 3176 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 3177 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 3178 | "dev": true, 3179 | "optional": true 3180 | }, 3181 | "path-dirname": { 3182 | "version": "1.0.2", 3183 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 3184 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 3185 | "dev": true, 3186 | "optional": true 3187 | }, 3188 | "path-is-absolute": { 3189 | "version": "1.0.1", 3190 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3191 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3192 | "dev": true 3193 | }, 3194 | "path-parse": { 3195 | "version": "1.0.6", 3196 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 3197 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 3198 | "dev": true 3199 | }, 3200 | "pify": { 3201 | "version": "4.0.1", 3202 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 3203 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 3204 | "dev": true 3205 | }, 3206 | "posix-character-classes": { 3207 | "version": "0.1.1", 3208 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 3209 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 3210 | "dev": true, 3211 | "optional": true 3212 | }, 3213 | "private": { 3214 | "version": "0.1.8", 3215 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 3216 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 3217 | "dev": true 3218 | }, 3219 | "process-nextick-args": { 3220 | "version": "2.0.1", 3221 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3222 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3223 | "dev": true, 3224 | "optional": true 3225 | }, 3226 | "readable-stream": { 3227 | "version": "2.3.6", 3228 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 3229 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 3230 | "dev": true, 3231 | "optional": true, 3232 | "requires": { 3233 | "core-util-is": "~1.0.0", 3234 | "inherits": "~2.0.3", 3235 | "isarray": "~1.0.0", 3236 | "process-nextick-args": "~2.0.0", 3237 | "safe-buffer": "~5.1.1", 3238 | "string_decoder": "~1.1.1", 3239 | "util-deprecate": "~1.0.1" 3240 | } 3241 | }, 3242 | "readdirp": { 3243 | "version": "2.2.1", 3244 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 3245 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 3246 | "dev": true, 3247 | "optional": true, 3248 | "requires": { 3249 | "graceful-fs": "^4.1.11", 3250 | "micromatch": "^3.1.10", 3251 | "readable-stream": "^2.0.2" 3252 | } 3253 | }, 3254 | "regenerate": { 3255 | "version": "1.4.0", 3256 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 3257 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 3258 | "dev": true 3259 | }, 3260 | "regenerate-unicode-properties": { 3261 | "version": "8.1.0", 3262 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", 3263 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", 3264 | "dev": true, 3265 | "requires": { 3266 | "regenerate": "^1.4.0" 3267 | } 3268 | }, 3269 | "regenerator-runtime": { 3270 | "version": "0.11.1", 3271 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 3272 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 3273 | "dev": true 3274 | }, 3275 | "regenerator-transform": { 3276 | "version": "0.14.1", 3277 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", 3278 | "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", 3279 | "dev": true, 3280 | "requires": { 3281 | "private": "^0.1.6" 3282 | } 3283 | }, 3284 | "regex-not": { 3285 | "version": "1.0.2", 3286 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 3287 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 3288 | "dev": true, 3289 | "optional": true, 3290 | "requires": { 3291 | "extend-shallow": "^3.0.2", 3292 | "safe-regex": "^1.1.0" 3293 | } 3294 | }, 3295 | "regexpu-core": { 3296 | "version": "4.6.0", 3297 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", 3298 | "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", 3299 | "dev": true, 3300 | "requires": { 3301 | "regenerate": "^1.4.0", 3302 | "regenerate-unicode-properties": "^8.1.0", 3303 | "regjsgen": "^0.5.0", 3304 | "regjsparser": "^0.6.0", 3305 | "unicode-match-property-ecmascript": "^1.0.4", 3306 | "unicode-match-property-value-ecmascript": "^1.1.0" 3307 | } 3308 | }, 3309 | "regjsgen": { 3310 | "version": "0.5.1", 3311 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", 3312 | "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", 3313 | "dev": true 3314 | }, 3315 | "regjsparser": { 3316 | "version": "0.6.2", 3317 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", 3318 | "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", 3319 | "dev": true, 3320 | "requires": { 3321 | "jsesc": "~0.5.0" 3322 | }, 3323 | "dependencies": { 3324 | "jsesc": { 3325 | "version": "0.5.0", 3326 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 3327 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 3328 | "dev": true 3329 | } 3330 | } 3331 | }, 3332 | "remove-trailing-separator": { 3333 | "version": "1.1.0", 3334 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 3335 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 3336 | "dev": true, 3337 | "optional": true 3338 | }, 3339 | "repeat-element": { 3340 | "version": "1.1.3", 3341 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 3342 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 3343 | "dev": true, 3344 | "optional": true 3345 | }, 3346 | "repeat-string": { 3347 | "version": "1.6.1", 3348 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 3349 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3350 | "dev": true, 3351 | "optional": true 3352 | }, 3353 | "resolve": { 3354 | "version": "1.14.1", 3355 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", 3356 | "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", 3357 | "dev": true, 3358 | "requires": { 3359 | "path-parse": "^1.0.6" 3360 | } 3361 | }, 3362 | "resolve-url": { 3363 | "version": "0.2.1", 3364 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 3365 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 3366 | "dev": true, 3367 | "optional": true 3368 | }, 3369 | "ret": { 3370 | "version": "0.1.15", 3371 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 3372 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 3373 | "dev": true, 3374 | "optional": true 3375 | }, 3376 | "safe-buffer": { 3377 | "version": "5.1.2", 3378 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3379 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3380 | "dev": true 3381 | }, 3382 | "safe-regex": { 3383 | "version": "1.1.0", 3384 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3385 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3386 | "dev": true, 3387 | "optional": true, 3388 | "requires": { 3389 | "ret": "~0.1.10" 3390 | } 3391 | }, 3392 | "semver": { 3393 | "version": "5.7.1", 3394 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3395 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3396 | "dev": true 3397 | }, 3398 | "set-value": { 3399 | "version": "2.0.1", 3400 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 3401 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 3402 | "dev": true, 3403 | "optional": true, 3404 | "requires": { 3405 | "extend-shallow": "^2.0.1", 3406 | "is-extendable": "^0.1.1", 3407 | "is-plain-object": "^2.0.3", 3408 | "split-string": "^3.0.1" 3409 | }, 3410 | "dependencies": { 3411 | "extend-shallow": { 3412 | "version": "2.0.1", 3413 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3414 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3415 | "dev": true, 3416 | "optional": true, 3417 | "requires": { 3418 | "is-extendable": "^0.1.0" 3419 | } 3420 | } 3421 | } 3422 | }, 3423 | "slash": { 3424 | "version": "2.0.0", 3425 | "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", 3426 | "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", 3427 | "dev": true 3428 | }, 3429 | "snapdragon": { 3430 | "version": "0.8.2", 3431 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 3432 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 3433 | "dev": true, 3434 | "optional": true, 3435 | "requires": { 3436 | "base": "^0.11.1", 3437 | "debug": "^2.2.0", 3438 | "define-property": "^0.2.5", 3439 | "extend-shallow": "^2.0.1", 3440 | "map-cache": "^0.2.2", 3441 | "source-map": "^0.5.6", 3442 | "source-map-resolve": "^0.5.0", 3443 | "use": "^3.1.0" 3444 | }, 3445 | "dependencies": { 3446 | "define-property": { 3447 | "version": "0.2.5", 3448 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3449 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3450 | "dev": true, 3451 | "optional": true, 3452 | "requires": { 3453 | "is-descriptor": "^0.1.0" 3454 | } 3455 | }, 3456 | "extend-shallow": { 3457 | "version": "2.0.1", 3458 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3459 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3460 | "dev": true, 3461 | "optional": true, 3462 | "requires": { 3463 | "is-extendable": "^0.1.0" 3464 | } 3465 | } 3466 | } 3467 | }, 3468 | "snapdragon-node": { 3469 | "version": "2.1.1", 3470 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 3471 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 3472 | "dev": true, 3473 | "optional": true, 3474 | "requires": { 3475 | "define-property": "^1.0.0", 3476 | "isobject": "^3.0.0", 3477 | "snapdragon-util": "^3.0.1" 3478 | }, 3479 | "dependencies": { 3480 | "define-property": { 3481 | "version": "1.0.0", 3482 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3483 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3484 | "dev": true, 3485 | "optional": true, 3486 | "requires": { 3487 | "is-descriptor": "^1.0.0" 3488 | } 3489 | }, 3490 | "is-accessor-descriptor": { 3491 | "version": "1.0.0", 3492 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3493 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3494 | "dev": true, 3495 | "optional": true, 3496 | "requires": { 3497 | "kind-of": "^6.0.0" 3498 | } 3499 | }, 3500 | "is-data-descriptor": { 3501 | "version": "1.0.0", 3502 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3503 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3504 | "dev": true, 3505 | "optional": true, 3506 | "requires": { 3507 | "kind-of": "^6.0.0" 3508 | } 3509 | }, 3510 | "is-descriptor": { 3511 | "version": "1.0.2", 3512 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3513 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3514 | "dev": true, 3515 | "optional": true, 3516 | "requires": { 3517 | "is-accessor-descriptor": "^1.0.0", 3518 | "is-data-descriptor": "^1.0.0", 3519 | "kind-of": "^6.0.2" 3520 | } 3521 | } 3522 | } 3523 | }, 3524 | "snapdragon-util": { 3525 | "version": "3.0.1", 3526 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3527 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3528 | "dev": true, 3529 | "optional": true, 3530 | "requires": { 3531 | "kind-of": "^3.2.0" 3532 | }, 3533 | "dependencies": { 3534 | "kind-of": { 3535 | "version": "3.2.2", 3536 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3537 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3538 | "dev": true, 3539 | "optional": true, 3540 | "requires": { 3541 | "is-buffer": "^1.1.5" 3542 | } 3543 | } 3544 | } 3545 | }, 3546 | "source-map": { 3547 | "version": "0.5.7", 3548 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3549 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3550 | "dev": true 3551 | }, 3552 | "source-map-resolve": { 3553 | "version": "0.5.2", 3554 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 3555 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 3556 | "dev": true, 3557 | "optional": true, 3558 | "requires": { 3559 | "atob": "^2.1.1", 3560 | "decode-uri-component": "^0.2.0", 3561 | "resolve-url": "^0.2.1", 3562 | "source-map-url": "^0.4.0", 3563 | "urix": "^0.1.0" 3564 | } 3565 | }, 3566 | "source-map-url": { 3567 | "version": "0.4.0", 3568 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3569 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3570 | "dev": true, 3571 | "optional": true 3572 | }, 3573 | "split-string": { 3574 | "version": "3.1.0", 3575 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3576 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3577 | "dev": true, 3578 | "optional": true, 3579 | "requires": { 3580 | "extend-shallow": "^3.0.0" 3581 | } 3582 | }, 3583 | "static-extend": { 3584 | "version": "0.1.2", 3585 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3586 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3587 | "dev": true, 3588 | "optional": true, 3589 | "requires": { 3590 | "define-property": "^0.2.5", 3591 | "object-copy": "^0.1.0" 3592 | }, 3593 | "dependencies": { 3594 | "define-property": { 3595 | "version": "0.2.5", 3596 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3597 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3598 | "dev": true, 3599 | "optional": true, 3600 | "requires": { 3601 | "is-descriptor": "^0.1.0" 3602 | } 3603 | } 3604 | } 3605 | }, 3606 | "string_decoder": { 3607 | "version": "1.1.1", 3608 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3609 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3610 | "dev": true, 3611 | "optional": true, 3612 | "requires": { 3613 | "safe-buffer": "~5.1.0" 3614 | } 3615 | }, 3616 | "strip-ansi": { 3617 | "version": "3.0.1", 3618 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3619 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3620 | "dev": true, 3621 | "requires": { 3622 | "ansi-regex": "^2.0.0" 3623 | } 3624 | }, 3625 | "supports-color": { 3626 | "version": "2.0.0", 3627 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 3628 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 3629 | "dev": true 3630 | }, 3631 | "to-fast-properties": { 3632 | "version": "1.0.3", 3633 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 3634 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 3635 | "dev": true 3636 | }, 3637 | "to-object-path": { 3638 | "version": "0.3.0", 3639 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3640 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3641 | "dev": true, 3642 | "optional": true, 3643 | "requires": { 3644 | "kind-of": "^3.0.2" 3645 | }, 3646 | "dependencies": { 3647 | "kind-of": { 3648 | "version": "3.2.2", 3649 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3650 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3651 | "dev": true, 3652 | "optional": true, 3653 | "requires": { 3654 | "is-buffer": "^1.1.5" 3655 | } 3656 | } 3657 | } 3658 | }, 3659 | "to-regex": { 3660 | "version": "3.0.2", 3661 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3662 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3663 | "dev": true, 3664 | "optional": true, 3665 | "requires": { 3666 | "define-property": "^2.0.2", 3667 | "extend-shallow": "^3.0.2", 3668 | "regex-not": "^1.0.2", 3669 | "safe-regex": "^1.1.0" 3670 | } 3671 | }, 3672 | "to-regex-range": { 3673 | "version": "2.1.1", 3674 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3675 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3676 | "dev": true, 3677 | "optional": true, 3678 | "requires": { 3679 | "is-number": "^3.0.0", 3680 | "repeat-string": "^1.6.1" 3681 | } 3682 | }, 3683 | "unicode-canonical-property-names-ecmascript": { 3684 | "version": "1.0.4", 3685 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 3686 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 3687 | "dev": true 3688 | }, 3689 | "unicode-match-property-ecmascript": { 3690 | "version": "1.0.4", 3691 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 3692 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 3693 | "dev": true, 3694 | "requires": { 3695 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 3696 | "unicode-property-aliases-ecmascript": "^1.0.4" 3697 | } 3698 | }, 3699 | "unicode-match-property-value-ecmascript": { 3700 | "version": "1.1.0", 3701 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 3702 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 3703 | "dev": true 3704 | }, 3705 | "unicode-property-aliases-ecmascript": { 3706 | "version": "1.0.5", 3707 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 3708 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 3709 | "dev": true 3710 | }, 3711 | "union-value": { 3712 | "version": "1.0.1", 3713 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 3714 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 3715 | "dev": true, 3716 | "optional": true, 3717 | "requires": { 3718 | "arr-union": "^3.1.0", 3719 | "get-value": "^2.0.6", 3720 | "is-extendable": "^0.1.1", 3721 | "set-value": "^2.0.1" 3722 | } 3723 | }, 3724 | "unset-value": { 3725 | "version": "1.0.0", 3726 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3727 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3728 | "dev": true, 3729 | "optional": true, 3730 | "requires": { 3731 | "has-value": "^0.3.1", 3732 | "isobject": "^3.0.0" 3733 | }, 3734 | "dependencies": { 3735 | "has-value": { 3736 | "version": "0.3.1", 3737 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 3738 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 3739 | "dev": true, 3740 | "optional": true, 3741 | "requires": { 3742 | "get-value": "^2.0.3", 3743 | "has-values": "^0.1.4", 3744 | "isobject": "^2.0.0" 3745 | }, 3746 | "dependencies": { 3747 | "isobject": { 3748 | "version": "2.1.0", 3749 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3750 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3751 | "dev": true, 3752 | "optional": true, 3753 | "requires": { 3754 | "isarray": "1.0.0" 3755 | } 3756 | } 3757 | } 3758 | }, 3759 | "has-values": { 3760 | "version": "0.1.4", 3761 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 3762 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 3763 | "dev": true, 3764 | "optional": true 3765 | } 3766 | } 3767 | }, 3768 | "upath": { 3769 | "version": "1.2.0", 3770 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", 3771 | "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", 3772 | "dev": true, 3773 | "optional": true 3774 | }, 3775 | "urix": { 3776 | "version": "0.1.0", 3777 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 3778 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 3779 | "dev": true, 3780 | "optional": true 3781 | }, 3782 | "use": { 3783 | "version": "3.1.1", 3784 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 3785 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 3786 | "dev": true, 3787 | "optional": true 3788 | }, 3789 | "util-deprecate": { 3790 | "version": "1.0.2", 3791 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3792 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3793 | "dev": true, 3794 | "optional": true 3795 | }, 3796 | "wrappy": { 3797 | "version": "1.0.2", 3798 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3799 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3800 | "dev": true 3801 | } 3802 | } 3803 | } 3804 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gradientify", 3 | "version": "1.1.3", 4 | "description": "Create amazing, animated gradients with ease.", 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "commonjs": "BABEL_ENV=commonjs babel src --out-file dist/gradientify.min.js --extensions .ts,.tsx", 8 | "module": "BABEL_ENV=module babel src --out-dir dist --extensions .ts,.tsx", 9 | "build": "npm run module && npm run commonjs" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/karolsw3/gradientify.js.git" 14 | }, 15 | "keywords": [ 16 | "gradientify", 17 | "gradient", 18 | "gradients", 19 | "animated", 20 | "gradients", 21 | "animated", 22 | "animation" 23 | ], 24 | "author": "Charles Spruce", 25 | "license": "MIT", 26 | "bugs": { 27 | "url": "https://github.com/karolsw3/gradientify.js/issues" 28 | }, 29 | "homepage": "https://github.com/karolsw3/gradientify.js#readme", 30 | "dependencies": {}, 31 | "devDependencies": { 32 | "@babel/cli": "^7.7.7", 33 | "@babel/core": "^7.7.7", 34 | "@babel/preset-env": "^7.7.7", 35 | "@babel/preset-typescript": "^7.7.7", 36 | "babel-plugin-remove-import-export": "^1.1.0", 37 | "babel-plugin-transform-class-properties": "^6.24.1", 38 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", 39 | "babel-plugin-transform-object-rest-spread": "^6.26.0", 40 | "babel-preset-minify": "^0.5.1" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export default class Gradientify { 2 | public target: string 3 | public gradients: string[] 4 | public fadeInterval: number // In miliseconds 5 | 6 | private gradientElements!: HTMLElement[][] 7 | private interval!: number // setInterval type (yes, it's a number. lol) 8 | 9 | constructor ( 10 | target: string, 11 | gradients: string[], 12 | fadeInterval: number 13 | ) { 14 | this.target = target 15 | this.gradients = gradients 16 | this.fadeInterval = fadeInterval 17 | this.createGradientElements() 18 | this.appendGradients() 19 | this.startAnimation() 20 | } 21 | 22 | /* 23 | This guy beneath is responsible for creating 24 | divs with gradient backgrounds, which are going 25 | to be appended to the target element(s) 👩🏻‍🔬 26 | */ 27 | private createGradientElements () { 28 | let targetElements = Array.from(document.querySelectorAll(this.target)) 29 | this.gradientElements = targetElements.map(() => { 30 | return this.gradients.map((gradient, index) => { 31 | let gradientElement = document.createElement('div') 32 | Object.assign(gradientElement.style, { 33 | position: 'absolute', 34 | height: '100%', 35 | width: '100%', 36 | opacity: index === 0 ? 1:0, 37 | top: 0, 38 | left: 0, 39 | transitionTimingFunction: 'linear', 40 | backgroundImage: gradient, 41 | transitionDuration: `${this.fadeInterval / 1000}s`, 42 | }) 43 | return gradientElement 44 | }) 45 | }) 46 | } 47 | 48 | // Time to append our gradients! 🧚‍♀️ 49 | private appendGradients () { 50 | let targetElements = document.querySelectorAll(this.target) 51 | targetElements.forEach((targetElement, targetIndex) => { 52 | if (targetElement instanceof HTMLElement) { 53 | if (targetElement.style.position !== 'absolute') { 54 | targetElement.style.position = 'relative' 55 | } 56 | this.gradientElements[targetIndex].forEach(element => { 57 | targetElement.appendChild(element) 58 | }) 59 | } else { 60 | throw new Error(`Element ${this.target} doesn't exists!`) 61 | } 62 | }) 63 | } 64 | 65 | /* 66 | Here lies the whole magic of this library: 67 | Every X seconds we set the opacity of the next 68 | gradient element to 1, and a CSS transition does the rest. Yay! 69 | *uncomfortably complex computations grinning in the background* 70 | */ 71 | public startAnimation () { 72 | this.interval = setInterval(() => { 73 | for (let [targetIndex, gradientElements] of this.gradientElements.entries()) { 74 | for (let [elementIndex, element] of gradientElements.entries()) { 75 | if (element.style.opacity === '1') { 76 | element.style.opacity = '0' 77 | let nextElement = this.gradientElements[targetIndex][++elementIndex % this.gradientElements[targetIndex].length] 78 | nextElement.style.opacity = '1' 79 | break 80 | } 81 | } 82 | } 83 | }, this.fadeInterval) 84 | } 85 | 86 | // Fairly straightforward 87 | public stopAnimation () { 88 | clearInterval(this.interval) 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Target latest version of ECMAScript. 4 | "target": "esnext", 5 | // Search under node_modules for non-relative imports. 6 | "moduleResolution": "node", 7 | // Process & infer types from .js files. 8 | "allowJs": true, 9 | // Don't emit; allow Babel to transform files. 10 | "noEmit": true, 11 | // Enable strictest settings like strictNullChecks & noImplicitAny. 12 | "strict": true, 13 | // Import non-ES modules as default imports. 14 | "esModuleInterop": true, 15 | "jsx": "react" 16 | }, 17 | "include": [ 18 | "src" 19 | ] 20 | } --------------------------------------------------------------------------------