From e691ec95800e004e9baa90d6fb55fc75bfc188d9 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Mon, 12 Mar 2018 23:03:31 -0400 Subject: [PATCH] Adds an app skeleton. Still needs some work. --- .babelrc | 33 + config/async-component-loader.js | 29 + config/async-component.js | 30 + config/client-boot.js | 27 + config/prerender.js | 20 + config/watch-timestamps-plugin.js | 23 + global.d.ts | 0 package-lock.json | 1970 +++++++++++++++---------- package.json | 25 +- src/components/app/index.js | 36 - src/components/app/index.tsx | 110 ++ src/components/app/style.scss.d.ts | 2 + src/components/drawer/index.js | 25 +- src/components/drawer/style.scss.d.ts | 14 + src/components/fab/index.js | 4 +- src/components/fab/style.scss.d.ts | 5 + src/components/header/index.js | 49 +- src/components/header/style.scss | 6 + src/components/header/style.scss.d.ts | 8 + src/components/home/index.js | 16 - src/components/home/index.tsx | 36 + src/components/home/style.scss | 10 + src/components/home/style.scss.d.ts | 3 + src/index.html | 28 + src/index.js | 2 +- src/lib/util.js | 9 + tsconfig.json | 12 + webpack.config.js | 211 ++- 28 files changed, 1826 insertions(+), 917 deletions(-) create mode 100644 .babelrc create mode 100644 config/async-component-loader.js create mode 100644 config/async-component.js create mode 100644 config/client-boot.js create mode 100644 config/prerender.js create mode 100644 config/watch-timestamps-plugin.js create mode 100644 global.d.ts delete mode 100644 src/components/app/index.js create mode 100644 src/components/app/index.tsx create mode 100644 src/components/app/style.scss.d.ts create mode 100644 src/components/drawer/style.scss.d.ts create mode 100644 src/components/fab/style.scss.d.ts create mode 100644 src/components/header/style.scss.d.ts delete mode 100644 src/components/home/index.js create mode 100644 src/components/home/index.tsx create mode 100644 src/components/home/style.scss.d.ts create mode 100644 src/index.html create mode 100644 tsconfig.json diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..4a40638f --- /dev/null +++ b/.babelrc @@ -0,0 +1,33 @@ +{ + "presets": [ + [ + "env", + { + "loose": true, + "uglify": true, + "modules": "commonjs", + "targets": { + "browsers": "last 2 versions" + }, + "exclude": [ + "transform-regenerator", + "transform-es2015-typeof-symbol" + ] + } + ] + ], + "plugins": [ + "syntax-dynamic-import", + "transform-decorators-legacy", + "transform-class-properties", + "transform-object-rest-spread", + "transform-react-constant-elements", + "transform-react-remove-prop-types", + [ + "transform-react-jsx", + { + "pragma": "h" + } + ] + ] +} \ No newline at end of file diff --git a/config/async-component-loader.js b/config/async-component-loader.js new file mode 100644 index 00000000..10131ddb --- /dev/null +++ b/config/async-component-loader.js @@ -0,0 +1,29 @@ +let loaderUtils = require('loader-utils'); +let componentPath = require.resolve('./async-component'); + +module.exports = function () { }; +module.exports.pitch = function (remainingRequest) { + this.cacheable && this.cacheable(); + let query = loaderUtils.getOptions(this) || {}; + let routeName = typeof query.name === 'function' ? query.name(this.resourcePath) : null; + let name; + if (routeName !== null) { + name = routeName; + } + else if ('name' in query) { + name = query.name; + } + else if ('formatName' in query) { + name = query.formatName(this.resourcePath); + } + + return ` + import async from ${JSON.stringify(componentPath)}; + function load(cb) { + require.ensure([], function (require) { + cb( require(${loaderUtils.stringifyRequest(this, '!!' + remainingRequest)}) ); + }${name ? (', ' + JSON.stringify(name)) : ''}); + } + export default async(load); + `; +}; \ No newline at end of file diff --git a/config/async-component.js b/config/async-component.js new file mode 100644 index 00000000..b9ba69f3 --- /dev/null +++ b/config/async-component.js @@ -0,0 +1,30 @@ +import { h, Component } from 'preact'; + +export default function (req) { + function Async() { + Component.call(this); + + let b, old; + this.componentWillMount = () => { + b = this.base = this.nextBase || this.__b; // short circuits 1st render + req(m => { + this.setState({ child: m.default || m }); + }); + }; + + this.shouldComponentUpdate = (_, nxt) => { + nxt = nxt.child === void 0; + if (nxt && old === void 0 && !!b) { + old = h(b.nodeName, { dangerouslySetInnerHTML: { __html: b.innerHTML } }); + } + else { + old = ''; // dump it + } + return !nxt; + }; + + this.render = (p, s) => s.child ? h(s.child, p) : old; + } + (Async.prototype = new Component()).constructor = Async; + return Async; +} \ No newline at end of file diff --git a/config/client-boot.js b/config/client-boot.js new file mode 100644 index 00000000..742acf1b --- /dev/null +++ b/config/client-boot.js @@ -0,0 +1,27 @@ +import { h, render } from 'preact'; + +if (process.env.NODE_ENV === 'development') { + // enable preact devtools + require('preact/debug'); +} +else if (process.env.ADD_SW && 'serviceWorker' in navigator && location.protocol === 'https:') { + // eslint-disable-next-line no-undef + navigator.serviceWorker.register(__webpack_public_path__ + 'sw.js'); +} + +const interopDefault = m => m && m.default ? m.default : m; + +let app = interopDefault(require('app-entry-point')); + +if (typeof app === 'function') { + let root = document.getElementById('app') || document.body.firstElementChild; + + let init = () => { + let app = interopDefault(require('app-entry-point')); + root = render(h(app), document.body, root); + }; + + if (module.hot) module.hot.accept('app-entry-point', init); + + init(); +} diff --git a/config/prerender.js b/config/prerender.js new file mode 100644 index 00000000..14f7f83c --- /dev/null +++ b/config/prerender.js @@ -0,0 +1,20 @@ +let path = require('path'); +let preact = require('preact'); +let renderToString = require('preact-render-to-string'); + +let appPath = path.join(__dirname, '../src/index'); + +module.exports = function(options) { + options = options || {}; + let url = typeof options==='string' ? options : options.url; + global.history = {}; + global.location = { href: url, pathname: url }; + + // let app = require('app-entry-point'); + let app = require(appPath); + + let html = renderToString(preact.h(app, { url })); + console.log(html); + + return html; +}; diff --git a/config/watch-timestamps-plugin.js b/config/watch-timestamps-plugin.js new file mode 100644 index 00000000..d85ea462 --- /dev/null +++ b/config/watch-timestamps-plugin.js @@ -0,0 +1,23 @@ +let fs = require('fs'); + +module.exports = WatchTimestampsPlugin; + +function WatchTimestampsPlugin(patterns) { + this.patterns = patterns; +} + +WatchTimestampsPlugin.prototype.apply = function (compiler) { + compiler.plugin('watch-run', (watch, callback) => { + let patterns = this.patterns; + let timestamps = watch.fileTimestamps || watch.compiler.fileTimestamps; + + Object.keys(timestamps).forEach( filepath => { + if (patterns.some( pat => pat instanceof RegExp ? pat.test(filepath) : filepath.indexOf(pat)===0 )) { + let time = fs.statSync(filepath).mtime; + if (timestamps instanceof Map) timestamps.set(filepath, time); + else timestamps[filepath] = time; + } + }); + callback(); + }); +}; \ No newline at end of file diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/package-lock.json b/package-lock.json index 9357f86f..25c7df27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -250,6 +250,16 @@ "@material/theme": "0.30.0" } }, + "@material/floating-label": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-0.32.0.tgz", + "integrity": "sha512-YrcRSK04EnvmVJw2bH0if9zOaag6zUbk41vW2FQZJkkaKd3kQt02d0RqlAJ9qSKciGNb0J0h/EDMcdGpNDAp6Q==", + "requires": { + "@material/base": "0.29.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0" + } + }, "@material/form-field": { "version": "0.31.0", "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-0.31.0.tgz", @@ -458,6 +468,31 @@ "@material/typography": "0.28.0" } }, + "@material/top-app-bar": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-0.32.0.tgz", + "integrity": "sha512-zdL70MN10Hd1831o0xdGGAASemY4ht2Wz2juANaK3fCf9uvv2UFouS8eJa4BX16rHenIzwrffuA1EKn96RauaQ==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + }, + "dependencies": { + "@material/ripple": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-0.32.0.tgz", + "integrity": "sha512-pfG16d1/46f4QnrUHG66aV22kbY7sh7n2HR/cFALX6D0l0Kae3+xjuUnr1yy32Y1tzLAc84U9jGEzTDykVff9A==", + "requires": { + "@material/base": "0.29.0", + "@material/theme": "0.30.0" + } + } + } + }, "@material/typography": { "version": "0.28.0", "resolved": "https://registry.npmjs.org/@material/typography/-/typography-0.28.0.tgz", @@ -469,6 +504,12 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "@types/node": { + "version": "9.4.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.7.tgz", + "integrity": "sha512-4Ba90mWNx8ddbafuyGGwjkZMigi+AWfYLSDCpovwsE63ia8w93r3oJ8PIAQc3y8U+XHcnMOHPIzNe3o438Ywcw==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -879,12 +920,6 @@ "sprintf-js": "1.0.3" } }, - "argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true - }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -897,14 +932,12 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-differ": { "version": "1.0.0", @@ -1020,13 +1053,12 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", - "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", "dev": true }, "async": { @@ -1059,8 +1091,7 @@ "atob": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", - "dev": true + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" }, "autoprefixer": { "version": "6.7.7", @@ -2445,7 +2476,6 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, "requires": { "cache-base": "1.0.1", "class-utils": "0.3.6", @@ -2460,7 +2490,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "1.0.2" } @@ -2468,8 +2497,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -2498,8 +2526,7 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "binary-extensions": { "version": "1.11.0", @@ -2765,7 +2792,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, "requires": { "collection-visit": "1.0.0", "component-emitter": "1.2.1", @@ -2781,8 +2807,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -2888,7 +2913,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", - "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", @@ -2899,7 +2923,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, "requires": { "color-convert": "1.9.1" } @@ -2908,7 +2931,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", - "dev": true, "requires": { "has-flag": "3.0.0" } @@ -3096,7 +3118,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", @@ -3108,7 +3129,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -3117,7 +3137,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -3126,7 +3145,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -3137,7 +3155,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -3146,7 +3163,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -3157,7 +3173,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -3167,17 +3182,20 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, "clean-css": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", @@ -3419,95 +3437,10 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "codecov": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", - "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", - "dev": true, - "requires": { - "argv": "0.0.2", - "request": "2.81.0", - "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, "requires": { "map-visit": "1.0.0", "object-visit": "1.0.1" @@ -3528,7 +3461,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3536,8 +3468,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { "version": "0.3.0", @@ -3565,6 +3496,12 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=", + "dev": true + }, "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", @@ -3589,8 +3526,7 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "compressible": { "version": "2.0.13", @@ -3718,8 +3654,45 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "1.1.0", + "minimatch": "3.0.4", + "p-limit": "1.2.0", + "serialize-javascript": "1.4.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } }, "core-js": { "version": "1.2.7", @@ -3730,8 +3703,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { "version": "4.0.0", @@ -3985,9 +3957,9 @@ "dev": true }, "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, "debug": { @@ -4008,8 +3980,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-response": { "version": "3.3.0", @@ -4052,7 +4023,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" @@ -4061,8 +4031,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -4159,6 +4128,33 @@ "randombytes": "2.0.6" } }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "dlv": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.1.tgz", @@ -4233,12 +4229,6 @@ } } }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", - "dev": true - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -4322,6 +4312,36 @@ "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", "dev": true }, + "ejs-loader": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.3.1.tgz", + "integrity": "sha512-bdJHTxBY3uqZ6L5V1WRohf1gr7ousgESpArPVseEQCWCATs+M8BRqxyJWqnFo+h815gTA++g5LyAyqS5OTIfdQ==", + "dev": true, + "requires": { + "loader-utils": "0.2.17", + "lodash": "3.10.1" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, "electron-to-chromium": { "version": "1.3.34", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", @@ -4352,8 +4372,7 @@ "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, "encodeurl": { "version": "1.0.2", @@ -4383,7 +4402,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, "requires": { "graceful-fs": "4.1.11", "memory-fs": "0.4.1", @@ -4400,7 +4418,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, "requires": { "prr": "1.0.1" } @@ -4457,8 +4474,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "4.18.2", @@ -4785,7 +4801,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, "requires": { "assign-symbols": "1.0.0", "is-extendable": "1.0.1" @@ -4795,7 +4810,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "2.0.4" } @@ -4830,6 +4844,18 @@ } } }, + "extract-text-webpack-plugin": { + "version": "4.0.0-beta.0", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz", + "integrity": "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.4.5", + "webpack-sources": "1.1.0" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5022,8 +5048,7 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { "version": "0.1.5", @@ -5067,7 +5092,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, "requires": { "map-cache": "0.2.2" } @@ -6132,8 +6156,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "getpass": { "version": "0.1.7", @@ -6323,24 +6346,6 @@ } } }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true, - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } - } - }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -6432,8 +6437,7 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "grouped-queue": { "version": "0.3.3", @@ -6450,12 +6454,6 @@ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", "dev": true }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -6519,8 +6517,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbol-support-x": { "version": "1.4.2", @@ -6547,7 +6544,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, "requires": { "get-value": "2.0.6", "has-values": "1.0.0", @@ -6557,8 +6553,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -6566,7 +6561,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -6576,7 +6570,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -6585,7 +6578,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -6596,7 +6588,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -6689,9 +6680,9 @@ "dev": true, "requires": { "inherits": "2.0.3", - "obuf": "1.1.1", + "obuf": "1.1.2", "readable-stream": "2.3.4", - "wbuf": "1.7.2" + "wbuf": "1.7.3" } }, "html-comment-regex": { @@ -7024,8 +7015,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -7117,7 +7107,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "6.0.2" }, @@ -7125,8 +7114,7 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -7148,8 +7136,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -7170,7 +7157,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "6.0.2" }, @@ -7178,8 +7164,7 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -7193,7 +7178,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", @@ -7203,8 +7187,7 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -7226,8 +7209,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "2.1.1", @@ -7314,7 +7296,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, "requires": { "is-number": "4.0.0" }, @@ -7322,8 +7303,7 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" } } }, @@ -7361,7 +7341,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "3.0.1" }, @@ -7369,8 +7348,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -7464,8 +7442,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "1.1.0", @@ -7476,8 +7453,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -7561,57 +7537,32 @@ "optional": true }, "jscodeshift": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", - "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", + "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", "dev": true, "requires": { - "async": "1.5.2", "babel-plugin-transform-flow-strip-types": "6.22.0", "babel-preset-es2015": "6.24.1", "babel-preset-stage-1": "6.24.1", "babel-register": "6.26.0", - "babylon": "6.18.0", + "babylon": "7.0.0-beta.40", "colors": "1.1.2", "flow-parser": "0.67.1", "lodash": "4.17.5", "micromatch": "2.3.11", + "neo-async": "2.5.0", "node-dir": "0.1.8", "nomnom": "1.8.1", - "recast": "0.12.9", + "recast": "0.14.5", "temp": "0.8.3", "write-file-atomic": "1.3.4" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "dev": true - }, - "recast": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", - "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", - "dev": true, - "requires": { - "ast-types": "0.10.1", - "core-js": "2.5.3", - "esprima": "4.0.0", - "private": "0.1.8", - "source-map": "0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "babylon": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", + "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", "dev": true } } @@ -7628,6 +7579,12 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -7640,15 +7597,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -7670,8 +7618,7 @@ "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonify": { "version": "0.0.0", @@ -7733,7 +7680,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -7742,7 +7688,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, "requires": { "set-getter": "0.1.0" } @@ -7999,7 +7944,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, "requires": { "big.js": "3.2.0", "emojis-list": "2.1.0", @@ -8195,8 +8139,7 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { "version": "1.0.1", @@ -8214,48 +8157,283 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, "requires": { "object-visit": "1.0.1" } }, "material-components-web": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-0.31.0.tgz", - "integrity": "sha512-XnBxw43cwwXcJ3GafHtHNkQQDRGtkU0Ivs6YDFarTHygoS2qct/tXgsNdt9keRpbn+l8heYsGD51C/OIdYDdzA==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-0.32.0.tgz", + "integrity": "sha512-f2etJyWzZu/5U1qYnybzHXuUhyEAG19a/OFjSLi6rYJtjY1BtPS+Az9IHvnKDB7ahLET00vEtMKZbNsSa8Eksw==", "requires": { "@material/animation": "0.25.0", - "@material/auto-init": "0.30.0", + "@material/auto-init": "0.32.0", "@material/base": "0.29.0", - "@material/button": "0.31.0", - "@material/card": "0.31.0", - "@material/checkbox": "0.31.0", - "@material/chips": "0.31.0", - "@material/dialog": "0.31.0", + "@material/button": "0.32.0", + "@material/card": "0.32.0", + "@material/checkbox": "0.32.0", + "@material/chips": "0.32.0", + "@material/dialog": "0.32.0", "@material/drawer": "0.30.0", "@material/elevation": "0.28.0", - "@material/fab": "0.31.0", - "@material/form-field": "0.31.0", + "@material/fab": "0.32.0", + "@material/floating-label": "0.32.0", + "@material/form-field": "0.32.0", "@material/grid-list": "0.30.0", - "@material/icon-toggle": "0.31.0", + "@material/icon-toggle": "0.32.0", "@material/layout-grid": "0.24.0", - "@material/line-ripple": "0.30.0", + "@material/line-ripple": "0.32.0", "@material/linear-progress": "0.30.0", - "@material/list": "0.31.0", + "@material/list": "0.32.0", "@material/menu": "0.31.0", - "@material/radio": "0.31.0", - "@material/ripple": "0.31.0", + "@material/radio": "0.32.0", + "@material/ripple": "0.32.0", "@material/rtl": "0.30.0", - "@material/select": "0.31.0", - "@material/selection-control": "0.31.0", - "@material/slider": "0.30.0", + "@material/select": "0.32.0", + "@material/selection-control": "0.32.0", + "@material/slider": "0.32.0", "@material/snackbar": "0.30.0", - "@material/switch": "0.31.0", - "@material/tabs": "0.31.0", - "@material/textfield": "0.31.0", + "@material/switch": "0.32.0", + "@material/tabs": "0.32.0", + "@material/textfield": "0.32.0", "@material/theme": "0.30.0", - "@material/toolbar": "0.30.0", + "@material/toolbar": "0.32.0", + "@material/top-app-bar": "0.32.0", "@material/typography": "0.28.0" + }, + "dependencies": { + "@material/auto-init": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-0.32.0.tgz", + "integrity": "sha512-yodqrTC/MjGt/dM4jiouWJuT8XRpthxicV/If/qUJUeznTkzHMvHp4hWJBcEiyjfryxvzTEoKOl5X8k/gx1GAw==" + }, + "@material/button": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-0.32.0.tgz", + "integrity": "sha512-3PBA+o8T5lFJbCo2GZD8sm5U4VXiHDN6nHkrKlysuvcbo6QQK1C3ZMP4BIj2nmSpodvNRXOk8opG3feDcubg3g==", + "requires": { + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/card": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-0.32.0.tgz", + "integrity": "sha512-Y/o8Mekvlt3su0K80gcLpmcdFUa+D57nKDI3nVcM1Xi2r5/ra3qjAmFda5mauxZK/8PzyB/FJzF1fy/RH5s+9g==", + "requires": { + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0" + } + }, + "@material/checkbox": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-0.32.0.tgz", + "integrity": "sha512-Rc6sidCCsc+wyktwd6KhNqAt14H6zSEarwLnvqCaYLv/Ml+lqg2SjQ3mg9rRKt1JREaN7G9BGKQKAnB//OMY4g==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/selection-control": "0.32.0", + "@material/theme": "0.30.0" + } + }, + "@material/chips": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-0.32.0.tgz", + "integrity": "sha512-bw4LSzF+Ejyi4Z7iZHZE5J2k437b2iLVM9bGjkXYZ4bkFR+gqjjfB9787FEQGoowHwKOWmuVwYrsO+Vsomf6jg==", + "requires": { + "@material/base": "0.29.0", + "@material/ripple": "0.32.0" + } + }, + "@material/dialog": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-0.32.0.tgz", + "integrity": "sha512-tmOdwpFAT5aI4nI43ldzgZ5ONPEZzhE8Nf95DnP8najwKni/aY3D61yo3KwrE2Q0fuuXL1e6AEojX83IHEEciw==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.1.1", + "focus-trap": "2.4.3" + }, + "dependencies": { + "@material/typography": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-0.1.1.tgz", + "integrity": "sha1-+y40N70yhNOen7kUhXZ63msr0ME=" + } + } + }, + "@material/fab": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-0.32.0.tgz", + "integrity": "sha512-VWzka0qpDxDuqPai9alrFUQadpyEwSGuwt+vgqV0gL5vs0VxLlEa1XP8McZSvdCdHGPNEZtohUif2ZaDEiMSzQ==", + "requires": { + "@material/animation": "0.25.0", + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/theme": "0.30.0" + } + }, + "@material/form-field": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-0.32.0.tgz", + "integrity": "sha512-DrUSzqS73H+ksyI0HM66q7IRVSuIIN5dvapayaCXscoSVq5jU1jObqDNtu7PmBxEqvXj68SHrRWm7M06m06a5w==", + "requires": { + "@material/base": "0.29.0", + "@material/rtl": "0.30.0", + "@material/selection-control": "0.32.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/icon-toggle": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/icon-toggle/-/icon-toggle-0.32.0.tgz", + "integrity": "sha512-49jrIvP64yVkhVuwek4PmPumMllB3CkqGHgGaSlNJHGdZ3VaSD4DqxnKD0avxhPxEUWg/NXy1dEE+3YFrI/Caw==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/ripple": "0.32.0", + "@material/theme": "0.30.0" + } + }, + "@material/line-ripple": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-0.32.0.tgz", + "integrity": "sha512-vd/jlnK/paWZnsr9rvKkeo4qjIDTd59TljSUzqgXN4wiOwiCqXWtNgsy+veKG4fNLVqwad7ECKizUn2iQ/+IMQ==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/theme": "0.30.0" + } + }, + "@material/list": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-0.32.0.tgz", + "integrity": "sha512-03eZsHYRSS7b+fUsx5gBkRhUubfPYYg5Nr7PwLdEPLR5VuQ6RzgcNYcBnLtIa5rdvrd6NugNNSL9c2k27Qjt6g==", + "requires": { + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/radio": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-0.32.0.tgz", + "integrity": "sha512-a+uUiCem0ULjcdH3mwOz/dabLGiiCshqr/Gu5xN1kB6bDLmXybM50DMgw3TowRXyyS4YOX6tm6j+af4dsiNJNQ==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/ripple": "0.32.0", + "@material/selection-control": "0.32.0", + "@material/theme": "0.30.0" + } + }, + "@material/ripple": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-0.32.0.tgz", + "integrity": "sha512-pfG16d1/46f4QnrUHG66aV22kbY7sh7n2HR/cFALX6D0l0Kae3+xjuUnr1yy32Y1tzLAc84U9jGEzTDykVff9A==", + "requires": { + "@material/base": "0.29.0", + "@material/theme": "0.30.0" + } + }, + "@material/select": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-0.32.0.tgz", + "integrity": "sha512-KLlP4i1QDzsDJoIW4qA1JB17zSrgHSG2PpxKeqhUjqb9W5Q71LJ6QjhPynFA897sq1Wd9WTSHl41BAu2qUZlFA==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/list": "0.32.0", + "@material/menu": "0.31.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/selection-control": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/selection-control/-/selection-control-0.32.0.tgz", + "integrity": "sha512-zlq6x5n0pN3eKJQBYkWdh4UQScF7Ui7g7XIeeuKnNFo99oxJoKtuGk3WX5/OBc0wU4qe38rfQW6XGeFG4Adk3Q==", + "requires": { + "@material/ripple": "0.32.0" + } + }, + "@material/slider": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-0.32.0.tgz", + "integrity": "sha512-FmV9tjzhj9KfTpxXL2YNgV3STQTWXmROp7SJqrz8v2JpDXiVyI/pq/DhcFLEMvs096cIZWgH+iyZPQGFTPH12A==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0" + } + }, + "@material/switch": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-0.32.0.tgz", + "integrity": "sha512-nn5HN8AdSb4aSOJEEG9wGvPg+wPhg2rMD3j8WTX1HZ7c0HklgM07SuNKI+Yz5VFgfA28m3qFJAdHIv7OdzSuaQ==", + "requires": { + "@material/animation": "0.25.0", + "@material/elevation": "0.28.0", + "@material/theme": "0.30.0" + } + }, + "@material/tabs": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/tabs/-/tabs-0.32.0.tgz", + "integrity": "sha512-RWzxlQoR6MPqxCP2kVNrxg4+D2A5eT7WO0cqkoxsbDz8wAPeNlU/vdr17bnTlhAiiwcDCKulxHRNX7Gztwwg0A==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/textfield": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-0.32.0.tgz", + "integrity": "sha512-5gLDjBE14LqRT3NcToYZu/vVL/FzPY/kPT+oqzyZaRfvx3iyTBXSPsE0LOfGIgPv+Z65Z4g1PoccLWW/cZWHbw==", + "requires": { + "@material/animation": "0.25.0", + "@material/base": "0.29.0", + "@material/floating-label": "0.32.0", + "@material/line-ripple": "0.32.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + }, + "@material/toolbar": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@material/toolbar/-/toolbar-0.32.0.tgz", + "integrity": "sha512-eDouRzRFqOpOigm1nOr8QrfEGJW87gdzhqlM8YbrIzUchm3JouAQgV62wvDs+mMpy2jXj1rMBZOTbtff78myqA==", + "requires": { + "@material/base": "0.29.0", + "@material/elevation": "0.28.0", + "@material/ripple": "0.32.0", + "@material/rtl": "0.30.0", + "@material/theme": "0.30.0", + "@material/typography": "0.28.0" + } + } } }, "material-radial-progress": { @@ -8393,7 +8571,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, "requires": { "errno": "0.1.7", "readable-stream": "2.3.4" @@ -8518,15 +8695,6 @@ "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", "dev": true }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "0.1.1" - } - }, "mini-css-extract-plugin": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.2.0.tgz", @@ -8586,7 +8754,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, "requires": { "for-in": "1.0.2", "is-extendable": "1.0.1" @@ -8596,7 +8763,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "2.0.4" } @@ -8647,8 +8813,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multicast-dns": { "version": "6.2.3", @@ -8694,7 +8859,6 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -8713,20 +8877,17 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -9068,7 +9229,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, "requires": { "copy-descriptor": "0.1.1", "define-property": "0.2.5", @@ -9079,7 +9239,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -9088,7 +9247,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -9097,7 +9255,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -9106,7 +9263,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -9116,8 +9272,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } } @@ -9133,7 +9288,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, "requires": { "isobject": "3.0.1" }, @@ -9141,8 +9295,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -9170,7 +9323,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, "requires": { "isobject": "3.0.1" }, @@ -9178,15 +9330,26 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { @@ -9350,12 +9513,6 @@ "mem": "1.1.0" } }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9542,8 +9699,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-browserify": { "version": "0.0.0", @@ -9594,12 +9750,20 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pause-stream": { @@ -9624,12 +9788,6 @@ "sha.js": "2.4.10" } }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -9697,8 +9855,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { "version": "5.2.18", @@ -10296,6 +10453,59 @@ "@material/toolbar": "0.30.0", "@material/typography": "0.28.0", "material-components-web": "0.31.0" + }, + "dependencies": { + "material-components-web": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-0.31.0.tgz", + "integrity": "sha512-XnBxw43cwwXcJ3GafHtHNkQQDRGtkU0Ivs6YDFarTHygoS2qct/tXgsNdt9keRpbn+l8heYsGD51C/OIdYDdzA==", + "requires": { + "@material/animation": "0.25.0", + "@material/auto-init": "0.30.0", + "@material/base": "0.29.0", + "@material/button": "0.31.0", + "@material/card": "0.31.0", + "@material/checkbox": "0.31.0", + "@material/chips": "0.31.0", + "@material/dialog": "0.31.0", + "@material/drawer": "0.30.0", + "@material/elevation": "0.28.0", + "@material/fab": "0.31.0", + "@material/form-field": "0.31.0", + "@material/grid-list": "0.30.0", + "@material/icon-toggle": "0.31.0", + "@material/layout-grid": "0.24.0", + "@material/line-ripple": "0.30.0", + "@material/linear-progress": "0.30.0", + "@material/list": "0.31.0", + "@material/menu": "0.31.0", + "@material/radio": "0.31.0", + "@material/ripple": "0.31.0", + "@material/rtl": "0.30.0", + "@material/select": "0.31.0", + "@material/selection-control": "0.31.0", + "@material/slider": "0.30.0", + "@material/snackbar": "0.30.0", + "@material/switch": "0.31.0", + "@material/tabs": "0.31.0", + "@material/textfield": "0.31.0", + "@material/theme": "0.30.0", + "@material/toolbar": "0.30.0", + "@material/typography": "0.28.0" + } + } + } + }, + "preact-material-components-drawer": { + "version": "git+https://gist.github.com/a78fceed440b98e62582e4440b86bfab.git#51843d83fc0432348eeda65a019920ca77bb79c4" + }, + "preact-render-to-string": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.7.0.tgz", + "integrity": "sha1-fbQXdFS8ATleDQHWrAe8XoOOMe4=", + "dev": true, + "requires": { + "pretty-format": "3.8.0" } }, "preact-router": { @@ -10303,6 +10513,15 @@ "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-2.6.0.tgz", "integrity": "sha1-Vff7yE5rivDfPqBMjOTCaHFAibY=" }, + "preload-webpack-plugin": { + "version": "github:GoogleChromeLabs/preload-webpack-plugin#798fc677f42e9ed2c1176065f733efa6b7fdc735", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "object.values": "1.0.4", + "webpack-log": "1.1.2" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -10343,6 +10562,12 @@ "utila": "0.4.0" } }, + "pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "dev": true + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -10358,8 +10583,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { "version": "2.0.0", @@ -10406,8 +10630,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "ps-tree": { "version": "1.1.0", @@ -10666,7 +10889,6 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", - "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -10701,12 +10923,6 @@ "source-map": "0.6.1" }, "dependencies": { - "ast-types": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", - "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10806,7 +11022,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" @@ -10883,14 +11098,12 @@ "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -11022,8 +11235,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "responselike": { "version": "1.0.2", @@ -11047,8 +11259,7 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "rimraf": { "version": "2.6.2", @@ -11087,12 +11298,6 @@ "aproba": "1.2.0" } }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", - "dev": true - }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -11120,14 +11325,12 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { "ret": "0.1.15" } @@ -11288,6 +11491,15 @@ "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", "dev": true }, + "script-ext-html-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-2.0.0.tgz", + "integrity": "sha1-ynOe/uemYZ4hzT1oMmr/YtrcUbI=", + "dev": true, + "requires": { + "debug": "3.1.0" + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -11327,8 +11539,7 @@ "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "send": { "version": "0.16.1", @@ -11416,7 +11627,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, "requires": { "to-object-path": "0.3.0" } @@ -11431,7 +11641,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -11443,7 +11652,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -11519,9 +11727,9 @@ } }, "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", + "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", "dev": true, "requires": { "glob": "7.1.2", @@ -11560,7 +11768,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", - "dev": true, "requires": { "base": "0.11.2", "debug": "2.6.9", @@ -11576,7 +11783,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -11585,7 +11791,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -11594,7 +11799,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -11603,7 +11807,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -11612,7 +11815,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -11623,7 +11825,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -11632,7 +11833,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -11643,7 +11843,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -11653,8 +11852,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -11662,7 +11860,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, "requires": { "define-property": "1.0.0", "isobject": "3.0.1", @@ -11673,7 +11870,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "1.0.2" } @@ -11681,8 +11877,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -11690,7 +11885,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -11766,14 +11960,12 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", - "dev": true, "requires": { "atob": "2.0.3", "decode-uri-component": "0.2.0", @@ -11802,18 +11994,7 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spawn-sync": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "os-shim": "0.1.3" - } + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { "version": "3.0.0", @@ -11881,10 +12062,10 @@ "debug": "2.6.9", "detect-node": "2.0.3", "hpack.js": "2.1.6", - "obuf": "1.1.1", + "obuf": "1.1.2", "readable-stream": "2.3.4", "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "wbuf": "1.7.3" }, "dependencies": { "debug": { @@ -11911,7 +12092,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, "requires": { "extend-shallow": "3.0.2" } @@ -11959,7 +12139,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, "requires": { "define-property": "0.2.5", "object-copy": "0.1.0" @@ -11969,7 +12148,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -11978,7 +12156,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -11987,7 +12164,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -11998,7 +12174,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -12007,7 +12182,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -12018,7 +12192,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -12028,8 +12201,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -12131,7 +12303,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, "requires": { "safe-buffer": "5.1.1" } @@ -12199,6 +12370,16 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "style-loader": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.20.3.tgz", + "integrity": "sha512-2I7AVP73MvK33U7B9TKlYZAqdROyMXDYSMvHLX43qy3GCOaJNiV6i0v/sv9idWIaQ42Yn2dNv79Q5mKXbKhAZg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.5" + } + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -12274,8 +12455,7 @@ "tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==" }, "tar": { "version": "2.2.1", @@ -12380,7 +12560,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -12389,7 +12568,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, "requires": { "define-property": "2.0.2", "extend-shallow": "3.0.2", @@ -12401,7 +12579,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" @@ -12411,7 +12588,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -12469,6 +12645,260 @@ } } }, + "ts-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.0.1.tgz", + "integrity": "sha512-dzgQnkAGY4sLqVw6t4LJH8FGR8j0zsPmC1Ff2ChzKhYO+hgWJkSEyrHTlSSZqn5oWr0Po7q/IRoeq8O4SNKQ9A==", + "requires": { + "chalk": "2.3.1", + "enhanced-resolve": "4.0.0", + "loader-utils": "1.1.0", + "micromatch": "3.1.9", + "semver": "5.5.0" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + } + } + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -12514,9 +12944,9 @@ "dev": true }, "typescript": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz", - "integrity": "sha1-tHXW4N/wv1DyluXKbvn7tccyDx4=", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true }, "typescript-loader": { @@ -12562,6 +12992,43 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", "dev": true + }, + "typescript": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz", + "integrity": "sha1-tHXW4N/wv1DyluXKbvn7tccyDx4=", + "dev": true + } + } + }, + "typings-for-css-modules-loader": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/typings-for-css-modules-loader/-/typings-for-css-modules-loader-1.7.0.tgz", + "integrity": "sha512-Mp7zDrcUmbUKl3JTLamTsMX+lntMotEm5I05j2RHB5EHb0WL1dAXlynpdlGR5Ye/QTvtL5w+RGB2jP32YoUpZw==", + "dev": true, + "requires": { + "colour": "0.7.1", + "graceful-fs": "4.1.4", + "loader-utils": "0.2.16" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=", + "dev": true + }, + "loader-utils": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.16.tgz", + "integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } } } }, @@ -12639,7 +13106,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, "requires": { "arr-union": "3.1.0", "get-value": "2.0.6", @@ -12651,7 +13117,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "0.1.1" } @@ -12660,7 +13125,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -12719,7 +13183,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, "requires": { "has-value": "0.3.1", "isobject": "3.0.1" @@ -12729,7 +13192,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, "requires": { "get-value": "2.0.6", "has-values": "0.1.4", @@ -12740,7 +13202,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -12750,14 +13211,12 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -12782,8 +13241,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url": { "version": "0.11.0", @@ -12804,9 +13262,9 @@ } }, "url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", "dev": true }, "url-parse": { @@ -12842,17 +13300,10 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, - "urlgrey": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", - "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", - "dev": true - }, "use": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", - "dev": true, "requires": { "define-property": "0.2.5", "isobject": "3.0.1", @@ -12863,7 +13314,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "0.1.6" } @@ -12872,7 +13322,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -12881,7 +13330,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -12892,7 +13340,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -12901,7 +13348,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -12912,7 +13358,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -12922,14 +13367,12 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -12953,8 +13396,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { "version": "1.0.0", @@ -13077,9 +13519,9 @@ } }, "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { "minimalistic-assert": "1.0.0" @@ -13397,26 +13839,86 @@ "dev": true, "requires": { "jscodeshift": "0.4.1" + }, + "dependencies": { + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "jscodeshift": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", + "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", + "dev": true, + "requires": { + "async": "1.5.2", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "colors": "1.1.2", + "flow-parser": "0.67.1", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.12.9", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + } + }, + "recast": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", + "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", + "dev": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "2.5.3", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "webpack-cli": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.10.tgz", - "integrity": "sha512-PQWEOoXkhjBV4svPuESghZRc80VvDoSSRPaLiInWifDlRJgoPWpiLCFXyMLQTTaug7ApLrSEW7BcuwwY6DEv5w==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.11.tgz", + "integrity": "sha512-+WwfDmsHB+V3OcbtfbIbKM12dDBysNwwMNulYjVSf/UIUhdMP7ZL4EmvCbgwBl0Xlf5hSELOkvS7sKwVDbn7TQ==", "dev": true, "requires": { - "chalk": "2.3.1", - "codecov": "3.0.0", + "chalk": "2.3.2", "cross-spawn": "6.0.5", "diff": "3.5.0", "enhanced-resolve": "4.0.0", "glob-all": "3.1.0", - "global": "4.3.2", "global-modules": "1.0.0", "got": "8.3.0", "inquirer": "5.1.0", "interpret": "1.1.0", - "jscodeshift": "0.4.1", + "jscodeshift": "0.5.0", "listr": "0.13.0", "loader-utils": "1.1.0", "lodash": "4.17.5", @@ -13425,17 +13927,35 @@ "p-each-series": "1.0.0", "p-lazy": "1.0.0", "prettier": "1.11.1", - "recast": "0.14.5", "resolve-cwd": "2.0.0", "supports-color": "5.3.0", - "uglifyjs-webpack-plugin": "1.2.2", "v8-compile-cache": "1.1.2", "webpack-addons": "1.1.5", - "yargs": "9.0.1", + "yargs": "11.0.0", "yeoman-environment": "2.0.5", - "yeoman-generator": "github:ev1stensberg/generator#9e24fa31c85302ca1145ae34fc68b4f133251ca0" + "yeoman-generator": "2.0.3" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -13456,7 +13976,7 @@ "dev": true, "requires": { "ansi-escapes": "3.0.0", - "chalk": "2.3.1", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.1.0", @@ -13482,9 +14002,9 @@ } }, "webpack-dev-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz", - "integrity": "sha512-tj5LLD9r4tDuRIDa5Mu9lnY2qBBehAITv6A9irqXhw/HQquZgTx3BCd57zYbU2gMDnncA49ufK2qVQSbaKJwOw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.0.1.tgz", + "integrity": "sha512-JCturcEZNGA0KHEpOJVRTC/VVazTcPfpR9c1Au6NO9a+jxCRchMi87Qe7y3JeOzc0v5eMMKpuGBnPdN52NA+CQ==", "dev": true, "requires": { "loud-rejection": "1.6.0", @@ -13492,7 +14012,7 @@ "mime": "2.2.0", "path-is-absolute": "1.0.1", "range-parser": "1.2.0", - "url-join": "2.0.5", + "url-join": "4.0.0", "webpack-log": "1.1.2" }, "dependencies": { @@ -13505,9 +14025,9 @@ } }, "webpack-dev-server": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.0.tgz", - "integrity": "sha512-ap7Fth7oh4sthC0nJkvRm2W3SaWryBeR19DWIcAwJlcooN0tB2fEKuZqckYR3uaJ6wXPCK1xMWAQWXhV5xVe8g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.1.tgz", + "integrity": "sha512-u5lz6REb3+KklgSIytUIOrmWgnpgFmfj/+I+GBXurhEoCsHXpG9twk4NO3bsu72GC9YtxIsiavjfRdhmNt0A/A==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -13535,11 +14055,17 @@ "spdy": "3.4.7", "strip-ansi": "3.0.1", "supports-color": "5.3.0", - "webpack-dev-middleware": "2.0.6", + "webpack-dev-middleware": "3.0.1", "webpack-log": "1.1.2", "yargs": "9.0.1" }, "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -13575,12 +14101,70 @@ } } }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -13590,6 +14174,12 @@ "ansi-regex": "2.1.1" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "supports-color": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", @@ -13598,6 +14188,42 @@ "requires": { "has-flag": "3.0.0" } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -13613,6 +14239,12 @@ "uuid": "3.2.1" } }, + "webpack-plugin-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webpack-plugin-replace/-/webpack-plugin-replace-1.1.1.tgz", + "integrity": "sha1-mBZkf+/Jin0XAPk/K0tvSBzyAWE=", + "dev": true + }, "webpack-sources": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", @@ -13821,71 +14453,36 @@ "dev": true }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", + "cliui": "4.0.0", "decamelize": "1.2.0", + "find-up": "2.1.0", "get-caller-file": "1.0.2", "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "yargs-parser": "9.0.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -13895,9 +14492,9 @@ } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -13948,246 +14545,91 @@ } }, "yeoman-generator": { - "version": "github:ev1stensberg/generator#9e24fa31c85302ca1145ae34fc68b4f133251ca0", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", + "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", "dev": true, "requires": { "async": "2.6.0", - "chalk": "1.1.3", + "chalk": "2.3.1", "cli-table": "0.3.1", "cross-spawn": "5.1.0", "dargs": "5.1.0", - "dateformat": "2.2.0", - "debug": "2.6.9", + "dateformat": "3.0.3", + "debug": "3.1.0", "detect-conflict": "1.0.1", "error": "7.0.2", "find-up": "2.1.0", "github-username": "4.1.0", "istextorbinary": "2.2.1", "lodash": "4.17.5", + "make-dir": "1.2.0", "mem-fs-editor": "3.0.2", "minimist": "1.2.0", - "mkdirp": "0.5.1", "pretty-bytes": "4.0.2", "read-chunk": "2.1.0", - "read-pkg-up": "2.0.0", + "read-pkg-up": "3.0.0", "rimraf": "2.6.2", "run-async": "2.3.0", - "shelljs": "0.7.8", + "shelljs": "0.8.1", "text-table": "0.2.0", "through2": "2.0.3", - "yeoman-environment": "1.6.6" + "yeoman-environment": "2.0.5" }, "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", - "dev": true - }, - "external-editor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", - "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", - "dev": true, - "requires": { - "extend": "3.0.1", - "spawn-sync": "1.0.15", - "tmp": "0.0.29" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globby": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", - "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "6.0.4", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "inquirer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", - "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "external-editor": "1.1.1", - "figures": "1.7.0", - "lodash": "4.17.5", - "mute-stream": "0.0.6", - "pinkie-promise": "2.0.1", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", + "parse-json": "4.0.0", + "pify": "3.0.0", "strip-bom": "3.0.0" } }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "mute-stream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", - "dev": true + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "2.0.0", + "load-json-file": "4.0.0", "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "path-type": "3.0.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" + "read-pkg": "3.0.0" } }, "strip-bom": { @@ -14195,44 +14637,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true - }, - "tmp": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", - "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "untildify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "yeoman-environment": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-1.6.6.tgz", - "integrity": "sha1-zYX6Z9FWBg5EDXgH1+988NLR1nE=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "debug": "2.6.9", - "diff": "2.2.3", - "escape-string-regexp": "1.0.5", - "globby": "4.1.0", - "grouped-queue": "0.3.3", - "inquirer": "1.2.3", - "lodash": "4.17.5", - "log-symbols": "1.0.2", - "mem-fs": "1.1.3", - "text-table": "0.2.0", - "untildify": "2.1.0" - } } } } diff --git a/package.json b/package.json index d5da1182..6b9f82cd 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "license": "apache-2.0", "scripts": { - "start": "webpack-dev-server --hot", + "start": "webpack serve --hot --inline", "build": "webpack -p", "lint": "eslint src" }, @@ -18,6 +18,7 @@ "build/*" ], "devDependencies": { + "@types/node": "^9.4.7", "awesome-typescript-loader": "^4.0.1", "babel-loader": "^7.1.4", "babel-plugin-jsx-pragmatic": "^1.0.2", @@ -29,25 +30,39 @@ "babel-plugin-transform-react-jsx": "^6.24.1", "babel-plugin-transform-react-remove-prop-types": "^0.4.13", "babel-preset-env": "^1.6.1", + "babel-register": "^6.26.0", + "copy-webpack-plugin": "^4.5.1", "css-loader": "^0.28.10", + "ejs-loader": "^0.3.1", "eslint": "^4.18.2", "eslint-config-developit": "^1.1.1", + "extract-text-webpack-plugin": "^4.0.0-beta.0", "html-webpack-plugin": "^3.0.6", "if-env": "^1.0.4", "mini-css-extract-plugin": "^0.2.0", "node-sass": "^4.7.2", + "preact-render-to-string": "^3.7.0", + "preload-webpack-plugin": "github:GoogleChromeLabs/preload-webpack-plugin", "sass-loader": "^6.0.7", + "script-ext-html-webpack-plugin": "^2.0.0", + "style-loader": "^0.20.3", + "typescript": "^2.7.2", "typescript-loader": "^1.1.3", + "typings-for-css-modules-loader": "^1.7.0", "webpack": "^4.1.1", - "webpack-cli": "^2.0.10", - "webpack-dev-server": "^3.1.0" + "webpack-cli": "^2.0.11", + "webpack-dev-server": "^3.1.1", + "webpack-plugin-replace": "^1.1.1" }, "dependencies": { - "material-components-web": "^0.31.0", + "classnames": "^2.2.5", + "material-components-web": "^0.32.0", "material-radial-progress": "git+https://gist.github.com/02134901c77c5309924bfcf8b4435ebe.git", "preact": "^8.2.7", "preact-i18n": "^1.2.0", "preact-material-components": "^1.3.7", - "preact-router": "^2.6.0" + "preact-material-components-drawer": "git+https://gist.github.com/a78fceed440b98e62582e4440b86bfab.git", + "preact-router": "^2.6.0", + "ts-loader": "^4.0.1" } } diff --git a/src/components/app/index.js b/src/components/app/index.js deleted file mode 100644 index 12a3e05b..00000000 --- a/src/components/app/index.js +++ /dev/null @@ -1,36 +0,0 @@ -import { Component } from 'preact'; -import { updater, toggle } from '../../lib/util'; -import Fab from '../fab'; -import Header from '../header'; -import Drawer from '../drawer'; -import Home from '../home'; -import style from './style'; - -export default class App extends Component { - state = { - showDrawer: false, - showFab: true - }; - - openDrawer = updater(this, 'showDrawer', true); - closeDrawer = updater(this, 'showDrawer', false); - toggleDrawer = updater(this, 'showDrawer', toggle); - - openFab = updater(this, 'showFab', true); - closeFab = updater(this, 'showFab', false); - toggleFab = updater(this, 'showFab', toggle); - - render({ url }, { showDrawer, showFab }) { - return ( -
- -
- -
- -
- -
- ); - } -} diff --git a/src/components/app/index.tsx b/src/components/app/index.tsx new file mode 100644 index 00000000..67832eaa --- /dev/null +++ b/src/components/app/index.tsx @@ -0,0 +1,110 @@ +import { h, Component } from 'preact'; +import { updater, toggle, When } from '../../lib/util'; +import Fab from '../fab'; +import Header from '../header'; +// import Drawer from 'async!../drawer'; +import Home from '../home'; +import * as style from './style.scss'; + +type Props = { + url?: String +} + +type FileObj = { + id: any, + data: any, + error: Error | DOMError | String, + file: File, + loading: Boolean +}; + +type State = { + showDrawer: Boolean, + showFab: Boolean, + files: FileObj[] +}; + +let counter = 0; + +export default class App extends Component { + state: State = { + showDrawer: false, + showFab: true, + files: [] + }; + + loadFile = (file: File) => { + let fileObj = { + id: ++counter, + file, + error: null, + loading: true, + data: null + }; + + this.setState({ + files: [fileObj] + }); + + let fr = new FileReader(); + // fr.readAsArrayBuffer(); + fr.onerror = () => { + let files = this.state.files.slice(); + files.splice(0, files.indexOf(fileObj), { + ...fileObj, + error: fr.error, + loading: false + }); + this.setState({ files }); + }; + fr.onloadend = () => { + let files = this.state.files.slice(); + files.splice(0, files.indexOf(fileObj), { + ...fileObj, + data: fr.result, + loading: false + }); + this.setState({ files }); + }; + fr.readAsDataURL(file); + }; + + enableDrawer = false; + + openDrawer = updater(this, 'showDrawer', true); + closeDrawer = updater(this, 'showDrawer', false); + toggleDrawer = updater(this, 'showDrawer', toggle); + + openFab = updater(this, 'showFab', true); + closeFab = updater(this, 'showFab', false); + toggleFab = updater(this, 'showFab', toggle); + + render({ url }, { showDrawer, showFab, files }) { + if (showDrawer) this.enableDrawer = true; + return ( +
+ + +
+ + {/* Avoid loading & rendering the drawer until the first time it is shown. */} + {/* + + + + */} + + {/* + Note: this is normally where a with auto code-splitting goes. + Since we don't seem to need one (yet?), it's omitted. + */} +
+ +
+ + {/* This ends up in the body when prerendered, which makes it load async. */} + +
+ ); + } +} diff --git a/src/components/app/style.scss.d.ts b/src/components/app/style.scss.d.ts new file mode 100644 index 00000000..9a895562 --- /dev/null +++ b/src/components/app/style.scss.d.ts @@ -0,0 +1,2 @@ +export const app: string; +export const content: string; diff --git a/src/components/drawer/index.js b/src/components/drawer/index.js index eac14b5f..32666526 100644 --- a/src/components/drawer/index.js +++ b/src/components/drawer/index.js @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { h, Component } from 'preact'; import MdlDrawer from 'preact-material-components-drawer'; import 'preact-material-components/Drawer/style.css'; import List from 'preact-material-components/List'; @@ -7,14 +7,27 @@ import { Text } from 'preact-i18n'; import style from './style'; export default class Drawer extends Component { - render({ showing, openDrawer, closeDrawer }) { + state = { + rendered: false + }; + + setRendered = () => { + this.setState({ rendered: true }); + }; + + render({ showing, openDrawer, closeDrawer }, { rendered }) { + if (showing && !rendered) { + setTimeout(this.setRendered, 20); + showing = false; + } + return ( - + logo - - + + verified_user Sign In @@ -26,7 +39,7 @@ export default class Drawer extends Component { -
+
settings Preferences diff --git a/src/components/drawer/style.scss.d.ts b/src/components/drawer/style.scss.d.ts new file mode 100644 index 00000000..0cfecb62 --- /dev/null +++ b/src/components/drawer/style.scss.d.ts @@ -0,0 +1,14 @@ +export const mdcListItemSecondaryText: string; +export const mdcListItemGraphic: string; +export const mdcListItemMeta: string; +export const mdcListItem: string; +export const mdcListDivider: string; +export const mdcListGroup: string; +export const mdcListGroupSubheader: string; +export const drawer: string; +export const logo: string; +export const category: string; +export const bottom: string; +export const mdcRippleFgRadiusIn: string; +export const mdcRippleFgOpacityIn: string; +export const mdcRippleFgOpacityOut: string; diff --git a/src/components/fab/index.js b/src/components/fab/index.js index afadd22b..fd84ba19 100644 --- a/src/components/fab/index.js +++ b/src/components/fab/index.js @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { h, Component } from 'preact'; import Icon from 'preact-material-components/Icon'; import 'preact-material-components/Icon/style.css'; import Fab from 'preact-material-components/Fab'; @@ -20,7 +20,7 @@ export default class AppFab extends Component { { loading ? ( ) : ( - file_download + file_download ) } ); diff --git a/src/components/fab/style.scss.d.ts b/src/components/fab/style.scss.d.ts new file mode 100644 index 00000000..87e220fe --- /dev/null +++ b/src/components/fab/style.scss.d.ts @@ -0,0 +1,5 @@ +export const fab: string; +export const progress: string; +export const mdcRippleFgRadiusIn: string; +export const mdcRippleFgOpacityIn: string; +export const mdcRippleFgOpacityOut: string; diff --git a/src/components/header/index.js b/src/components/header/index.js index 2e497354..bfb31d93 100644 --- a/src/components/header/index.js +++ b/src/components/header/index.js @@ -1,34 +1,45 @@ -import { Component } from 'preact'; +import { h, Component } from 'preact'; import Toolbar from 'preact-material-components/Toolbar'; -// import 'preact-material-components/Toolbar/mdc-toolbar.scss'; -// import Icon from 'preact-material-components/Icon'; -// import 'preact-material-components/Icon/style.css'; -// import Fab from 'preact-material-components/Fab'; -// import 'preact-material-components/Fab/mdc-fab.scss'; +import cx from 'classnames'; import style from './style'; export default class Header extends Component { - // fabClick = () => { - // alert("Hello"); - // }; + setInputRef = c => { + this.input = c; + }; + + handleFiles = () => { + let files = this.input.files; + if (files.length) { + this.props.loadFile(files[0]); + } + }; + + upload = () => { + // let input = document.createElement('input'); + // input.type = 'file'; + // // input.multiple = true; + // document.body.appendChild(input); + // input.addEventListener('change', e => { + + // }); + // input.click(); + this.input.click(); + }; render({ toggleDrawer, showHeader, showFab }) { return ( - + - + + file_upload - - menu + + menu - - {/* - - create - - */} + ); } diff --git a/src/components/header/style.scss b/src/components/header/style.scss index 7db8c3af..8c22f295 100644 --- a/src/components/header/style.scss +++ b/src/components/header/style.scss @@ -15,6 +15,12 @@ // } } +.fileInput { + position: absolute; + left: 0; + top: -999px; +} + .fab { position: fixed; display: block; diff --git a/src/components/header/style.scss.d.ts b/src/components/header/style.scss.d.ts new file mode 100644 index 00000000..df66137f --- /dev/null +++ b/src/components/header/style.scss.d.ts @@ -0,0 +1,8 @@ +export const toolbar: string; +export const minimal: string; +export const fileInput: string; +export const fab: string; +export const logo: string; +export const menu: string; +export const menuItem: string; +export const title: string; diff --git a/src/components/home/index.js b/src/components/home/index.js deleted file mode 100644 index e7ca116f..00000000 --- a/src/components/home/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Component } from 'preact'; -// import Button from 'preact-material-components/Button'; -// import Switch from 'preact-material-components/Switch'; -// import 'preact-material-components/Switch/style.css'; -import style from './style'; - - -export default class Home extends Component { - render() { - return ( -
-

Home

-
- ); - } -} diff --git a/src/components/home/index.tsx b/src/components/home/index.tsx new file mode 100644 index 00000000..1f2e9b75 --- /dev/null +++ b/src/components/home/index.tsx @@ -0,0 +1,36 @@ +import { h, Component } from 'preact'; +// import Button from 'preact-material-components/Button'; +// import Switch from 'preact-material-components/Switch'; +// import 'preact-material-components/Switch/style.css'; +import * as style from './style.scss'; + +type Props = { + files: { + data: any + }[] +}; +type State = { + active: boolean +}; + +export default class Home extends Component { + state: State = { + active: false + }; + + componentDidMount() { + setTimeout( () => { + this.setState({ active: true }); + }); + } + + render({ files }, { active }) { + return ( +
+ { files && files[0] && ( + + ) } +
+ ); + } +} diff --git a/src/components/home/style.scss b/src/components/home/style.scss index 219991b7..ee19608e 100644 --- a/src/components/home/style.scss +++ b/src/components/home/style.scss @@ -7,4 +7,14 @@ .home { padding: 20px; + opacity: 0; +} + +.active { + animation: fadeIn 2s forwards ease 1; +} + +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } } \ No newline at end of file diff --git a/src/components/home/style.scss.d.ts b/src/components/home/style.scss.d.ts new file mode 100644 index 00000000..c9e5bf62 --- /dev/null +++ b/src/components/home/style.scss.d.ts @@ -0,0 +1,3 @@ +export const home: string; +export const active: string; +export const fadeIn: string; diff --git a/src/index.html b/src/index.html new file mode 100644 index 00000000..8f003453 --- /dev/null +++ b/src/index.html @@ -0,0 +1,28 @@ + + + + + Squoosh + + + + + + + + <%= + /*require('../config/prerender')()*/ + htmlWebpackPlugin.options.prerender() + %> + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index 2fe2f4c3..f6227aba 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,6 @@ if (typeof window!=='undefined') { e.preventDefault(); return false; } - } while (target = target.parentNode); + } while ((target = target.parentNode)); }); } diff --git a/src/lib/util.js b/src/lib/util.js index d9a652e1..fd622c8c 100644 --- a/src/lib/util.js +++ b/src/lib/util.js @@ -1,3 +1,5 @@ +import { Component } from 'preact'; + export function updater(obj, property, value) { return e => { let update = {}; @@ -8,3 +10,10 @@ export function updater(obj, property, value) { export const toggle = value => !value; +export class When extends Component { + state = { ready: !!this.props.value }; + render({ value, children: [child] }, { ready }) { + if (value && !ready) this.setState({ ready: true }); + return ready ? (typeof child === 'function' ? child() : child) : null; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..2e6b2cc6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "target": "es2017", + "module": "esnext", + "moduleResolution": "node", + "sourceMap": true, + "jsx": "react", + "jsxFactory": "h", + "allowJs": true + } +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 6e4c1e1b..58544a7d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,78 +1,191 @@ let path = require('path'); let webpack = require('webpack'); +// let ExtractTextPlugin = require('extract-text-webpack-plugin'); let MiniCssExtractPlugin = require('mini-css-extract-plugin'); +let HtmlWebpackPlugin = require('html-webpack-plugin'); +let PreloadWebpackPlugin = require('preload-webpack-plugin'); +let ReplacePlugin = require('webpack-plugin-replace'); +let CopyPlugin = require('copy-webpack-plugin'); +let WatchTimestampsPlugin = require('./config/watch-timestamps-plugin'); module.exports = function(_, env) { + let isProd = env.mode === 'production'; + let nodeModules = path.join(__dirname, 'node_modules'); + let componentStyleDirs = [ + path.join(__dirname, 'src/components'), + path.join(__dirname, 'src/routes') + ]; + + let babelRc = JSON.parse(require('fs').readFileSync('.babelrc')); + babelRc.babelrc = false; + babelRc.presets[0][1].modules = isProd ? false : 'commonjs'; + return { mode: env.mode || 'development', - entry: './src/index', + entry: path.join(__dirname, 'config/client-boot.js'), + // entry: './src/index', + output: { + filename: isProd ? '[name].[chunkhash:5].js' : '[name].js', + chunkFilename: '[name].chunk.[chunkhash:5].js', + path: path.join(__dirname, 'build'), + publicPath: '/' + }, resolve: { - extensions: ['.ts', '.js', '.scss', '.css'], + extensions: ['.ts', '.tsx', '.js', '.jsx', '.scss', '.css'], alias: { + 'app-entry-point': path.join(__dirname, 'src/index'), style: path.join(__dirname, 'src/style') } }, + resolveLoader: { + alias: { + async: path.join(__dirname, 'config/async-component-loader') + } + }, module: { rules: [ { - test: /\.s?css$/, + test: /\.tsx?$/, + enforce: 'pre', + // loader: 'awesome-typescript-loader', + loader: 'ts-loader', + exclude: nodeModules + }, + { + test: /\.(tsx?|jsx?)$/, + loader: 'babel-loader', + options: babelRc + }, + { + test: /\.(scss|sass)$/, + loader: 'sass-loader', + enforce: 'pre', + options: { + sourceMap: true, + includePaths: [nodeModules] + } + }, + { + test: /\.(scss|sass|css)$/, + include: componentStyleDirs, use: [ - MiniCssExtractPlugin.loader, - { loader: 'css-loader' }, - // 'sass-loader?includePaths='+encodeURIComponent(path.join(__dirname, 'node_modules')) + isProd ? MiniCssExtractPlugin.loader : 'style-loader', { - loader: 'sass-loader', + // loader: 'typings-for-css-modules-loader?modules&localIdentName=[local]__[hash:base64:5]&importLoaders=1'+(isProd ? '&sourceMap' : '') + // loader: 'css-loader', + loader: 'typings-for-css-modules-loader', options: { - includePaths: [path.join(__dirname, 'node_modules')] + modules: true, + localIdentName: '[local]__[hash:base64:5]', + namedExport: true, + camelCase: true, + importLoaders: 1, + sourceMap: isProd, + sass: true } } ] + // loader: ExtractTextPlugin.extract({ + // fallback: 'style-loader', + // use: [{ + // loader: 'css-loader', + // options: { + // modules: true, + // localIdentName: '[local]__[hash:base64:5]', + // importLoaders: 1, + // sourceMap: isProd + // } + // }] + // }) }, { - test: /\.ts$/, - // loader: 'awesome-typescript-loader' - loader: 'typescript-loader' - }, - { - test: /\.js$/, - loader: 'babel-loader', - options: { - presets: [ - ['env', { - loose: true, - uglify: true, - modules: false, - targets: { - browsers: 'last 2 versions' - }, - exclude: [ - 'transform-regenerator', - 'transform-es2015-typeof-symbol' - ] - }] - ], - plugins: [ - 'syntax-dynamic-import', - 'transform-decorators-legacy', - 'transform-class-properties', - 'transform-object-rest-spread', - 'transform-react-constant-elements', - 'transform-react-remove-prop-types', - ['transform-react-jsx', { - pragma: 'h' - }], - ['jsx-pragmatic', { - module: 'preact', - export: 'h', - import: 'h' - }] - ] - } + test: /\.(scss|sass|css)$/, + exclude: componentStyleDirs, + use: [ + isProd ? MiniCssExtractPlugin.loader : 'style-loader', + { + loader: 'css-loader', + options: { + importLoaders: 1, + sourceMap: isProd + } + } + ] + // loader: ExtractTextPlugin.extract({ + // fallback: 'style-loader', + // use: [{ + // loader: 'css-loader', + // options: { + // importLoaders: 1, + // sourceMap: isProd + // } + // }] + // }) } ] }, plugins: [ - new webpack.optimize.SplitChunksPlugin({}) - ] + isProd && new webpack.optimize.SplitChunksPlugin({}), + isProd && new MiniCssExtractPlugin({}), + // new ExtractTextPlugin({ + // filename: isProd ? 'style.[contenthash:5].css' : 'style.css', + // disable: !isProd, + // allChunks: true + // }), + + // fixes infinite loop in typings-for-css-modules-loader: + new webpack.WatchIgnorePlugin([ + /(c|sc|sa)ss\.d\.ts$/ + ]), + new WatchTimestampsPlugin([ + /(c|sc|sa)ss\.d\.ts$/ + ]), + new HtmlWebpackPlugin({ + filename: path.join(__dirname, 'build/index.html'), + template: '!!ejs-loader!src/index.html', + minify: isProd && { + collapseWhitespace: true, + removeScriptTypeAttributes: true, + removeRedundantAttributes: true, + removeStyleLinkTypeAttributes: true, + removeComments: true + }, + manifest: require('./src/manifest.json'), + + /** @todo Finish implementing prerendering similar to that of Preact CLI. */ + prerender() { + return '
'; + // require('babel-register')({ ignore: false }); + // return require('./config/prerender')(); + }, + inject: true, + compile: true + }), + isProd && new PreloadWebpackPlugin(), + isProd && new ReplacePlugin({ + include: /babel-helper$/, + patterns: [{ + regex: /throw\s+(new\s+)?(Type|Reference)?Error\s*\(/g, + value: s => `return;${Array(s.length - 7).join(' ')}(` + }] + }), + new CopyPlugin([ + { from: 'src/manifest.json', to: 'manifest.json' }, + { from: 'src/assets', to: 'assets' } + ]) + ].filter(Boolean), + + devServer: { + contentBase: path.join(__dirname, 'src'), + inline: true, + hot: true, + historyApiFallback: true, + noInfo: true, + progress: true, + // quiet: true, + clientLogLevel: 'none', + stats: 'minimal', + overlay: false + } }; };