From dbea198c6df0e32d5ebb090128c13aaebfbfb63a Mon Sep 17 00:00:00 2001 From: btzr-io Date: Thu, 29 Mar 2018 15:35:16 -0700 Subject: [PATCH 01/49] update welcome screen --- package.json | 8 +- src/components/comic-button/style.less | 8 +- src/routes/welcome/index.js | 4 +- src/routes/welcome/style.less | 15 +- src/style/index.less | 1 + yarn.lock | 7758 ++++++++++++++++++++++++ 6 files changed, 7780 insertions(+), 14 deletions(-) create mode 100644 yarn.lock diff --git a/package.json b/package.json index 1f95dea..d49aab4 100644 --- a/package.json +++ b/package.json @@ -55,10 +55,10 @@ "preact-cli": "^1.3.0" }, "dependencies": { - "preact": "^8.2.1", - "preact-compat": "^3.16.0", - "preact-redux": "^2.0.2", - "preact-router": "^2.5.5", + "preact": "^8.2.7", + "preact-compat": "^3.18.0", + "preact-redux": "^2.0.3", + "preact-router": "^2.6.0", "redux": "^3.7.2" } } diff --git a/src/components/comic-button/style.less b/src/components/comic-button/style.less index b75bcd7..f3948f8 100644 --- a/src/components/comic-button/style.less +++ b/src/components/comic-button/style.less @@ -1,9 +1,13 @@ @import '~style/helpers'; .comic_button { + background-color: #7d5fff; + color: black; + border: 0; appearance: none; - border: 2px solid white; - background-color: #61AFEF; + padding: 0 5%; + margin: 5% 0; cursor: pointer; + border-radius: 100px; word-wrap: break-word; } diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index 7fa46f7..4810c85 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -23,8 +23,8 @@ export default class Welcome extends Component { render() { return (
-

Comic Book Reader

-

+

Comic Book Reader

+

A touch friendly HTML5 comic book reader that reads CBR, CBZ, CBT, and PDF files.

diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index 9c56439..5caca65 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -4,15 +4,18 @@ position: absolute; top: 0px; bottom: 0px; - left: 0px; - right: 0px; + left: 5%; + right: 5%; text-align: center; justify-content: center; align-items: center; - color: black; - font-size: 7vmin; - line-height: 10vmin; - background-color: grey; + color: white; + font-size: 5vmin; + line-height: 8vmin; +} + +.welcome p { + margin: 0 15%; } .welcome button { diff --git a/src/style/index.less b/src/style/index.less index 6369a58..f5fe9cf 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -20,6 +20,7 @@ body { min-height: 100%; margin: 0; padding: 0; + background: black; } /* Make scroll bars small and blue on Chrome */ diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..8a15478 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7758 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/configstore@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" + +"@types/debug@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.29.tgz#a1e514adfbd92f03a224ba54d693111dbf1f3754" + +"@types/events@*": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + +"@types/get-port@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-0.0.4.tgz#eb6bb7423d9f888b632660dc7d2fd3e69a35643e" + +"@types/glob@^5.0.30": + version "5.0.35" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + +"@types/mkdirp@^0.3.29": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" + +"@types/node@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.1.tgz#e2d374ef15b315b48e7efc308fa1a7cd51faa06c" + +"@types/node@^7.0.11": + version "7.0.58" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.58.tgz#ae852120137f40a29731a559e48003bd2d5d19f7" + +"@types/tmp@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.32.tgz#0d3cb31022f8427ea58c008af32b80da126ca4e3" + +"@webpack-blocks/core@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/core/-/core-0.4.0.tgz#a9225cdaafec06576713a552cd78e0ee054828a9" + dependencies: + webpack-merge "^2.3.1" + +"@webpack-blocks/css-modules@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/css-modules/-/css-modules-0.4.0.tgz#10ee59f33d72d3f51e8dbf910753347e31a1a872" + dependencies: + css-loader "^0.25.0" + style-loader "^0.13.1" + +"@webpack-blocks/dev-server2@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/dev-server2/-/dev-server2-0.4.0.tgz#fafb16c3cbc04ac5189c13d6a66c7b470b6d2775" + dependencies: + "@webpack-blocks/webpack-common" "^0.4.0" + webpack "^2.2.0" + webpack-dev-server "^2.2.0" + +"@webpack-blocks/extract-text2@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/extract-text2/-/extract-text2-0.4.0.tgz#99e100abb1f789c5c91c0c2dbad5fa3aa8d15a8a" + dependencies: + "@webpack-blocks/webpack-common" "^0.4.0" + extract-text-webpack-plugin "^2.0.0-rc.0" + +"@webpack-blocks/postcss@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@webpack-blocks/postcss/-/postcss-0.4.3.tgz#1690d894cd0882cd688d5ea9c8ad2ecec828acd2" + dependencies: + postcss-loader "^1.2.0" + +"@webpack-blocks/webpack-common@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/webpack-common/-/webpack-common-0.4.0.tgz#5153b1daf8633d8dd10f3a3ebb75e046f7870733" + +"@webpack-blocks/webpack2@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@webpack-blocks/webpack2/-/webpack2-0.4.0.tgz#bf257676acfe857cabace0b22fc8ee5410c58332" + dependencies: + "@webpack-blocks/core" "^0.4.0" + "@webpack-blocks/webpack-common" "^0.4.0" + css-loader "^0.25.0" + file-loader "^0.9.0" + style-loader "^0.13.1" + url-loader "^0.5.7" + webpack "^2.2.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0, acorn@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + +ajv-keywords@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv@^4.7.0, ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.0.0, ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +archive-type@^3.0.0, archive-type@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" + dependencies: + file-type "^3.1.0" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-each-series@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +autoprefixer@^7.1.0: + version "7.2.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc" + dependencies: + browserslist "^2.11.3" + caniuse-lite "^1.0.30000805" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.17" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-eslint@^7.1.1: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.0.0: + version "7.1.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-jsx-pragmatic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-1.0.2.tgz#41e2beb8642235f34b2a7ab12ca39e07201b8e59" + dependencies: + babel-plugin-syntax-jsx "^6.0.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-jsx@^6.0.0, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators-legacy@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" + dependencies: + babel-plugin-syntax-decorators "^6.1.18" + babel-runtime "^6.2.0" + babel-template "^6.3.0" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-assign@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-constant-elements@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-remove-prop-types@^0.4.5: + version "0.4.13" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.13.tgz#331cfc05099a808238311d78319c27460d481189" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.2.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.3.3: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.24.1, babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +bin-build@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" + dependencies: + archive-type "^3.0.1" + decompress "^3.0.0" + download "^4.1.2" + exec-series "^1.0.0" + rimraf "^2.2.6" + tempfile "^1.0.0" + url-regex "^3.0.0" + +bin-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" + dependencies: + executable "^1.0.0" + +bin-version-check@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" + dependencies: + bin-version "^1.0.0" + minimist "^1.1.0" + semver "^4.0.3" + semver-truncate "^1.0.0" + +bin-version@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" + dependencies: + find-versions "^1.0.0" + +bin-wrapper@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" + dependencies: + bin-check "^2.0.0" + bin-version-check "^2.1.0" + download "^4.0.0" + each-async "^1.1.1" + lazy-req "^1.0.0" + os-filter-obj "^1.0.0" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.7, bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + dependencies: + 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.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.4.tgz#cc526af4a1312b7d2e05653e56d0c8ab70c0e053" + dependencies: + caniuse-lite "^1.0.30000670" + electron-to-chromium "^1.3.11" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^2.1.2, browserslist@^2.11.3: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + +buffer-to-vinyl@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" + dependencies: + file-type "^3.1.0" + readable-stream "^2.0.2" + uuid "^2.0.1" + vinyl "^1.0.0" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@1.0.30000671: + version "1.0.30000671" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000671.tgz#9f071bbc7b96994638ccbaf47829d58a1577a8ed" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000821" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000821.tgz#3fcdc67c446a94a9cdd848248a4e3e54b2da7419" + +caniuse-lite@^1.0.30000670, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805: + version "1.0.30000821" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000821.tgz#0f3223f1e048ed96451c56ca6cf197058c42cb93" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +caw@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" + dependencies: + get-proxy "^1.0.1" + is-obj "^1.0.0" + object-assign "^3.0.0" + tunnel-agent "^0.4.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chokidar@^2.0.0, chokidar@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +ci-info@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.1.x: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + dependencies: + source-map "0.5.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +co@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.2.tgz#12819c64faf95446ec0ae07fe6cafb6eb3708b22" + +commander@2.15.x, commander@~2.15.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + dependencies: + mime-db ">= 1.33.0 < 2" + +compression@^1.5.2: + version "1.7.2" + resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.1.1, convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-webpack-plugin@^4.0.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz#fc4f68f4add837cc5e13d111b20715793225d29c" + dependencies: + 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.0.0" + serialize-javascript "^1.4.0" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.4.tgz#f2c8bf181f2a80b92f360121429ce63a2f0aeae0" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.0, create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn-promise@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/cross-spawn-promise/-/cross-spawn-promise-0.10.1.tgz#db9cb4c50c60b72a15be049b78122ce382d87b10" + dependencies: + cross-spawn "^5.1.0" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.25.0.tgz#c3febc8ce28f4c83576b6b13707f47f90c390223" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.6.0" + cssnano ">=2.6.1 <4" + loader-utils "~0.2.2" + lodash.camelcase "^3.0.1" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + source-list-map "^0.1.4" + +css-modules-require-hook@^4.0.6: + version "4.2.3" + resolved "https://registry.yarnpkg.com/css-modules-require-hook/-/css-modules-require-hook-4.2.3.tgz#6792ca412b15e23e6f9be6a07dcef7f577ff904d" + dependencies: + debug "^2.2.0" + generic-names "^1.0.1" + glob-to-regexp "^0.3.0" + icss-replace-symbols "^1.0.2" + lodash "^4.3.0" + postcss "^6.0.1" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-resolve-imports "^1.3.0" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.1" + seekout "^1.0.1" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +decompress-tar@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" + dependencies: + is-tar "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-tarbz2@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" + dependencies: + is-bzip2 "^1.0.0" + object-assign "^2.0.0" + seek-bzip "^1.0.3" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-targz@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" + dependencies: + is-gzip "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-unzip@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" + dependencies: + is-zip "^1.0.0" + read-all-stream "^3.0.0" + stat-mode "^0.2.0" + strip-dirs "^1.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + yauzl "^2.2.1" + +decompress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" + dependencies: + buffer-to-vinyl "^1.0.0" + concat-stream "^1.4.6" + decompress-tar "^3.0.0" + decompress-tarbz2 "^3.0.0" + decompress-targz "^3.0.0" + decompress-unzip "^3.0.0" + stream-combiner2 "^1.1.1" + vinyl-assign "^1.0.1" + vinyl-fs "^2.2.0" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@^0.4.0, deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2, del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + +devcert-san@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/devcert-san/-/devcert-san-0.3.3.tgz#aa77244741b2d831771c011f22ee25e396ad4ba9" + dependencies: + "@types/configstore" "^2.1.1" + "@types/debug" "^0.0.29" + "@types/get-port" "^0.0.4" + "@types/glob" "^5.0.30" + "@types/mkdirp" "^0.3.29" + "@types/node" "^7.0.11" + "@types/tmp" "^0.0.32" + command-exists "^1.2.2" + configstore "^3.0.0" + debug "^2.6.3" + eol "^0.8.1" + get-port "^3.0.0" + glob "^7.1.1" + mkdirp "^0.5.1" + tmp "^0.0.31" + tslib "^1.6.0" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.0.2, doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e" + dependencies: + urijs "^1.16.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +download@^4.0.0, download@^4.1.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" + dependencies: + caw "^1.0.1" + concat-stream "^1.4.7" + each-async "^1.0.0" + filenamify "^1.0.1" + got "^5.0.0" + gulp-decompress "^1.2.0" + gulp-rename "^1.2.0" + is-url "^1.2.0" + object-assign "^4.0.1" + read-all-stream "^3.0.0" + readable-stream "^2.0.2" + stream-combiner2 "^1.1.1" + vinyl "^1.0.0" + vinyl-fs "^2.2.0" + ware "^1.2.0" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer2@^0.1.4, duplexer2@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-async@^1.0.0, each-async@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" + dependencies: + onetime "^1.0.0" + set-immediate-shim "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs-loader@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ejs-loader/-/ejs-loader-0.3.1.tgz#280c8e030bd32428c29826f6bbf6b6d0c14f7ca4" + dependencies: + loader-utils "^0.2.7" + lodash "^3.6.0" + +ejs@^2.3.4: + version "2.5.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.8.tgz#2ab6954619f225e6193b7ac5f7c39c48fefe4380" + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.11, electron-to-chromium@^1.3.30: + version "1.3.41" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.41.tgz#7e33643e00cd85edfd17e04194f6d00e73737235" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emitter-mixin@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/emitter-mixin/-/emitter-mixin-0.0.3.tgz#5948cb286f2e48edc3b251a7cfc1f7883396d65c" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +enhanced-resolve@^3.3.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +eol@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.8.1.tgz#defc3224990c7eca73bb34461a56cf9dc24761d0" + +errno@^0.1.1, errno@^0.1.2, errno@^0.1.3: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es6-promise@^4.0.3, es6-promise@^4.0.5: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +eslint-config-synacor@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/eslint-config-synacor/-/eslint-config-synacor-1.1.2.tgz#6ffaa55b1c6a8b39efb398ade192753766a0c71e" + dependencies: + babel-eslint "^7.1.1" + eslint-plugin-compat "^1.0.0" + eslint-plugin-mocha "^4.0.0" + eslint-plugin-react "^7.0.0" + +eslint-plugin-compat@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-1.0.4.tgz#76e52038119a5080e2612cc4141d687f4d140398" + dependencies: + babel-runtime "^6.23.0" + browserslist "2.1.4" + caniuse-db "1.0.30000671" + requireindex "^1.1.0" + +eslint-plugin-mocha@^4.0.0: + version "4.12.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-4.12.1.tgz#dbacc543b178b4536ec5b19d7f8e8864d85404bf" + dependencies: + ramda "^0.25.0" + +eslint-plugin-react@^7.0.0: + version "7.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160" + dependencies: + doctrine "^2.0.2" + has "^1.0.1" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.0" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.2.0: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-stream@~3.3.0: + version "3.3.4" + resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-series@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" + dependencies: + async-each-series "^1.1.0" + object-assign "^4.1.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +executable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" + dependencies: + meow "^3.1.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +express@^4.16.2: + version "4.16.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + 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.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-text-webpack-plugin@^2.0.0-rc.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz#756ef4efa8155c3681833fbc34da53b941746d6c" + dependencies: + async "^2.1.2" + loader-utils "^1.0.2" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fancy-log@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fbjs@^0.8.16: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" + dependencies: + loader-utils "^1.0.2" + +file-loader@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42" + dependencies: + loader-utils "~0.2.5" + +file-type@^3.1.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + +filenamify@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +find-versions@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" + dependencies: + array-uniq "^1.0.0" + get-stdin "^4.0.1" + meow "^3.5.0" + semver-regex "^1.0.0" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.promised@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fs.promised/-/fs.promised-3.0.0.tgz#ab77379f7c1ad0939e1262a8c2ced93fa6c39d3b" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generic-names@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + dependencies: + loader-utils "^0.2.16" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-port@^3.0.0, get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + +get-proxy@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" + dependencies: + rc "^1.1.2" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.0.0, glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^5.3.2: + version "5.3.5" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + dependencies: + extend "^3.0.0" + glob "^5.0.3" + glob-parent "^3.0.0" + micromatch "^2.3.7" + ordered-read-streams "^0.3.0" + through2 "^0.6.0" + to-absolute-glob "^0.1.1" + unique-stream "^2.0.2" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + +globals@^11.0.1: + version "11.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +gulp-decompress@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" + dependencies: + archive-type "^3.0.0" + decompress "^3.0.0" + gulp-util "^3.0.1" + readable-stream "^2.0.2" + +gulp-rename@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + +gulp-sourcemaps@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + dependencies: + convert-source-map "^1.1.1" + graceful-fs "^4.1.2" + strip-bom "^2.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + +gulp-util@^3.0.1: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.12" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.12.tgz#6bfad4d0327f5b8d2b62f5854654ac3703b9b031" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.15.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + +html-webpack-exclude-assets-plugin@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/html-webpack-exclude-assets-plugin/-/html-webpack-exclude-assets-plugin-0.0.5.tgz#41af65003f37ef333f044f49e6ada8a4d3f82959" + +html-webpack-plugin@^2.28.0: + version "2.30.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-parser-js@>=0.4.0: + version "0.4.11" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.11.tgz#5b720849c650903c27e521633d94696ee95f3529" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +icss-replace-symbols@^1.0.2, icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + +icss-utils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-3.0.1.tgz#ee70d3ae8cac38c6be5ed91e851b27eed343ad0f" + dependencies: + postcss "^6.0.2" + +ieee754@^1.1.4: + version "1.1.11" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455" + +if-env@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/if-env/-/if-env-1.0.4.tgz#8b2b6bd308af86a3a19bb273426761085104878b" + dependencies: + npm-run-all "1.4.0" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore@^3.3.3, ignore@^3.3.5: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +immutability-helper@^2.1.2: + version "2.6.6" + resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.6.6.tgz#9b384c240d65257133c155086e16f678ca563b05" + dependencies: + invariant "^2.2.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@^3.0.6, inquirer@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +invariant@^2.2.0, invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip-regex@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-absolute@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" + dependencies: + is-relative "^0.1.0" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-bzip2@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + dependencies: + ci-info "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-natural-number@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-relative@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-tar@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-url@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +is-zip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isomorphic-unfetch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-2.0.0.tgz#f50140a4c163d7582b5f37f1591968c4f809a645" + dependencies: + node-fetch "^1.7.1" + unfetch "^3.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +js-base64@^2.1.9: + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.4.3, js-yaml@^3.9.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" + +junk@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" + +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-req@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +less-loader@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^3.0.0" + +less@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@0.2.x, loader-utils@^0.2.16, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash-es@^4.2.1: + version "4.17.8" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.8.tgz#6fa8c8c5d337481df0bdf1c0d899d42473121e45" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._createcompounder@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075" + dependencies: + lodash.deburr "^3.0.0" + lodash.words "^3.0.0" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.camelcase@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298" + dependencies: + lodash._createcompounder "^3.0.0" + +lodash.deburr@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5" + dependencies: + lodash._root "^3.0.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash.words@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3" + dependencies: + lodash._root "^3.0.0" + +lodash@^3.6.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +logalot@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + +longest@^1.0.0, longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +make-dir@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +maximatch@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge-stream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.3.11, micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + 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.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mime@1.3.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.2.11, mime@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +neo-async@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1, node-fetch@^1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-run-all@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-1.4.0.tgz#a469bb9feabe5bf3aa9916833baf6776582e8948" + dependencies: + babel-polyfill "^6.2.0" + minimatch "^3.0.0" + ps-tree "^1.0.1" + shell-quote "^1.4.3" + which "^1.2.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.11, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + +offline-plugin@^4.6.2: + version "4.9.0" + resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.9.0.tgz#0874960c0cb0c249f96b7cfc674217934660ed5c" + dependencies: + deep-extend "^0.4.0" + ejs "^2.3.4" + loader-utils "0.2.x" + minimatch "^3.0.3" + slash "^1.0.0" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opn@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ora@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" + dependencies: + chalk "^2.1.0" + cli-cursor "^2.1.0" + cli-spinners "^1.0.1" + log-symbols "^2.1.0" + +ordered-read-streams@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + dependencies: + is-stream "^1.0.1" + readable-stream "^2.0.1" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-filter-obj@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-to-regexp@^1.0.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +persist-path@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/persist-path/-/persist-path-1.0.2.tgz#b7b9475365b5ccf038aafa55af12b0dd8c418d7a" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-less@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-0.16.1.tgz#df179ed24365a60f6658e139816dbac78aee5043" + dependencies: + postcss "^5.2.16" + +postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-loader@^1.2.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-1.3.3.tgz#a621ea1fa29062a83972a46f54486771301916eb" + dependencies: + loader-utils "^1.0.2" + object-assign "^4.1.1" + postcss "^5.2.15" + postcss-load-config "^1.2.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-resolve-imports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-resolve-imports/-/postcss-modules-resolve-imports-1.3.0.tgz#398d3000b95ae969420cdf4cd83fa8067f1c5eae" + dependencies: + css-selector-tokenizer "^0.7.0" + icss-utils "^3.0.1" + minimist "^1.2.0" + +postcss-modules-scope@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.1.0, postcss-modules-values@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.15, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1, postcss@^6.0.17, postcss@^6.0.2: + version "6.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.21.tgz#8265662694eddf9e9a5960db6da33c39e4cd069d" + dependencies: + chalk "^2.3.2" + source-map "^0.6.1" + supports-color "^5.3.0" + +preact-cli@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/preact-cli/-/preact-cli-1.4.1.tgz#13aae222baa0bc6310aeb629dc8255f838180626" + dependencies: + "@webpack-blocks/css-modules" "^0.4.0" + "@webpack-blocks/dev-server2" "^0.4.0" + "@webpack-blocks/extract-text2" "^0.4.0" + "@webpack-blocks/postcss" "^0.4.3" + "@webpack-blocks/webpack2" "^0.4.0" + autoprefixer "^7.1.0" + babel-loader "^7.0.0" + babel-plugin-jsx-pragmatic "^1.0.2" + babel-plugin-transform-decorators-legacy "^1.3.4" + babel-plugin-transform-object-assign "^6.22.0" + babel-plugin-transform-react-constant-elements "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-remove-prop-types "^0.4.5" + babel-preset-env "^1.3.3" + babel-preset-stage-1 "^6.24.1" + babel-register "^6.24.1" + copy-webpack-plugin "^4.0.1" + cross-spawn-promise "^0.10.1" + css-modules-require-hook "^4.0.6" + devcert-san "^0.3.3" + ejs-loader "^0.3.0" + es6-promisify "^5.0.0" + file-loader "^0.11.1" + fs.promised "^3.0.0" + get-port "^3.1.0" + glob "^7.1.2" + html-webpack-exclude-assets-plugin "0.0.5" + html-webpack-plugin "^2.28.0" + inquirer "^3.2.0" + ip "^1.1.5" + isomorphic-unfetch "^2.0.0" + json-loader "^0.5.4" + less "^2.7.2" + less-loader "^4.0.3" + loader-utils "^1.1.0" + minimatch "^3.0.3" + mkdirp "^0.5.1" + offline-plugin "^4.6.2" + ora "^1.2.0" + persist-path "^1.0.1" + postcss-less "^0.16.1" + preact "^8.1.0" + preact-compat "^3.14.3" + preact-render-to-string "^3.6.0" + preact-router "^2.5.2" + progress-bar-webpack-plugin "^1.9.3" + promise-polyfill "^6.0.2" + raw-loader "^0.5.1" + recursive-copy "^2.0.6" + require-relative "^0.8.7" + rimraf "^2.6.1" + script-ext-html-webpack-plugin "^1.8.0" + simplehttp2server "^2.0.0" + source-map "^0.5.6" + stack-trace "0.0.10" + sw-precache-webpack-plugin "^0.11.2" + tmp "0.0.31" + unfetch "^3.0.0" + url-loader "^0.5.8" + webpack "^2.3.3" + webpack-chunk-hash "^0.4.0" + webpack-dev-server "^2.6.1" + webpack-plugin-replace "^1.1.1" + which "^1.2.14" + yargs "^8.0.1" + +preact-compat@^3.14.3, preact-compat@^3.18.0: + version "3.18.0" + resolved "https://registry.yarnpkg.com/preact-compat/-/preact-compat-3.18.0.tgz#ca430cc1f67193fb9feaf7c510832957b2ebe701" + dependencies: + immutability-helper "^2.1.2" + preact-render-to-string "^3.6.0" + preact-transition-group "^1.1.0" + prop-types "^15.5.8" + standalone-react-addons-pure-render-mixin "^0.1.1" + +preact-redux@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/preact-redux/-/preact-redux-2.0.3.tgz#960a535c322643cd35998f33f0c2e67bc1e7eaab" + +preact-render-to-string@^3.6.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-3.7.0.tgz#7db4177454bc01395e0d01d6ac07bc5e838e31ee" + dependencies: + pretty-format "^3.5.1" + +preact-router@^2.5.2, preact-router@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/preact-router/-/preact-router-2.6.0.tgz#55f7fbc84e6b8af0df3ea04c8ce4c268714089b6" + +preact-transition-group@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/preact-transition-group/-/preact-transition-group-1.1.1.tgz#f0a49327ea515ece34ea2be864c4a7d29e5d6e10" + +preact@^8.1.0, preact@^8.2.7: + version "8.2.7" + resolved "https://registry.yarnpkg.com/preact/-/preact-8.2.7.tgz#316249fb678cd5e93e7cee63cea7bfb62dbd6814" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^3.5.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" + +private@^0.1.6, private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress-bar-webpack-plugin@^1.9.3: + version "1.11.0" + resolved "https://registry.yarnpkg.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.11.0.tgz#4f801288443c55ec029b20cbfdcbf3e1dc17f852" + dependencies: + chalk "^1.1.1" + object.assign "^4.0.1" + progress "^1.1.8" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise-polyfill@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + +promise@^7.0.1, promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.8, prop-types@^15.6.0: + version "15.6.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +proxy-addr@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.6.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +ps-tree@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + +ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recursive-copy@^2.0.6: + version "2.0.9" + resolved "https://registry.yarnpkg.com/recursive-copy/-/recursive-copy-2.0.9.tgz#d9524dedb36409274cbbb3276cd8a022abca8920" + dependencies: + del "^2.2.0" + emitter-mixin "0.0.3" + errno "^0.1.2" + graceful-fs "^4.1.4" + junk "^1.0.1" + maximatch "^0.1.0" + mkdirp "^0.5.1" + pify "^2.3.0" + promise "^7.0.1" + slash "^1.0.0" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +redux@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.3" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.0.1.tgz#d857c3a741dce075c2848dcb019a0a975b190d43" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requireindex@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + +requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +script-ext-html-webpack-plugin@^1.8.0: + version "1.8.8" + resolved "https://registry.yarnpkg.com/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-1.8.8.tgz#faa888a286ce746fcd06a5e0a9e39ed7b9d24f66" + dependencies: + debug "^3.1.0" + +seek-bzip@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + dependencies: + commander "~2.8.1" + +seekout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/seekout/-/seekout-1.0.2.tgz#09ba9f1bd5b46fbb134718eb19a68382cbb1b9c9" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758" + dependencies: + node-forge "0.7.1" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" + +semver-truncate@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +semver@^4.0.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +serviceworker-cache-polyfill@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@^1.4.3: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +simplehttp2server@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simplehttp2server/-/simplehttp2server-2.0.0.tgz#f7f6421d67b40c58cde88c438ff264b2593f9217" + dependencies: + bin-build "^2.2.0" + bin-wrapper "^3.0.2" + logalot "^2.1.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.4: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +spdy-transport@^2.0.18: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + dependencies: + safe-buffer "^5.1.1" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + +standalone-react-addons-pure-render-mixin@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz#3c7409f4c79c40de9ac72c616cf679a994f37551" + +stat-mode@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.3.1 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.1.tgz#d0441be1a457a73a733a8a7b53570bebd9ef66a4" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.0.tgz#384f322ee8a848e500effde99901bba849c5d403" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + dependencies: + first-chunk-stream "^1.0.0" + strip-bom "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-dirs@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" + dependencies: + chalk "^1.0.0" + get-stdin "^4.0.1" + is-absolute "^0.1.5" + is-natural-number "^2.0.0" + minimist "^1.1.0" + sum-up "^1.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + dependencies: + escape-string-regexp "^1.0.2" + +style-loader@^0.13.1: + version "0.13.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb" + dependencies: + loader-utils "^1.0.2" + +sum-up@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" + dependencies: + chalk "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + dependencies: + has-flag "^3.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +sw-precache-webpack-plugin@^0.11.2: + version "0.11.5" + resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.5.tgz#9b53f65a4966e3adc298e256b3cef7a55c73fdfd" + dependencies: + del "^3.0.0" + sw-precache "^5.2.1" + uglify-es "^3.3.9" + +sw-precache@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179" + dependencies: + dom-urls "^1.1.0" + es6-promise "^4.0.5" + glob "^7.1.1" + lodash.defaults "^4.2.0" + lodash.template "^4.4.0" + meow "^3.7.0" + mkdirp "^0.5.1" + pretty-bytes "^4.0.2" + sw-toolbox "^3.4.0" + update-notifier "^2.3.0" + +sw-toolbox@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5" + dependencies: + path-to-regexp "^1.0.1" + serviceworker-cache-polyfill "^4.0.0" + +symbol-observable@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^0.2.7, tapable@~0.2.5: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar-stream@^1.1.1: + version "1.5.5" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tempfile@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + dependencies: + os-tmpdir "^1.0.0" + uuid "^2.0.1" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^0.6.0, through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + dependencies: + setimmediate "^1.0.4" + +tmp@0.0.31, tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-absolute-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + dependencies: + extend-shallow "^2.0.1" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toposort@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + dependencies: + escape-string-regexp "^1.0.2" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tslib@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + +uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@3.3.x: + version "3.3.16" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.16.tgz#23ba13efa27aa00885be7417819e8a9787f94028" + dependencies: + commander "~2.15.0" + source-map "~0.6.1" + +uglify-js@^2.8.27: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +unfetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-3.0.0.tgz#8d1e0513a4ecd0e5ff2d41a6ba77771aae8b6482" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +upath@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" + +update-notifier@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.4.0.tgz#f9b4c700fbfd4ec12c811587258777d563d8c866" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +urijs@^1.16.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-loader@^0.5.7, url-loader@^0.5.8: + version "0.5.9" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" + dependencies: + querystringify "~1.0.0" + requires-port "~1.0.0" + +url-regex@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" + dependencies: + ip-regex "^1.0.1" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-assign@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" + dependencies: + object-assign "^4.0.1" + readable-stream "^2.0.0" + +vinyl-fs@^2.2.0: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + dependencies: + duplexify "^3.2.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "1.6.0" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + mkdirp "^0.5.0" + object-assign "^4.0.0" + readable-stream "^2.0.4" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + vinyl "^1.0.0" + +vinyl@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +ware@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" + dependencies: + wrap-fn "^0.1.0" + +watchpack@^1.3.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + dependencies: + minimalistic-assert "^1.0.0" + +webpack-chunk-hash@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/webpack-chunk-hash/-/webpack-chunk-hash-0.4.0.tgz#6b40c3070fbc9ff0cfe0fe781c7174af6c7c16a4" + +webpack-dev-middleware@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" + dependencies: + memory-fs "~0.4.1" + mime "^1.5.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-server@^2.2.0, webpack-dev-server@^2.6.1: + version "2.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f" + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + import-local "^1.0.0" + internal-ip "1.2.0" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "1.12.2" + yargs "6.6.0" + +webpack-merge@^2.3.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" + dependencies: + lodash "^4.17.4" + +webpack-plugin-replace@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/webpack-plugin-replace/-/webpack-plugin-replace-1.1.1.tgz#9816647fefc98a7d1700f93f2b4b6f481cf20161" + +webpack-sources@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^2.2.0, webpack@^2.3.3: + version "2.7.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.7.0.tgz#b2a1226804373ffd3d03ea9c6bd525067034f6b1" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^4.7.0" + ajv-keywords "^1.1.1" + async "^2.1.2" + enhanced-resolve "^3.3.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^0.2.16" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^3.1.0" + tapable "~0.2.5" + uglify-js "^2.8.27" + watchpack "^1.3.1" + webpack-sources "^1.0.1" + yargs "^6.0.0" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + +whatwg-fetch@>=0.10.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.0, which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + dependencies: + string-width "^2.1.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-fn@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" + dependencies: + co "3.1.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@6.6.0, yargs@^6.0.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.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.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@^2.2.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f" + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.0.1" From 8ec34069d85471d320977144774167d31f31311e Mon Sep 17 00:00:00 2001 From: btzr-io Date: Thu, 29 Mar 2018 17:26:47 -0700 Subject: [PATCH 02/49] add template from index.html --- ChangeLog => CHANGELOG.md | 0 favicon.ico | Bin 198 -> 0 bytes index.html | 169 - invalid_image.png | Bin 6983 -> 0 bytes package-lock.json | 10465 ------------------------- package.json | 6 +- src/components/comic-button/index.js | 4 +- src/components/comic-menu/index.js | 3 +- src/components/icon/index.js | 8 + src/components/icon/style.less | 1 + src/index.html | 14 + yarn.lock | 10 + 12 files changed, 41 insertions(+), 10639 deletions(-) rename ChangeLog => CHANGELOG.md (100%) delete mode 100644 favicon.ico delete mode 100644 index.html delete mode 100644 invalid_image.png delete mode 100644 package-lock.json create mode 100644 src/components/icon/index.js create mode 100644 src/components/icon/style.less create mode 100644 src/index.html diff --git a/ChangeLog b/CHANGELOG.md similarity index 100% rename from ChangeLog rename to CHANGELOG.md diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index adddd07f9c15899f990fcef1ea23091414e15b15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZQzU<5(|0VXiLfq{WR42U&=SOAC>fEXl?7i{^@@c%yp7(ZZVU;yFgKt4VUQwP(B I*L)%*0r=w`z5oCK diff --git a/index.html b/index.html deleted file mode 100644 index 958f32a..0000000 --- a/index.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Comic Book Reader - - - - - - - - - - - - - - - - - - - - - - -

-
-

Comic Book Reader

-

- A touch friendly HTML5 comic book reader that reads CBR, CBZ, CBT, and PDF files. -

-

- -

- -
-
- - - - diff --git a/invalid_image.png b/invalid_image.png deleted file mode 100644 index 5b2442a4c9a96d30213c0cf88ae585a7adb7b748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6983 zcmds6c{ovnDMFdYMA%Nf(OXe(y&=idOQ{GA zX0aP366Hk3rxZfSl<;`I?Ofj<=Q{s<*LS}2opY{lUDw`guY0ZgUiV(ZZ~fLh zo!*)m3(M)yu$ed2g5E*Fc-OpOZqkqILFu9cwwr7qk+FC)l@JcvyeAYuM0(*taQTV? zC1izdvD?7v7F{f*uNu;A5BCdG4-Vh&cPQ*A`$^mF+W<;i zw%Dw5ifsGZxxGABQ;yi~Mb3HGiVhWAEf44nm6~G8g!7X-jkTUFmAY`@qIE&O0tR#f zBmu)g2#`9^|9Oeh1C9bW{-{K|njmEUWSF@X{FMt)ri7K+_h9+I@(2DWVRSv@F7)l+ z8-g~YR6|u`lL-Ik0hvO)@wkI5h_l>P_UhEydxPF++N`*RHobq_Na)1d_Gob;$^W4e zJ{xRfym!Zgv0E!q*x9ebV98%TrqR}W^~65$$9+#SO-?SKI~v*D>Mp|hbmg)rr+>7j zgkwQ8*gcdX8;K5pO!}q1VAoQ||-==aPe?>%)1OFZ*+ z7qm@BCf&i>rJytYt`zR$SAgm7-|8=on)kpvvQ4ENwgJ7xWdhA+q+pff9^~l&8J)S_kHyG*hN9vT`5(P z_+a|!w!oSm88~GcKEI-nfllZ>oRorx)+&1+>e3o#N22A?9+<2nm<9dcKF^pzQ%gw> z*58%TueBF^&WGl?iE%e>95;mc^wa)Ua4P+I9}+s-JCuSRCbMIn z@ZA25gU-nVB#r3F)nwhl3dnwPscu6OCBYDC0hqMVKQ2KMzLpZD_RtKdWd@J9|b zu!78`$-9e)s3YM2p^n&KOZcMyu)N%rk2$uW)R|_F7D|vEuy2IUon7sJ90pbZgJ`xm z3_D)GUskCaixFvqbxj)pYNIJ=i7VJk3!tlq_Z{#CX@O;427`N5nA;&le%lNF((wMZ zL8lb1j5#6`W!#OeKC`UV8tQ+94ef@R1Ro(10XTOE0Y{eLvG(_3Ci$5Dm%vZKcUnP*^@_eKWN1#y(20r#kkkTLn0YaRv=w)I=G`yIT85$4mEf}m&+BhoR=(02rbXa|$WuyHwYw}(xN!P6uQSc`7f=GxTI8>?mEiZGXf zK2raWA@ht{Ea=jM=*V*!K_iT5LfxhqZ#{%Zilv$eP^lCyf)e$RIJh&^ zzst735XL=ICG;ZZi2<}AllAb2Go_V|ZicoH#@Oh~VE<`|n zMRUiB_DwriWo{fdgD;uuftODeuXgywUlN~6S*lBS4E0n4ZVbZ_0f#|EXc5gnam`in z+Wd2ak)z zf#CStku6W4jSm;SF_S9TZ1D1IZy7vp0r=yH%yDV*865VykjdgUl-XW2O}A%C@(;fq zbAqoL#3$E^HNi#{N-Q%{Bs#u0ML^^F_Pweiyy}*@j)d#$ZEqJZCzQH9VTbMQdkmsc zz9XdtG(+J(nB!5f#tfO$$ehgC+@l-63A)~c%Xgy^3|GL#1bq$6pfHC>2J!U%i2@U4 zxcSH~mQHv)mQo+}`l0qDXeH55k}a6_79-}pf6U)#DuS7=-{yK02c^*iVP~SM&ibxx%`3lVmn2+=&_;&x+FmN~2V*37UlL!d1skM|M4SLv;8Q6d- z)j#9#pr2ld2#wNO*rrrpE<(t)fAYqBR$YR-TD(>Uxv1R}dPTiDS>&QNPq?uSO|}Z* zr~SrOA(hZe!1sQ8SDMhcM=6`9N1!0O(T{7;c10V{A)@@4+{r*g=<(iZ5kVVuBN1ti zYGNU2*e+I+@OUGoZj`Ew`sc?LV3~NYJw#b4iIAg(;%Sv|H( zAa-r$fS9q_xK7f1a@NtBvkevr9)gyjcgg`_QRyghZL~G~^C;GT!|Q+}^uMBh+^^`t z*rq@0qklAS43mdjeQEgxcVuFom%X{@)Po|Vb zyToFa7MBBoNfB6z1*>?v$i# zg{K$g-nlr5x$qi4LD#bJ~~e5q&^>ThaJim!47pZTIx(~>gO-eb)eC3d1w8qBArakW$49& z$@{JLV0btuKeBE>i_1vf<{DT!OyeGGw!iMa+W|FcNHZJdUUO`bXLCbL?M^ud za<9q58i(23Jme?^Z66i=D6}(r-Pv?6k}YKAzt)3AO+FW|^!AR$D}8eax!5*!qBxS- zE`h(N;cfDt*5Fo zEXTDqksNF~Y^R10w{NaXj?Aek(uIc-1FDbO;x1ngT-}oV+T9vvENNX{ZZtWp|9w&Q zd|wx9QuPldvvalD6p<@908u5rZ)Ei4@!85XR{Mr*d)LKS|9o5{BOL}x?j(UvXZjj% zcB%-kePcTtBh*PY(|OqG4{`x`Y3TZ zsxc*oEo!Yyb6no>Htpz^Hahv@&V(@R*tg+A^w~>gxog9>24=MovLJU1k$K6uc$<>D zAw6X>+>mzxvb%=Z7Ct`_9`wM0v&YN&#`{akbii>H3><_u@^*j`@y$3V0?sL3yccOa zn;A8Hxk3!3RwtU$@K* z*q5Vw8hyG^cDFWI0wyoPjuIt`K}Vy_{0|%5ESe^hIlQ$)UbGkPuM$prnGvFP!Lw{yQ6{>gVrdsv5%)$@Q>MSPyY|BCYV4caS`il-+6VDbhe zt;PDI6&nFK$If@nYK_b}zuU`JpWF}|ZaS`vnNUkUp$*$I|5#h_n?_4%3}iQ)>NyNG zSwL~SNOK~@lo+~ygeuo6hP#S#JOyp9Als{gNzTIxXrXDs72xnHuFLC$pj2V5JI1BB zCHSHv~dLi`qK?@({40 zmbJ9{tsn|mpbaXNYh-h#JDn#^<-pT~MHB&n8*z3jFpipUL0cNtV7FLn07|te|HGhm zgUe!*Ge0UW00h;pkffTezugU{So$7ft-_p{*Uu?7C7X*=a&F)ec|qiANI{yeQ0gNq zM9H$@lck?N|E(X0()#CjVgL&Kr@;c&Wn?0Tzn8)hMV+N%wH6b6c%Va=DUxeW1H6HI z)vk1M3l-_?PENZJ#uKsCEn~ttmgA~%TPuQ1DuN5(G$43!Tsl0^&PN3TryxaY_)Fty z(-Tx(KG*c#v*XbAQ(yunYWRBvswPo9OQ`T~4m~h{TWWgg->LG|_Sy!p zNjM{GrI0$Me@yw&QH}0_(VI#<+4<;bYt`m8hxdc_Y}UDx+4Y80RqdA?WFMdEz{)sGojr z+C9FpDRCr_#`(1F!?#~0_7ArF-bPs^kGlk6FOJ>cETVFz{x7!rgASh557IH5Z3l%& zN0Fr6hlQf`VCR%PAsl#H5Stic-5Nc2A+WWNt^yMh?u%)SQOP!A(#p%P2$C6+E?EcB zF>{;h`TM30R(%t3`h-SUarWy!s;mtJUzTUgJ1~Q6>{I4UA{PHT_qL=cN05b7;=d`G zo;MSJM!qe%o+G%ARQP>$t&Xu4(lzcmcg*KrGaCi(1s@*G&9&am3C#5pbR+W{MsZ{k zQr)vJw_(1ImKZ187-AUV8AnwpX#7HqR9G}x}kF@^35B| zVAL9thh9__pB7Yd7`*Lz!#Q&=P2f92a=!C2jYvR={MAPpykLkmy{%nUFHBgVW3w(V zItu{K(5Cr0O9J!}=rhRjf-we9i^7o+W)O@XrjYZ<0!*!;CT;~<03e*f>jY}MDaHc| z23J4>flBVE_EX=D+Qrzjy$| z68JZ9MV-2Tp#RnR_rJD@08UbO8voFK|NE^0DGC23u22l + > {props.icon && } { props.children.length > 0 && props.children[0] } ); diff --git a/src/components/comic-menu/index.js b/src/components/comic-menu/index.js index 303126b..c940ef4 100644 --- a/src/components/comic-menu/index.js +++ b/src/components/comic-menu/index.js @@ -11,6 +11,7 @@ import ComicSettings from '../comic-settings'; import ComicLibrary from '../comic-library'; import ComicButton from '../comic-button'; + //Test data for ComicLibrary ( remove this ) const TestData = { items: [ @@ -55,7 +56,7 @@ export default class ComicMenu extends Component {
- Open comic file + Library Full Screen Settings diff --git a/src/components/icon/index.js b/src/components/icon/index.js new file mode 100644 index 0000000..938a083 --- /dev/null +++ b/src/components/icon/index.js @@ -0,0 +1,8 @@ +import style from './style'; + + +const Icon = ({name}) => ( + +); + +export default Icon; diff --git a/src/components/icon/style.less b/src/components/icon/style.less new file mode 100644 index 0000000..a3a6ca8 --- /dev/null +++ b/src/components/icon/style.less @@ -0,0 +1 @@ +.icon {} diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..8a6838e --- /dev/null +++ b/src/index.html @@ -0,0 +1,14 @@ + + + + + + Comic Book Reader + + + + +
+ + + diff --git a/yarn.lock b/yarn.lock index 8a15478..734807f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,16 @@ # yarn lockfile v1 +"@fortawesome/fontawesome-common-types@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.3.tgz#8475e0f2d1ad1f858c4ec2e76ed9a2456a09ad83" + +"@fortawesome/fontawesome@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome/-/fontawesome-1.1.5.tgz#c7cfafdd3364245626293cc670357f9fb8487170" + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.3" + "@types/configstore@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" From b6afbd4801d5718a9f6a68b0c6b4590f7e4bcfa1 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 12:28:03 -0700 Subject: [PATCH 03/49] implement basic redesign --- src/components/app.js | 2 + .../{comic-button => button}/index.js | 4 +- .../{comic-button => button}/style.less | 11 ++- src/components/comic-menu/style.less | 56 -------------- src/components/icon/index.js | 4 +- src/components/icon/style.less | 5 +- src/components/{comic-menu => menu}/index.js | 65 ++++++++-------- src/components/menu/style.less | 77 +++++++++++++++++++ src/index.html | 3 + src/routes/show-comics/index.js | 3 - src/routes/welcome/index.js | 10 +-- src/routes/welcome/style.less | 14 ++-- src/style/index.less | 7 +- 13 files changed, 151 insertions(+), 110 deletions(-) rename src/components/{comic-button => button}/index.js (84%) rename src/components/{comic-button => button}/style.less (50%) delete mode 100644 src/components/comic-menu/style.less rename src/components/{comic-menu => menu}/index.js (54%) create mode 100644 src/components/menu/style.less diff --git a/src/components/app.js b/src/components/app.js index f5792de..e2b9bc3 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,6 +3,7 @@ import { Router } from 'preact-router'; import Welcome from '../routes/welcome'; import ShowComics from '../routes/show-comics'; +import Menu from './menu'; export default class App extends Component { handleRoute = e => { @@ -12,6 +13,7 @@ export default class App extends Component { render() { return (
+ diff --git a/src/components/comic-button/index.js b/src/components/button/index.js similarity index 84% rename from src/components/comic-button/index.js rename to src/components/button/index.js index 06fda57..3c670d6 100644 --- a/src/components/comic-button/index.js +++ b/src/components/button/index.js @@ -4,7 +4,7 @@ import style from './style'; import Icon from '../../components/icon' -export default class ComicButton extends Component { +export default class Button extends Component { state = { }; @@ -23,7 +23,7 @@ export default class ComicButton extends Component { ); diff --git a/src/components/comic-button/style.less b/src/components/button/style.less similarity index 50% rename from src/components/comic-button/style.less rename to src/components/button/style.less index f3948f8..bb91596 100644 --- a/src/components/comic-button/style.less +++ b/src/components/button/style.less @@ -1,13 +1,16 @@ @import '~style/helpers'; .comic_button { - background-color: #7d5fff; - color: black; + border: 0; appearance: none; - padding: 0 5%; + padding: 1vmin 5vmin; margin: 5% 0; cursor: pointer; - border-radius: 100px; word-wrap: break-word; + border-radius: 32px; + background: #5352ed; + color: inherit; + font-weight: bold; + font-family: inherit; } diff --git a/src/components/comic-menu/style.less b/src/components/comic-menu/style.less deleted file mode 100644 index 99cfcf9..0000000 --- a/src/components/comic-menu/style.less +++ /dev/null @@ -1,56 +0,0 @@ -@import '~style/helpers'; - -.comic_menu { - box-sizing: border-box; - opacity: 0.9; - position: fixed; - width: 100%; - top: 0px; - z-index: 1000; - margin: 0px; - padding: 0px; - text-align: center; - color: white; -} - -.comic_menu #topMenuPanel { - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #61AFEF; - border-top: 0px; - margin: 0px; - padding: 0px; - background-color: rgba(0, 0, 0, 0.6); - text-align: center; -} - -.comic_menu #topMenuButtons { - box-sizing: border-box; - overflow: hidden; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; -} - -@media (min-width: 1px) and (max-width: 379px) { - .comic_menu #topMenuButtons button { - width: 100%; - height: 40px; - font-size: 18px; - } -} -@media (min-width: 380px) and (max-width: 900px) { - .comic_menu #topMenuButtons button { - width: 20%; - font-size: 5vw; - } -} -@media (min-width: 901px) { - .comic_menu #topMenuButtons button { - width: 18%; - height: 180px; - font-size: 46px; - margin: 1%; - } -} diff --git a/src/components/icon/index.js b/src/components/icon/index.js index 938a083..d5d6168 100644 --- a/src/components/icon/index.js +++ b/src/components/icon/index.js @@ -1,8 +1,8 @@ import style from './style'; - +console.log(style.icon); const Icon = ({name}) => ( - + ); export default Icon; diff --git a/src/components/icon/style.less b/src/components/icon/style.less index a3a6ca8..6c87c75 100644 --- a/src/components/icon/style.less +++ b/src/components/icon/style.less @@ -1 +1,4 @@ -.icon {} +.icon { + padding: 0; + margin: 0; +} diff --git a/src/components/comic-menu/index.js b/src/components/menu/index.js similarity index 54% rename from src/components/comic-menu/index.js rename to src/components/menu/index.js index c940ef4..231e0a5 100644 --- a/src/components/comic-menu/index.js +++ b/src/components/menu/index.js @@ -6,10 +6,30 @@ import reduce from '../../reducers'; import style from './style'; import * as actions from '../../actions'; import { toggleFullScreen } from '../../lib/utility'; +import Icon from '../../components/icon' + + +const Item = ({label, icon, onClick}) => { + const action = (event) => onClick && onClick(event); + return ( +
+ {icon && } + {label} +
+ ); +}; + +// Internal button +const Button = ({label, icon, onClick}) => { + const action = (event) => onClick && onClick(event); + return ( + + ); +}; -import ComicSettings from '../comic-settings'; -import ComicLibrary from '../comic-library'; -import ComicButton from '../comic-button'; //Test data for ComicLibrary ( remove this ) @@ -24,7 +44,7 @@ const TestData = { } @connect(reduce, bindActions(actions)) -export default class ComicMenu extends Component { +export default class Menu extends Component { state = { is_showing_settings: false, is_showing_library: false @@ -33,7 +53,7 @@ export default class ComicMenu extends Component { onBtnFullScreen = () => { toggleFullScreen(); } - + /* onbtnOpenFile = () => { alert("FIXME: onbtnOpenFile"); this.setState({ text: 'ADD_COMIC' }); @@ -50,34 +70,19 @@ export default class ComicMenu extends Component { this.setState({ is_showing_settings: false }); } + +
Copyright © 2017 Matthew Brennan Jones diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index 5caca65..f614ebb 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -2,25 +2,27 @@ .welcome { position: absolute; - top: 0px; + top: 45px; bottom: 0px; left: 5%; right: 5%; text-align: center; + display: flex; justify-content: center; align-items: center; + flex-direction: column; color: white; - font-size: 5vmin; - line-height: 8vmin; + font-size: 3.5vmin; + line-height: 1.25em; } .welcome p { - margin: 0 15%; + margin: 5% 25%; + opacity: 0.65; } .welcome button { - font-size: 7vmin; - line-height: 10vmin; + font-size: 5vmin; } .welcome footer { diff --git a/src/style/index.less b/src/style/index.less index f5fe9cf..3da1d49 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -20,7 +20,12 @@ body { min-height: 100%; margin: 0; padding: 0; - background: black; + background: #2f3640; + font-size: 1em; +} + +a { + color: #487eb0; } /* Make scroll bars small and blue on Chrome */ From 5cc6f46bf37fa3f362af548de888ffbfe12371d9 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 13:05:51 -0700 Subject: [PATCH 04/49] add css vars --- src/components/button/style.less | 2 +- src/routes/welcome/style.less | 15 +++++++++++---- src/style/index.less | 4 +++- src/style/vars.less | 6 ++++++ 4 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 src/style/vars.less diff --git a/src/components/button/style.less b/src/components/button/style.less index bb91596..62fedf7 100644 --- a/src/components/button/style.less +++ b/src/components/button/style.less @@ -9,7 +9,7 @@ cursor: pointer; word-wrap: break-word; border-radius: 32px; - background: #5352ed; + background: var(--main-color); color: inherit; font-weight: bold; font-family: inherit; diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index f614ebb..873e61e 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -12,12 +12,11 @@ align-items: center; flex-direction: column; color: white; - font-size: 3.5vmin; - line-height: 1.25em; + font-size: 1.25em; } .welcome p { - margin: 5% 25%; + margin: 25px; opacity: 0.65; } @@ -26,10 +25,17 @@ } .welcome footer { - font-size: 4vmin; + font-size: 1em; line-height: 10vmin; + position: absolute; + bottom: 0; + width: 100%; + left: 0; + right: 0; + margin: auto; } +/* @media (max-width: 379px) { .welcome { font-size: 14px; @@ -43,3 +49,4 @@ font-size: 14px; } } +*/ diff --git a/src/style/index.less b/src/style/index.less index 3da1d49..d0f3351 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -1,4 +1,5 @@ @import 'helpers'; +@import 'vars'; *, *::before, *::after { box-sizing: border-box; @@ -16,11 +17,12 @@ html { } body { + background: var(--bg-color); + color: var(--text-color); overflow: hidden; min-height: 100%; margin: 0; padding: 0; - background: #2f3640; font-size: 1em; } diff --git a/src/style/vars.less b/src/style/vars.less new file mode 100644 index 0000000..5db0cd1 --- /dev/null +++ b/src/style/vars.less @@ -0,0 +1,6 @@ +/* Css vars */ +:root { + --main-color: #5352ED; + --bg-color: #2F3542; + --text-color: white; +} From 6ac8c790180d9fdf44a299d60ab1130bbcb91eeb Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 15:09:45 -0700 Subject: [PATCH 05/49] add file route / update styles --- src/components/app.js | 4 +- src/components/button/index.js | 5 ++- src/components/button/style.less | 19 ++++++++-- src/components/menu/index.js | 4 +- src/components/menu/style.less | 10 +++-- src/routes/file/index.js | 39 +++++++++++++++++++ src/routes/file/style.less | 64 ++++++++++++++++++++++++++++++++ src/routes/welcome/index.js | 2 +- src/routes/welcome/style.less | 5 ++- src/style/index.less | 2 +- src/style/vars.less | 2 +- 11 files changed, 138 insertions(+), 18 deletions(-) create mode 100644 src/routes/file/index.js create mode 100644 src/routes/file/style.less diff --git a/src/components/app.js b/src/components/app.js index e2b9bc3..016726f 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -2,7 +2,7 @@ import { h, Component } from 'preact'; import { Router } from 'preact-router'; import Welcome from '../routes/welcome'; -import ShowComics from '../routes/show-comics'; +import File from '../routes/file'; import Menu from './menu'; export default class App extends Component { @@ -16,7 +16,7 @@ export default class App extends Component { - +
); diff --git a/src/components/button/index.js b/src/components/button/index.js index 3c670d6..af8ed03 100644 --- a/src/components/button/index.js +++ b/src/components/button/index.js @@ -18,10 +18,11 @@ export default class Button extends Component { } render() { - let { props, state } = this; + const { props, state } = this; + const type = props.type ? style[props.type] : ''; return ( ); }; @@ -81,7 +81,7 @@ export default class Menu extends Component { return ( ); } diff --git a/src/components/menu/style.less b/src/components/menu/style.less index 3852ebb..b60bd4d 100644 --- a/src/components/menu/style.less +++ b/src/components/menu/style.less @@ -2,7 +2,7 @@ .comic_menu { background: transparent; - border-bottom: 1px dashed #57606f; + border-bottom: 0px solid #57606f; color: white; box-sizing: border-box; opacity: 0.9; @@ -12,15 +12,17 @@ justify-content: space-between; align-items: center; font-size: 1.5em; - height: 45px; - padding: 0 16px; + height: 64px; + padding: 0 32px; } .item, .button { padding: 0; margin: 0; - display: block; + display: flex; + justify-content: space-around; + align-items: center; } .item { diff --git a/src/routes/file/index.js b/src/routes/file/index.js new file mode 100644 index 0000000..3dc7d38 --- /dev/null +++ b/src/routes/file/index.js @@ -0,0 +1,39 @@ +import { h, Component } from 'preact'; +import style from './style'; + +import { route } from 'preact-router'; +import Icon from '../../components/icon'; +import Button from '../../components/button'; + +export default class File extends Component { + state = { + }; + + showApp(e) { + route('/show'); + } + + // gets called when this route is navigated to + componentDidMount() { + } + + // gets called just before navigating away from the route + componentWillUnmount() { + } + + render() { + return ( +
+

+ +

+

+ Choose a file or drop it here. +

+ + + +
+ ); + } +} diff --git a/src/routes/file/style.less b/src/routes/file/style.less new file mode 100644 index 0000000..abc05d9 --- /dev/null +++ b/src/routes/file/style.less @@ -0,0 +1,64 @@ +@import '~style/helpers'; + +.welcome { + position: absolute; + top: 45px; + bottom: 0px; + left: 5%; + right: 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: white; + font-size: 1.25em; +} + +.welcome p { + margin: 25px; + opacity: 0.5; +} + +.welcome i { +} + +.welcome:hover i { + display: block; + transform: translateY(0px); + /* + animation-name: drop; + animation-duration: 0.35s; + animation-fill-mode: both; + animation-timing-function: ease; + animation-iteration-count: infinite; + animation-direction: alternate; + */ +} + +.welcome button { + width: 100%; +} + + +.welcome footer { + font-size: 0.85em; + position: absolute; + bottom: 0; + width: 100%; + left: 0; + right: 0; + margin: auto; +} + +@keyframes drop { + from { + opacity: 0.5; + transform: translateY(0px); + } + to { + opacity: 1; + transform: translateY(25px); + + } +} diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index 709e1e1..f919d0b 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -9,7 +9,7 @@ export default class Welcome extends Component { }; showApp(e) { - route('/show'); + route('/file'); } // gets called when this route is navigated to diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index 873e61e..d84f826 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -18,14 +18,15 @@ .welcome p { margin: 25px; opacity: 0.65; + line-height: 1.5; } .welcome button { - font-size: 5vmin; + width: 100%; } .welcome footer { - font-size: 1em; + font-size: 0.95em; line-height: 10vmin; position: absolute; bottom: 0; diff --git a/src/style/index.less b/src/style/index.less index d0f3351..96486e7 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -27,7 +27,7 @@ body { } a { - color: #487eb0; + color: var(--main-color); } /* Make scroll bars small and blue on Chrome */ diff --git a/src/style/vars.less b/src/style/vars.less index 5db0cd1..9886aa6 100644 --- a/src/style/vars.less +++ b/src/style/vars.less @@ -1,6 +1,6 @@ /* Css vars */ :root { - --main-color: #5352ED; + --main-color: #1976D2; --bg-color: #2F3542; --text-color: white; } From e95dec19851cd0ddd1b4c74b44e6221a0f49bd43 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 16:03:13 -0700 Subject: [PATCH 06/49] fix file input --- src/components/button/index.js | 1 + src/routes/file/index.js | 35 +++++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/components/button/index.js b/src/components/button/index.js index af8ed03..2f356da 100644 --- a/src/components/button/index.js +++ b/src/components/button/index.js @@ -14,6 +14,7 @@ export default class Button extends Component { }; componentDidMount() { + //console.log(this.props.text); } diff --git a/src/routes/file/index.js b/src/routes/file/index.js index 3dc7d38..a2ded04 100644 --- a/src/routes/file/index.js +++ b/src/routes/file/index.js @@ -5,12 +5,37 @@ import { route } from 'preact-router'; import Icon from '../../components/icon'; import Button from '../../components/button'; + +const FileInput = ({filters, ref, onChange}) => ( + onChange(event.target.files[0])} + /> + ); + export default class File extends Component { state = { + file: null, }; - showApp(e) { - route('/show'); + constructor(props) { + super(props); + this.filters = ['.pdf', '.cbr', '.cbt', '.cbz']; + } + + OpenLibrary() { + route('/library'); + } + + handleFile(file) { + this.setState({file: file}); + } + + ChooseFile() { + // Open file dialog + console.log(this.fileInput); + this.fileInput.base.click(); } // gets called when this route is navigated to @@ -30,9 +55,9 @@ export default class File extends Component {

Choose a file or drop it here.

- - - + this.fileInput = c} filters={this.filters} onChange={this.handleFile}/> + +
); } From 274483b829a1fe5fa487c395106c61dc675846e1 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 16:16:55 -0700 Subject: [PATCH 07/49] minor fixes --- src/routes/file/index.js | 6 +++--- src/routes/file/style.less | 12 ++++++------ src/routes/welcome/index.js | 2 +- src/routes/welcome/style.less | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/routes/file/index.js b/src/routes/file/index.js index a2ded04..4f7be5a 100644 --- a/src/routes/file/index.js +++ b/src/routes/file/index.js @@ -6,8 +6,8 @@ import Icon from '../../components/icon'; import Button from '../../components/button'; -const FileInput = ({filters, ref, onChange}) => ( - ( + onChange(event.target.files[0])} @@ -48,7 +48,7 @@ export default class File extends Component { render() { return ( -
+

diff --git a/src/routes/file/style.less b/src/routes/file/style.less index abc05d9..764e413 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -1,6 +1,6 @@ @import '~style/helpers'; -.welcome { +.view { position: absolute; top: 45px; bottom: 0px; @@ -15,15 +15,15 @@ font-size: 1.25em; } -.welcome p { +.view p { margin: 25px; opacity: 0.5; } -.welcome i { +.view i { } -.welcome:hover i { +.view:hover i { display: block; transform: translateY(0px); /* @@ -36,12 +36,12 @@ */ } -.welcome button { +.view button { width: 100%; } -.welcome footer { +.view footer { font-size: 0.85em; position: absolute; bottom: 0; diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index f919d0b..d769b00 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -22,7 +22,7 @@ export default class Welcome extends Component { render() { return ( -
+

Comic Book Reader

A touch friendly HTML5 comic book reader that reads
CBR, CBZ, CBT, and PDF files. diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index d84f826..9bbb6c8 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -1,6 +1,6 @@ @import '~style/helpers'; -.welcome { +.view { position: absolute; top: 45px; bottom: 0px; @@ -15,17 +15,17 @@ font-size: 1.25em; } -.welcome p { +.view p { margin: 25px; - opacity: 0.65; + opacity: 0.5; line-height: 1.5; } -.welcome button { +.view button { width: 100%; } -.welcome footer { +.view footer { font-size: 0.95em; line-height: 10vmin; position: absolute; From a452eb47afa85b5ee949ca4ca08d8ea2d510c39e Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 17:21:04 -0700 Subject: [PATCH 08/49] add drag-drop support for files --- src/routes/file/index.js | 27 ++++++++++++++++++++++++--- src/routes/file/style.less | 17 +++++++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/routes/file/index.js b/src/routes/file/index.js index 4f7be5a..5e03b2b 100644 --- a/src/routes/file/index.js +++ b/src/routes/file/index.js @@ -17,6 +17,7 @@ const FileInput = ({filters, onChange}) => ( export default class File extends Component { state = { file: null, + drag: false }; constructor(props) { @@ -38,6 +39,22 @@ export default class File extends Component { this.fileInput.base.click(); } + handleDrop(event) { + event.preventDefault(); + const { files } = event.dataTransfer; + const file = files ? files[0] : null; + this.setState({file, drag: false}); + } + + handleDragOver(event) { + event.preventDefault(); + this.setState({ drag: true}); + } + handleDragLeave() { + this.setState({drag: false}); + } + + // gets called when this route is navigated to componentDidMount() { } @@ -47,8 +64,10 @@ export default class File extends Component { } render() { + const drag = this.state.drag ? style.drag : ""; + return ( -

+

@@ -56,8 +75,10 @@ export default class File extends Component { Choose a file or drop it here.

this.fileInput = c} filters={this.filters} onChange={this.handleFile}/> - - +
+ + +
); } diff --git a/src/routes/file/style.less b/src/routes/file/style.less index 764e413..69810ae 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -20,20 +20,29 @@ opacity: 0.5; } -.view i { +.view h1 i { + opacity: 0.5; +} +.drag p { + opacity: 1; +} + +.drag .actions { + opacity: 0.25; + pointer-events: none; } -.view:hover i { + + +.drag h1 i { display: block; transform: translateY(0px); - /* animation-name: drop; animation-duration: 0.35s; animation-fill-mode: both; animation-timing-function: ease; animation-iteration-count: infinite; animation-direction: alternate; - */ } .view button { From 90a1f968ff5817f0892cac2bb175636dccbdcbd5 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 17:26:15 -0700 Subject: [PATCH 09/49] fix drop zone --- src/index.html | 12 +++++++++++- src/routes/file/style.less | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/index.html b/src/index.html index 78b8e37..e33bf3e 100644 --- a/src/index.html +++ b/src/index.html @@ -9,9 +9,19 @@
- + diff --git a/src/routes/file/style.less b/src/routes/file/style.less index 69810ae..dbf7157 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -4,8 +4,8 @@ position: absolute; top: 45px; bottom: 0px; - left: 5%; - right: 5%; + left: 0; + right: 0; text-align: center; display: flex; justify-content: center; From 73989494c9819e1e615ff55b44d969db1cbadf74 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 17:49:06 -0700 Subject: [PATCH 10/49] add library route --- src/components/app.js | 3 ++ src/components/comic-library/style.less | 22 -------------- src/routes/file/index.js | 10 +++---- .../comic-library => routes/library}/index.js | 8 ++--- src/routes/library/style.less | 29 +++++++++++++++++++ src/routes/show-comics/index.js | 23 --------------- src/routes/show-comics/style.less | 7 ----- 7 files changed, 41 insertions(+), 61 deletions(-) delete mode 100644 src/components/comic-library/style.less rename src/{components/comic-library => routes/library}/index.js (79%) create mode 100644 src/routes/library/style.less delete mode 100644 src/routes/show-comics/index.js delete mode 100644 src/routes/show-comics/style.less diff --git a/src/components/app.js b/src/components/app.js index 016726f..e83ae76 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,6 +3,8 @@ import { Router } from 'preact-router'; import Welcome from '../routes/welcome'; import File from '../routes/file'; +import Library from '../routes/library'; + import Menu from './menu'; export default class App extends Component { @@ -17,6 +19,7 @@ export default class App extends Component { +
); diff --git a/src/components/comic-library/style.less b/src/components/comic-library/style.less deleted file mode 100644 index 8a228f9..0000000 --- a/src/components/comic-library/style.less +++ /dev/null @@ -1,22 +0,0 @@ -@import '~style/helpers'; - -.library { - height: 400px; - overflow: hidden; - overflow-y: scroll; - clear: both; - border: 1px solid #ABB2BF; -} - -.library .item { - display: inline-block; - margin: 10px; - float: left; -} - -.library .item img { - border: 1px solid #ABB2BF; - height: auto; - width: 8vw; - min-width: 100px; -} diff --git a/src/routes/file/index.js b/src/routes/file/index.js index 5e03b2b..2ea1aa3 100644 --- a/src/routes/file/index.js +++ b/src/routes/file/index.js @@ -25,15 +25,15 @@ export default class File extends Component { this.filters = ['.pdf', '.cbr', '.cbt', '.cbz']; } - OpenLibrary() { + openLibrary() { route('/library'); } handleFile(file) { - this.setState({file: file}); + file && this.setState({file}); } - ChooseFile() { + openFile() { // Open file dialog console.log(this.fileInput); this.fileInput.base.click(); @@ -76,8 +76,8 @@ export default class File extends Component {

this.fileInput = c} filters={this.filters} onChange={this.handleFile}/>
- - + +
); diff --git a/src/components/comic-library/index.js b/src/routes/library/index.js similarity index 79% rename from src/components/comic-library/index.js rename to src/routes/library/index.js index a9b6c56..2795073 100644 --- a/src/components/comic-library/index.js +++ b/src/routes/library/index.js @@ -39,17 +39,17 @@ class Item extends Component { } } -export default class ComicLibrary extends Component { +export default class Library extends Component { static defaultProps = { items: [] } render() { - let { props, state } = this; + const {items} = this.props; return ( -
- { props.items.map((i, k) => ) } +
+ { items && items.length ? items.map((i, k) => ) :

Empty

}
); } diff --git a/src/routes/library/style.less b/src/routes/library/style.less new file mode 100644 index 0000000..54b5fad --- /dev/null +++ b/src/routes/library/style.less @@ -0,0 +1,29 @@ +@import '~style/helpers'; + +.view { + position: absolute; + top: 45px; + bottom: 0px; + left: 5%; + right: 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: white; + font-size: 1.25em; +} + +.view .item { + display: inline-block; + margin: 10px; + float: left; +} + +.view .item img { + border: 1px solid #ABB2BF; + height: auto; + width: 8vw; + min-width: 100px; +} diff --git a/src/routes/show-comics/index.js b/src/routes/show-comics/index.js deleted file mode 100644 index a5404c6..0000000 --- a/src/routes/show-comics/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import { h, Component } from 'preact'; -import style from './style'; - -export default class ShowComics extends Component { - state = { - }; - - // gets called when this route is navigated to - componentDidMount() { - } - - // gets called just before navigating away from the route - componentWillUnmount() { - } - - - render() { - return ( -
-
- ); - } -} diff --git a/src/routes/show-comics/style.less b/src/routes/show-comics/style.less deleted file mode 100644 index 97d139f..0000000 --- a/src/routes/show-comics/style.less +++ /dev/null @@ -1,7 +0,0 @@ -@import '~style/helpers'; - -.show_comics { - -} - - From 05f36d2cd2cd1307fae952d64f228cf7105c0505 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 21:34:28 -0700 Subject: [PATCH 11/49] add emptyState component --- src/components/button/style.less | 6 ++-- src/components/empty-state/index.js | 35 +++++++++++++++++++++++ src/components/empty-state/style.less | 40 +++++++++++++++++++++++++++ src/components/menu/index.js | 8 +++--- src/components/menu/style.less | 6 ++++ src/routes/file/style.less | 8 ++++-- src/routes/library/index.js | 16 +++++++++-- src/routes/library/style.less | 9 ++++-- src/routes/welcome/style.less | 7 ++--- src/style/vars.less | 1 + 10 files changed, 118 insertions(+), 18 deletions(-) create mode 100644 src/components/empty-state/index.js create mode 100644 src/components/empty-state/style.less diff --git a/src/components/button/style.less b/src/components/button/style.less index 181b2bf..a487efc 100644 --- a/src/components/button/style.less +++ b/src/components/button/style.less @@ -5,7 +5,7 @@ border: 0; appearance: none; padding: 16px; - margin: 8px; + margin: 16px; cursor: pointer; word-wrap: break-word; background: var(--main-color); @@ -14,9 +14,7 @@ font-family: inherit; font-size: 1em; max-width: 250px; - display: flex; - align-items: center; - justify-content: center; + } .comic_button i { diff --git a/src/components/empty-state/index.js b/src/components/empty-state/index.js new file mode 100644 index 0000000..16b46a0 --- /dev/null +++ b/src/components/empty-state/index.js @@ -0,0 +1,35 @@ +import { h, Component } from 'preact'; +import style from './style'; + +import Icon from '../../components/icon' + +export default class EmptyState extends Component { + state = { + }; + + handleMouseUp = (event) => { + //console.log(this.props.children[0]); + this.props.onClick && this.props.onClick(event); + }; + + componentDidMount() { + + //console.log(this.props.text); + } + + render() { + const { props, state } = this; + const Message = props.message; + const type = props.type ? style[props.type] : ''; + + return ( +
+

+ +
{props.title}
+

+

{Message && }

+
+
); + } +} diff --git a/src/components/empty-state/style.less b/src/components/empty-state/style.less new file mode 100644 index 0000000..4d600a4 --- /dev/null +++ b/src/components/empty-state/style.less @@ -0,0 +1,40 @@ +@import '~style/helpers'; + +.view { + position: absolute; + top: 45px; + bottom: 0px; + left: 0; + right: 0; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: white; + font-size: 1em; +} + +.view p { + margin: 32px; + color: var(--text-message-color); +} + +.view .title { + font-size: 1.25em; +} + +.view h1 i { + display: block; + margin: 32px; + font-size: 2.5em; + color: var(--text-message-color); + opacity: 0.5; +} + +.actions {} + + +.view button { + width: 100%; +} diff --git a/src/components/menu/index.js b/src/components/menu/index.js index a2d1a07..b1a5948 100644 --- a/src/components/menu/index.js +++ b/src/components/menu/index.js @@ -1,5 +1,5 @@ import { h, Component } from 'preact'; -//import { Link } from 'preact-router/match'; +import { Link } from 'preact-router'; import { connect } from 'preact-redux'; import { bindActions } from '../../util'; import reduce from '../../reducers'; @@ -9,12 +9,12 @@ import { toggleFullScreen } from '../../lib/utility'; import Icon from '../../components/icon' -const Item = ({label, icon, onClick}) => { +const Item = ({label, icon, href, onClick}) => { const action = (event) => onClick && onClick(event); return (
{icon && } - {label} + {label}
); }; @@ -80,7 +80,7 @@ export default class Menu extends Component { let { props, state } = this; return ( ); diff --git a/src/components/menu/style.less b/src/components/menu/style.less index b60bd4d..0d0e920 100644 --- a/src/components/menu/style.less +++ b/src/components/menu/style.less @@ -29,6 +29,12 @@ font-weight: bold; } +.item a { + color: inherit; + display: inline-block; + text-decoration: none; +} + .button { color: black; diff --git a/src/routes/file/style.less b/src/routes/file/style.less index dbf7157..1776acc 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -17,14 +17,16 @@ .view p { margin: 25px; - opacity: 0.5; + color: var(--text-message-color); } .view h1 i { + color: var(--text-message-color); opacity: 0.5; } + .drag p { - opacity: 1; + color: var(--text-color); } .drag .actions { @@ -33,6 +35,8 @@ } +.actions {} + .drag h1 i { display: block; diff --git a/src/routes/library/index.js b/src/routes/library/index.js index 2795073..e205881 100644 --- a/src/routes/library/index.js +++ b/src/routes/library/index.js @@ -1,4 +1,6 @@ import { h, Component } from 'preact'; +import { Link } from 'preact-router'; +import EmptyState from '../../components/empty-state'; import style from './style'; class Item extends Component { @@ -44,12 +46,22 @@ export default class Library extends Component { static defaultProps = { items: [] } - render() { const {items} = this.props; + + const EmptyMessage = (props) => ( +

Your library is empty, try to add some files first.

+ ); + return (
- { items && items.length ? items.map((i, k) => ) :

Empty

} + { items && items.length ? + items.map((i, k) => ) : + + }
); } diff --git a/src/routes/library/style.less b/src/routes/library/style.less index 54b5fad..c9c9a05 100644 --- a/src/routes/library/style.less +++ b/src/routes/library/style.less @@ -4,8 +4,8 @@ position: absolute; top: 45px; bottom: 0px; - left: 5%; - right: 5%; + left: 0; + right: 0; text-align: center; display: flex; justify-content: center; @@ -15,6 +15,11 @@ font-size: 1.25em; } +.view h1 i { + color: var(--text-message-color); + opacity: 0.5; +} + .view .item { display: inline-block; margin: 10px; diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index 9bbb6c8..0353911 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -4,8 +4,8 @@ position: absolute; top: 45px; bottom: 0px; - left: 5%; - right: 5%; + left: 0; + right: 0; text-align: center; display: flex; justify-content: center; @@ -17,8 +17,7 @@ .view p { margin: 25px; - opacity: 0.5; - line-height: 1.5; + color: var(--text-message-color); } .view button { diff --git a/src/style/vars.less b/src/style/vars.less index 9886aa6..4f8e0ea 100644 --- a/src/style/vars.less +++ b/src/style/vars.less @@ -3,4 +3,5 @@ --main-color: #1976D2; --bg-color: #2F3542; --text-color: white; + --text-message-color: #a4b0be; } From 970c4b931db495a1624826397d774a4130c19cef Mon Sep 17 00:00:00 2001 From: btzr-io Date: Fri, 30 Mar 2018 22:51:51 -0700 Subject: [PATCH 12/49] minor css fixes --- src/components/empty-state/index.js | 2 +- src/components/empty-state/style.less | 10 ++++--- src/routes/file/style.less | 1 - src/routes/library/index.js | 2 +- src/routes/library/style.less | 1 - src/routes/welcome/index.js | 2 +- src/routes/welcome/style.less | 43 +++++++++++++++++---------- src/style/index.less | 2 +- src/style/vars.less | 1 + 9 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/components/empty-state/index.js b/src/components/empty-state/index.js index 16b46a0..4a190d0 100644 --- a/src/components/empty-state/index.js +++ b/src/components/empty-state/index.js @@ -28,7 +28,7 @@ export default class EmptyState extends Component {
{props.title}
-

{Message && }

+

{Message && }

); } diff --git a/src/components/empty-state/style.less b/src/components/empty-state/style.less index 4d600a4..fb3323d 100644 --- a/src/components/empty-state/style.less +++ b/src/components/empty-state/style.less @@ -2,10 +2,11 @@ .view { position: absolute; - top: 45px; + top: 0px; bottom: 0px; left: 0; right: 0; + padding: 0 5%; text-align: center; display: flex; justify-content: center; @@ -15,9 +16,10 @@ font-size: 1em; } -.view p { - margin: 32px; +.view .message { + margin: 0px; color: var(--text-message-color); + margin: 0 15%; } .view .title { @@ -26,7 +28,7 @@ .view h1 i { display: block; - margin: 32px; + margin-bottom: 32px; font-size: 2.5em; color: var(--text-message-color); opacity: 0.5; diff --git a/src/routes/file/style.less b/src/routes/file/style.less index 1776acc..6c4c052 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -11,7 +11,6 @@ justify-content: center; align-items: center; flex-direction: column; - color: white; font-size: 1.25em; } diff --git a/src/routes/library/index.js b/src/routes/library/index.js index e205881..66641ea 100644 --- a/src/routes/library/index.js +++ b/src/routes/library/index.js @@ -50,7 +50,7 @@ export default class Library extends Component { const {items} = this.props; const EmptyMessage = (props) => ( -

Your library is empty, try to add some files first.

+ Your library is empty, add some files first. ); return ( diff --git a/src/routes/library/style.less b/src/routes/library/style.less index c9c9a05..d3506ea 100644 --- a/src/routes/library/style.less +++ b/src/routes/library/style.less @@ -11,7 +11,6 @@ justify-content: center; align-items: center; flex-direction: column; - color: white; font-size: 1.25em; } diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index d769b00..28c7785 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -25,7 +25,7 @@ export default class Welcome extends Component {

Comic Book Reader

- A touch friendly HTML5 comic book reader that reads
CBR, CBZ, CBT, and PDF files. + A touch friendly HTML5 comic book reader that reads CBR, CBZ, CBT, and PDF files.

diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index 0353911..a8419ce 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -3,21 +3,29 @@ .view { position: absolute; top: 45px; - bottom: 0px; + bottom: 0; left: 0; right: 0; + padding: 0 5%; text-align: center; display: flex; justify-content: center; align-items: center; flex-direction: column; - color: white; font-size: 1.25em; + overflow: auto; } .view p { - margin: 25px; + margin: 5% 0; + max-width: 50%; color: var(--text-message-color); + line-height: 1.5; +} + +.view .focus { + color: #c8d6e5; + font-weight: bold; } .view button { @@ -25,28 +33,33 @@ } .view footer { - font-size: 0.95em; - line-height: 10vmin; + font-size: 0.9em; + width: 100%; position: absolute; bottom: 0; - width: 100%; - left: 0; - right: 0; - margin: auto; + left:0; + margin: 32px auto; + color: var(--text-message-color); +} + +.view footer a { + margin: 0 4px; } -/* -@media (max-width: 379px) { - .welcome { + +@media (max-width: 400px) { + .view { font-size: 14px; } + .view p { + max-width: 100%; + } - .welcome button { + .view button { font-size: 14px; } - .welcome footer { + .view footer { font-size: 14px; } } -*/ diff --git a/src/style/index.less b/src/style/index.less index 96486e7..506b958 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -27,7 +27,7 @@ body { } a { - color: var(--main-color); + color: var(--link-color); } /* Make scroll bars small and blue on Chrome */ diff --git a/src/style/vars.less b/src/style/vars.less index 4f8e0ea..610b584 100644 --- a/src/style/vars.less +++ b/src/style/vars.less @@ -2,6 +2,7 @@ :root { --main-color: #1976D2; --bg-color: #2F3542; + --link-color: #34ace0; --text-color: white; --text-message-color: #a4b0be; } From f12ed52a719aea3d0152ccd50b59e4e726a27d8b Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 12:44:27 -0700 Subject: [PATCH 13/49] setup prettier --- .prettierignore | 5 +++++ .prettierrc | 6 +++++ package.json | 8 +++++-- yarn.lock | 60 +++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2601f5e --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +node_modules +dist +build +*.lock +*.log diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3e71de2 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "trailingComma": "es5", + "printWidth": 100, + "singleQuote": true, + "semi": false +} diff --git a/package.json b/package.json index 081438e..c7677f3 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "build": "preact build --template src/index.html", "serve": "npm run build && preact serve", "dev": "preact watch --template src/index.html", - "lint": "eslint src" + "lint": "eslint src", + "format": "pretty-quick" }, "eslintConfig": { "extends": "eslint-config-synacor", @@ -51,8 +52,11 @@ "devDependencies": { "eslint": "^4.2.0", "eslint-config-synacor": "^1.0.1", + "husky": "^0.14.3", "if-env": "^1.0.0", - "preact-cli": "^1.3.0" + "preact-cli": "^1.3.0", + "prettier": "^1.11.1", + "pretty-quick": "^1.4.1" }, "dependencies": { "preact": "^8.2.7", diff --git a/yarn.lock b/yarn.lock index 734807f..439f02c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,16 +2,6 @@ # yarn lockfile v1 -"@fortawesome/fontawesome-common-types@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.3.tgz#8475e0f2d1ad1f858c4ec2e76ed9a2456a09ad83" - -"@fortawesome/fontawesome@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome/-/fontawesome-1.1.5.tgz#c7cfafdd3364245626293cc670357f9fb8487170" - dependencies: - "@fortawesome/fontawesome-common-types" "^0.1.3" - "@types/configstore@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" @@ -1508,7 +1498,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -2734,6 +2724,18 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + executable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" @@ -3639,6 +3641,14 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +husky@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" + dependencies: + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" + iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3667,7 +3677,7 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -ignore@^3.3.3, ignore@^3.3.5: +ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -4772,6 +4782,10 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4917,6 +4931,10 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -5765,6 +5783,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" + pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" @@ -5780,6 +5802,16 @@ pretty-format@^3.5.1: version "3.8.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" +pretty-quick@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.4.1.tgz#9d41f778d2d4d940ec603d1293a0998e84c4722c" + dependencies: + chalk "^2.3.0" + execa "^0.8.0" + find-up "^2.1.0" + ignore "^3.3.7" + mri "^1.1.0" + private@^0.1.6, private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -6876,6 +6908,10 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" From d39f455f84748010c9be82679d5810840140c261 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 12:47:58 -0700 Subject: [PATCH 14/49] move test files --- .../test_files_bad}/archive_corrupt_header.cbz | Bin .../archive_many_text_files_one_image.cbz | Bin .../test_files_bad}/archive_no_files.cbz | Bin .../test_files_bad}/archive_only_text_files.cbz | Bin .../test_files_bad}/images_all_are_corrupt.cbz | Bin .../test_files_bad}/images_all_are_one_pixel.cbz | Bin .../test_files_bad}/images_all_are_zero_length.cbz | Bin .../test_files_bad}/images_middle_is_corrupt.cbz | Bin .../test_files_good}/example.cbr | Bin .../test_files_good}/example.cbt | Bin .../test_files_good}/example.cbz | Bin 11 files changed, 0 insertions(+), 0 deletions(-) rename {test_files_bad => test/test_files_bad}/archive_corrupt_header.cbz (100%) rename {test_files_bad => test/test_files_bad}/archive_many_text_files_one_image.cbz (100%) rename {test_files_bad => test/test_files_bad}/archive_no_files.cbz (100%) rename {test_files_bad => test/test_files_bad}/archive_only_text_files.cbz (100%) rename {test_files_bad => test/test_files_bad}/images_all_are_corrupt.cbz (100%) rename {test_files_bad => test/test_files_bad}/images_all_are_one_pixel.cbz (100%) rename {test_files_bad => test/test_files_bad}/images_all_are_zero_length.cbz (100%) rename {test_files_bad => test/test_files_bad}/images_middle_is_corrupt.cbz (100%) rename {test_files_good => test/test_files_good}/example.cbr (100%) rename {test_files_good => test/test_files_good}/example.cbt (100%) rename {test_files_good => test/test_files_good}/example.cbz (100%) diff --git a/test_files_bad/archive_corrupt_header.cbz b/test/test_files_bad/archive_corrupt_header.cbz similarity index 100% rename from test_files_bad/archive_corrupt_header.cbz rename to test/test_files_bad/archive_corrupt_header.cbz diff --git a/test_files_bad/archive_many_text_files_one_image.cbz b/test/test_files_bad/archive_many_text_files_one_image.cbz similarity index 100% rename from test_files_bad/archive_many_text_files_one_image.cbz rename to test/test_files_bad/archive_many_text_files_one_image.cbz diff --git a/test_files_bad/archive_no_files.cbz b/test/test_files_bad/archive_no_files.cbz similarity index 100% rename from test_files_bad/archive_no_files.cbz rename to test/test_files_bad/archive_no_files.cbz diff --git a/test_files_bad/archive_only_text_files.cbz b/test/test_files_bad/archive_only_text_files.cbz similarity index 100% rename from test_files_bad/archive_only_text_files.cbz rename to test/test_files_bad/archive_only_text_files.cbz diff --git a/test_files_bad/images_all_are_corrupt.cbz b/test/test_files_bad/images_all_are_corrupt.cbz similarity index 100% rename from test_files_bad/images_all_are_corrupt.cbz rename to test/test_files_bad/images_all_are_corrupt.cbz diff --git a/test_files_bad/images_all_are_one_pixel.cbz b/test/test_files_bad/images_all_are_one_pixel.cbz similarity index 100% rename from test_files_bad/images_all_are_one_pixel.cbz rename to test/test_files_bad/images_all_are_one_pixel.cbz diff --git a/test_files_bad/images_all_are_zero_length.cbz b/test/test_files_bad/images_all_are_zero_length.cbz similarity index 100% rename from test_files_bad/images_all_are_zero_length.cbz rename to test/test_files_bad/images_all_are_zero_length.cbz diff --git a/test_files_bad/images_middle_is_corrupt.cbz b/test/test_files_bad/images_middle_is_corrupt.cbz similarity index 100% rename from test_files_bad/images_middle_is_corrupt.cbz rename to test/test_files_bad/images_middle_is_corrupt.cbz diff --git a/test_files_good/example.cbr b/test/test_files_good/example.cbr similarity index 100% rename from test_files_good/example.cbr rename to test/test_files_good/example.cbr diff --git a/test_files_good/example.cbt b/test/test_files_good/example.cbt similarity index 100% rename from test_files_good/example.cbt rename to test/test_files_good/example.cbt diff --git a/test_files_good/example.cbz b/test/test_files_good/example.cbz similarity index 100% rename from test_files_good/example.cbz rename to test/test_files_good/example.cbz From 987cbf7e92bd624cef618b423fc1be35ca7bad1d Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 12:50:24 -0700 Subject: [PATCH 15/49] remove unused files --- main.js => src/lib/main.js | 0 .../lib/service_worker.js | 0 styles.css | 391 ------------------ 3 files changed, 391 deletions(-) rename main.js => src/lib/main.js (100%) rename service_worker.js => src/lib/service_worker.js (100%) delete mode 100644 styles.css diff --git a/main.js b/src/lib/main.js similarity index 100% rename from main.js rename to src/lib/main.js diff --git a/service_worker.js b/src/lib/service_worker.js similarity index 100% rename from service_worker.js rename to src/lib/service_worker.js diff --git a/styles.css b/styles.css deleted file mode 100644 index 5a63b9f..0000000 --- a/styles.css +++ /dev/null @@ -1,391 +0,0 @@ - -*, *::before, *::after { - box-sizing: border-box; -} - -* { - font-family: Helvetica, Arial, sans-serif; -} - -html { - box-sizing: border-box; - min-height: 100%; - height: 100%; - color: white; -} - -body { - box-sizing: border-box; - margin: 0; - padding: 0; - overflow: hidden; - min-height: 100%; -} - -.errors { - color: black; - background: white; -} - -/* Make scroll bars small and blue on Chrome */ -::-webkit-scrollbar { - height: 5px; - width: 5px; -} -::-webkit-scrollbar-track { -} -::-webkit-scrollbar-thumb { - background: #61AFEF; -} - -.touchLabel { - display: block; - position: relative; - margin: 10px 0; - padding-left: 5vmin; - font-size: 4vmin; - cursor: pointer; -} - -.touchLabel::before, .touchLabel::after { - position: absolute; - top: 0; - left: 0; - content: ''; -} - -.touchLabel::before { - display: block; - width: 3.5vmin; - height: 3.5vmin; - border: 0.5vmin solid white; - margin: 0; - padding: 0; -} - -.touchLabel::after { - display: none; - width: 2vmin; - height: 2vmin; - margin: 0; - padding: 0; - top: 0.75vmin; - left: 0.75vmin; - background-color: #61AFEF; -} - -.touchRadioButton + .touchLabel::before, -.touchRadioButton + .touchLabel::after { - border-radius: 50%; -} - -.touchCheckBox, .touchRadioButton { - position: absolute; - left: -999px; -} - -input:focus + .touchLabel::before { - border-color: #61AFEF; -} - -input:checked + .touchLabel::after { - display: block; -} - -.touchButton { - appearance: none; - border: 2px solid white; - background-color: #61AFEF; - cursor: pointer; - word-wrap: break-word; -} - -.unselectable { - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - -webkit-user-drag: none; -} - -.comicPage { - pointer-events: none; - width: 100%; - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - -webkit-user-drag: none; -} - -.comicPreviewPortrait { - border: 1px solid #ABB2BF; - margin: 10px; - height: auto; - width: 8vw; - min-width: 100px; -} - -.comicPreviewLandscape { - border: 1px solid #ABB2BF; - margin: 10px; - margin-left: 21px; - margin-right: 21px; - height: auto; - width: 16vw; - min-width: 200px; -} - -.comicPreviewBox { - box-sizing: border-box; - overflow: hidden; - float: left; - height: 17vw; - min-height: 230px; - font-size: 3vmin; - color: #ABB2BF; -} - -.comicPreviewBoxSelected { - background-color: #61AFEF; - color: black; -} - -.menuWithGlow { - box-shadow: 0px 0px 10vh DeepSkyBlue; -} - -#welcomeScreen { - position: absolute; - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; - z-index: 4000; - display: flex; - text-align: center; - justify-content: center; - align-items: center; - color: black; - font-size: 7vmin; - line-height: 10vmin; - background-color: grey; -} - -#welcomeScreen button { - font-size: 7vmin; - line-height: 10vmin; -} - -#welcomeScreen footer { - font-size: 4vmin; - line-height: 10vmin; -} - -@media (max-width: 379px) { - #welcomeScreen { - font-size: 14px; - } - - #welcomeScreen button { - font-size: 14px; - } - - #welcomeScreen footer { - font-size: 14px; - } -} - -#lblTotalUsersOnline { - position: absolute; - left: 0; - margin-top: -20px; - padding-left: 20px; -} - -#wallPaper { - background-color: silver; - position: absolute; - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; -} - -#topMenu { - box-sizing: border-box; - opacity: 0.9; - position: fixed; - width: 100%; - top: 0px; - z-index: 1000; - margin: 0px; - padding: 0px; - text-align: center; -} - -#topMenuPanel { - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #61AFEF; - border-top: 0px; - margin: 0px; - padding: 0px; - background-color: rgba(0, 0, 0, 0.6); - text-align: center; -} - -#topMenuButtons { - box-sizing: border-box; - overflow: hidden; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; -} - -@media (min-width: 1px) and (max-width: 379px) { - #topMenuButtons button { - width: 100%; - height: 40px; - font-size: 18px; - } -} -@media (min-width: 380px) and (max-width: 900px) { - #topMenuButtons button { - width: 20%; - font-size: 5vw; - } -} -@media (min-width: 901px) { - #topMenuButtons button { - width: 18%; - height: 180px; - font-size: 46px; - margin: 1%; - } -} - -#settingsMenu { - text-align: left; - display: flex; - align-items: center; - justify-content: center; - overflow: hidden; - clear: both; - border: 1px solid #ABB2BF; -} - -#settingsMenu label, #settingsMenu span, #settingsMenu button { - font-size: 4vmin; -} - -@media (min-width: 1px) and (max-width: 379px) { - #settingsMenu p { - magin: 0px; - padding: 0px; - } - - #settingsMenu label, #settingsMenu span { - display: block; - } -} - -#libraryMenu { - height: 400px; - overflow: hidden; - overflow-y: scroll; - clear: both; - border: 1px solid #ABB2BF; -} - -#bottomMenu { - box-sizing: border-box; - display: flex; - flex-direction: column; - flex-wrap: nowrap; - justify-content: flex-start; - opacity: 0.9; - position: fixed; - bottom: 0px; - width: 100%; - height: calc(100% - 200px); - min-height: 100px; - z-index: 1000; - margin: 0px; - padding: 0px; - text-align: center; -} - -#bottomMenuPanel { - box-sizing: border-box; - overflow-y: scroll; - width: 100%; - height: 100%; - margin: 0px; - padding: 0px; - background-color: rgba(0, 0, 0, 0.6); - text-align: center; -} - -#fileInput { - display: none; -} - -#comicPanel { - box-sizing: border-box; - overflow: hidden; - position: absolute; - top: 0; - bottom: 0; - right: 0; - left: 0; -} - -#comicPanel img { - pointer-events: none; - width: 100%; - height: auto; -} - -#horizontalScroller { - box-sizing: border-box; - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; - align-items: stretch; - height: 100%; -} - -.verticalScroller { - box-sizing: border-box; - overflow: hidden; - overflow-y: scroll; - flex: none; - width: 100%; -} - -#overlayPageNumber { - pointer-events: none; - position: fixed; - top: 0px; - left: 0px; - z-index: 500; - color: DeepSkyBlue; - font-size: 5vw; - text-shadow: 4px 4px 20px black; - opacity: 0.5; -} - -#loadingProgress { - pointer-events: none; - position: fixed; - top: 0px; - right: 0px; - z-index: 500; - color: DeepSkyBlue; - font-size: 5vw; - text-shadow: 4px 4px 20px black; - opacity: 0.5; -} From f57c503d19e3e44c4cff5977bc6439537e0658e7 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 13:28:32 -0700 Subject: [PATCH 16/49] fix pretty-quick / format code --- .huskyrc | 5 + .prettierignore | 4 + bin/install_hooks.sh | 5 - bin/pre-commit | 4 - package.json | 120 ++++++++--------- server/count.php | 69 ---------- src/actions.js | 17 ++- src/components/app.js | 42 +++--- src/components/button/index.js | 45 +++---- src/components/button/style.less | 31 ++--- src/components/comic-check-box/index.js | 30 ++--- src/components/comic-check-box/style.less | 68 +++++----- src/components/comic-settings/index.js | 130 ++++++++++--------- src/components/comic-settings/style.less | 36 +++--- src/components/empty-state/index.js | 53 ++++---- src/components/empty-state/style.less | 50 ++++---- src/components/icon/index.js | 10 +- src/components/icon/style.less | 4 +- src/components/menu/index.js | 105 ++++++++------- src/components/menu/style.less | 104 ++++++++------- src/index.html | 1 + src/index.js | 26 ++-- src/manifest.json | 14 +- src/reducers.js | 7 +- src/routes/file/index.js | 150 ++++++++++++---------- src/routes/file/style.less | 91 +++++++------ src/routes/library/index.js | 110 ++++++++-------- src/routes/library/style.less | 40 +++--- src/routes/welcome/index.js | 75 +++++------ src/routes/welcome/style.less | 81 ++++++------ src/store.js | 43 ++++--- src/style/index.less | 38 +++--- src/style/vars.less | 10 +- src/util.js | 8 +- 34 files changed, 780 insertions(+), 846 deletions(-) create mode 100644 .huskyrc delete mode 100755 bin/install_hooks.sh delete mode 100755 bin/pre-commit delete mode 100644 server/count.php diff --git a/.huskyrc b/.huskyrc new file mode 100644 index 0000000..2b6e817 --- /dev/null +++ b/.huskyrc @@ -0,0 +1,5 @@ +{ + "hooks": { + "pre-commit": "yarn pretty-quick --staged" + } +} diff --git a/.prettierignore b/.prettierignore index 2601f5e..efb93b0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,9 @@ node_modules +bin dist +test build +/src/assets +/src/lib *.lock *.log diff --git a/bin/install_hooks.sh b/bin/install_hooks.sh deleted file mode 100755 index 8a7cf96..0000000 --- a/bin/install_hooks.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -cd .git/hooks/ -rm -f pre-commit -ln -s ../../bin/pre-commit pre-commit diff --git a/bin/pre-commit b/bin/pre-commit deleted file mode 100755 index 3ffe0e4..0000000 --- a/bin/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -printf "function getVersionDate() { return \"`date +"%B %d, %Y - %T"`\"; }\r\n" > src/lib/version_date.js -git add src/lib/version_date.js diff --git a/package.json b/package.json index c7677f3..537ef61 100644 --- a/package.json +++ b/package.json @@ -1,68 +1,56 @@ { - "name": "comic_book_reader", - "version": "0.1.0", - "description": "A browser based touch friendly comic book reader", - "homepage": "https://github.com/workhorsy/comic_book_reader", - "keywords": [ - "comics" - ], - "author": "Matthew Brennan Jones ", - "license": "AGPL-3.0", - "main": "index.js", - "repository": { - "type": "git", - "url": "git+https://github.com/workhorsy/comic_book_reader.git" - }, - "scripts": { - "test": "eslint src && preact test", - "start": "if-env NODE_ENV=production && npm run -s serve || npm run -s dev", - "build": "preact build --template src/index.html", - "serve": "npm run build && preact serve", - "dev": "preact watch --template src/index.html", - "lint": "eslint src", - "format": "pretty-quick" - }, - "eslintConfig": { - "extends": "eslint-config-synacor", - "rules": { - "react/self-closing-comp": 0, - "react/prefer-stateless-function": 0, - "brace-style": 0, - "no-console": 0 - }, - "parserOptions": { - "ecmaVersion": 7, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - } - }, - "eslintIgnore": [ - "src/lib/pdf.js", - "src/lib/pdf.worker.js", - "src/lib/compatibility.js", - "src/lib/uncompress.js", - "src/lib/jszip.js", - "src/lib/libunrar.js", - "src/lib/libunrar.js.mem", - "src/lib/ibuntar.js", - "src/lib/pica.js" - ], - "devDependencies": { - "eslint": "^4.2.0", - "eslint-config-synacor": "^1.0.1", - "husky": "^0.14.3", - "if-env": "^1.0.0", - "preact-cli": "^1.3.0", - "prettier": "^1.11.1", - "pretty-quick": "^1.4.1" - }, - "dependencies": { - "preact": "^8.2.7", - "preact-compat": "^3.18.0", - "preact-redux": "^2.0.3", - "preact-router": "^2.6.0", - "redux": "^3.7.2" - } + "name": "comic_book_reader", + "version": "0.1.0", + "description": "A browser based touch friendly comic book reader", + "homepage": "https://github.com/workhorsy/comic_book_reader", + "keywords": ["comics"], + "author": "Matthew Brennan Jones ", + "license": "AGPL-3.0", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/workhorsy/comic_book_reader.git" + }, + "scripts": { + "test": "eslint src && preact test", + "start": "if-env NODE_ENV=production && npm run -s serve || npm run -s dev", + "build": "preact build --template src/index.html", + "serve": "npm run build && preact serve", + "dev": "preact watch --template src/index.html", + "lint": "eslint src", + "format": "pretty-quick --branch preact" + }, + "eslintConfig": { + "extends": "eslint-config-synacor", + "rules": { + "react/self-closing-comp": 0, + "react/prefer-stateless-function": 0, + "brace-style": 0, + "no-console": 0 + }, + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + } + }, + "eslintIgnore": ["src/lib/*"], + "devDependencies": { + "eslint": "^4.2.0", + "eslint-config-synacor": "^1.0.1", + "husky": "^0.14.3", + "if-env": "^1.0.0", + "preact-cli": "^1.3.0", + "prettier": "^1.11.1", + "pretty-quick": "^1.4.1" + }, + "dependencies": { + "preact": "^8.2.7", + "preact-compat": "^3.18.0", + "preact-redux": "^2.0.3", + "preact-router": "^2.6.0", + "redux": "^3.7.2" + } } diff --git a/server/count.php b/server/count.php deleted file mode 100644 index ab4df0c..0000000 --- a/server/count.php +++ /dev/null @@ -1,69 +0,0 @@ - -// This software is licensed under AGPL v3 or later -// http://github.com/workhorsy/comic_book_reader - -header("Access-Control-Allow-Origin: *"); - -// Make sure it is a HTTP Get request -if ($_SERVER['REQUEST_METHOD'] !== "GET") { - header("HTTP/1.1 405 Method Not Allowed"); - return; -} - -// Make sure the ID is a number, if it exists -$id = null; -if (array_key_exists("id", $_GET)) { - if (! is_numeric($_GET["id"])) { - header("HTTP/1.1 406 Not Acceptable"); - return; - } - $id = intval($_GET["id"]); -} - -// Get all the parameters -$file_name = "user_count.txt"; -$now = time(); -$cut_off_time = $now - (60 * 10); // 10 minutes ago - -// Read the db from file -$db = array(); -if (file_exists($file_name)) { - $fd = fopen($file_name, "r"); - $string_db = fread($fd, filesize($file_name)); - $db = unserialize($string_db); - //print_r($db); - fclose($fd); -} - -// Save this user's time -if ($id !== null) { - $db[$id] = $now; -} - -// Remove users that have not visited in 10 minutes -foreach ($db as $db_id => $db_time) { -// echo "

" . $db_id . ":" . $db_time . ", " . ($db_time - $cut_off_time) . "

"; - if ($db_time < $cut_off_time) { - unset($db[$db_id]); - } -} - -// Print everything -/* -echo "

now: " . $now . "

"; -echo "

id: " . $id . "

"; -echo "

user db: "; -print_r($db); -echo "

"; -*/ -// Write the db to file -$string_db = serialize($db); -$fd = fopen($file_name, "w"); -fwrite($fd, $string_db); -fclose($fd); - -header('Content-Type: application/json'); -echo(count($db)); -?> diff --git a/src/actions.js b/src/actions.js index 3a96d50..3d2ef02 100644 --- a/src/actions.js +++ b/src/actions.js @@ -1,14 +1,13 @@ - export function addComic(text) { - return { - type: 'ADD_COMIC', - text - }; + return { + type: 'ADD_COMIC', + text, + } } export function removeComic(comic) { - return { - type: 'REMOVE_COMIC', - comic - }; + return { + type: 'REMOVE_COMIC', + comic, + } } diff --git a/src/components/app.js b/src/components/app.js index e83ae76..b4b5f34 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -1,27 +1,27 @@ -import { h, Component } from 'preact'; -import { Router } from 'preact-router'; +import { h, Component } from 'preact' +import { Router } from 'preact-router' -import Welcome from '../routes/welcome'; -import File from '../routes/file'; -import Library from '../routes/library'; +import Welcome from '../routes/welcome' +import File from '../routes/file' +import Library from '../routes/library' -import Menu from './menu'; +import Menu from './menu' export default class App extends Component { - handleRoute = e => { - this.currentUrl = e.url; - }; + handleRoute = e => { + this.currentUrl = e.url + } - render() { - return ( -
- - - - - - -
- ); - } + render() { + return ( +
+ + + + + + +
+ ) + } } diff --git a/src/components/button/index.js b/src/components/button/index.js index 2f356da..17b2466 100644 --- a/src/components/button/index.js +++ b/src/components/button/index.js @@ -1,33 +1,30 @@ -import { h, Component } from 'preact'; +import { h, Component } from 'preact' //import { Link } from 'preact-router/match'; -import style from './style'; +import style from './style' import Icon from '../../components/icon' export default class Button extends Component { - state = { - }; + state = {} - handleMouseUp = (event) => { - //console.log(this.props.children[0]); - this.props.onClick && this.props.onClick(event); - }; + handleMouseUp = event => { + //console.log(this.props.children[0]); + this.props.onClick && this.props.onClick(event) + } - componentDidMount() { - - //console.log(this.props.text); - } + componentDidMount() { + //console.log(this.props.text); + } - render() { - const { props, state } = this; - const type = props.type ? style[props.type] : ''; - return ( - - ); - } + render() { + const { props, state } = this + const type = props.type ? style[props.type] : '' + return ( + + ) + } } diff --git a/src/components/button/style.less b/src/components/button/style.less index a487efc..353ace2 100644 --- a/src/components/button/style.less +++ b/src/components/button/style.less @@ -1,27 +1,24 @@ @import '~style/helpers'; .comic_button { - - border: 0; - appearance: none; - padding: 16px; - margin: 16px; - cursor: pointer; - word-wrap: break-word; - background: var(--main-color); - color: inherit; - font-weight: bold; - font-family: inherit; - font-size: 1em; - max-width: 250px; - + border: 0; + appearance: none; + padding: 16px; + margin: 16px; + cursor: pointer; + word-wrap: break-word; + background: var(--main-color); + color: inherit; + font-weight: bold; + font-family: inherit; + font-size: 1em; + max-width: 250px; } .comic_button i { - margin-right: 16px; + margin-right: 16px; } - .secondary { - background: #57606f; + background: #57606f; } diff --git a/src/components/comic-check-box/index.js b/src/components/comic-check-box/index.js index 62f3894..8ff44ea 100644 --- a/src/components/comic-check-box/index.js +++ b/src/components/comic-check-box/index.js @@ -1,23 +1,19 @@ -import { h, Component } from 'preact'; +import { h, Component } from 'preact' //import { Link } from 'preact-router/match'; -import style from './style'; +import style from './style' export default class ComicCheckBox extends Component { - state = { - }; + state = {} - componentDidMount() { - } + componentDidMount() {} - render() { - let { props, state } = this; - return ( -
- - -
- ); - } + render() { + let { props, state } = this + return ( +
+ + +
+ ) + } } diff --git a/src/components/comic-check-box/style.less b/src/components/comic-check-box/style.less index 92734d1..2cabe8c 100644 --- a/src/components/comic-check-box/style.less +++ b/src/components/comic-check-box/style.less @@ -1,59 +1,59 @@ @import '~style/helpers'; .comic_check_box { - } .comic_check_box label { - display: block; - position: relative; - margin: 10px 0; - padding-left: 5vmin; - font-size: 4vmin; - cursor: pointer; + display: block; + position: relative; + margin: 10px 0; + padding-left: 5vmin; + font-size: 4vmin; + cursor: pointer; } -.comic_check_box label::before, .comic_check_box label::after { - position: absolute; - top: 0; - left: 0; - content: ''; +.comic_check_box label::before, +.comic_check_box label::after { + position: absolute; + top: 0; + left: 0; + content: ''; } .comic_check_box label::before { - display: block; - width: 3.5vmin; - height: 3.5vmin; - border: 0.5vmin solid white; - margin: 0; - padding: 0; + display: block; + width: 3.5vmin; + height: 3.5vmin; + border: 0.5vmin solid white; + margin: 0; + padding: 0; } .comic_check_box label::after { - display: none; - width: 2vmin; - height: 2vmin; - margin: 0; - padding: 0; - top: 0.75vmin; - left: 0.75vmin; - background-color: #61AFEF; + display: none; + width: 2vmin; + height: 2vmin; + margin: 0; + padding: 0; + top: 0.75vmin; + left: 0.75vmin; + background-color: #61afef; } -.comic_check_box input[type=radio] + label::before, -.comic_check_box input[type=radio] + label::after { - border-radius: 50%; +.comic_check_box input[type='radio'] + label::before, +.comic_check_box input[type='radio'] + label::after { + border-radius: 50%; } -.comic_check_box input[type=checkbox] { - position: absolute; - left: -999px; +.comic_check_box input[type='checkbox'] { + position: absolute; + left: -999px; } .comic_check_box input:focus + label::before { - border-color: #61AFEF; + border-color: #61afef; } .comic_check_box input:checked + label::after { - display: block; + display: block; } diff --git a/src/components/comic-settings/index.js b/src/components/comic-settings/index.js index 28867eb..f19954e 100644 --- a/src/components/comic-settings/index.js +++ b/src/components/comic-settings/index.js @@ -1,65 +1,75 @@ -import { h, Component } from 'preact'; +import { h, Component } from 'preact' //import { Link } from 'preact-router/match'; -import style from './style'; +import style from './style' -import ComicButton from '../comic-button'; -import ComicCheckBox from '../comic-check-box'; +import ComicButton from '../comic-button' +import ComicCheckBox from '../comic-check-box' export default class ComicSettings extends Component { - render() { - return ( -
-
-
-

- - -

-
-

- Allow right click -

-

- Check for updates -

-

- Use higher quality page previews -

-

- Use smoothing when resizing images -

-
-

- - . . . -

-

- Clear all data -

-
-

- - ... -

-

- -

-

- Visit home page at github -

-
-
-
- ); - } + render() { + return ( +
+
+
+

+ + +

+
+

+ Allow right click +

+

+ Check for updates +

+

+ + Use higher quality page previews + +

+

+ + Use smoothing when resizing images + +

+
+

+ + + . . . + +

+

+ Clear all data +

+
+

+ + + ... + +

+

+ +

+

+ Visit home page at github +

+
+
+
+ ) + } } diff --git a/src/components/comic-settings/style.less b/src/components/comic-settings/style.less index 37462b7..63c16de 100644 --- a/src/components/comic-settings/style.less +++ b/src/components/comic-settings/style.less @@ -1,30 +1,32 @@ @import '~style/helpers'; .comic_settings { - } .comic_settings #settingsMenu { - text-align: left; - display: flex; - align-items: center; - justify-content: center; - overflow: hidden; - clear: both; - border: 1px solid #ABB2BF; + text-align: left; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + clear: both; + border: 1px solid #abb2bf; } -.comic_settings #settingsMenu label, .comic_settings #settingsMenu span, .comic_settings #settingsMenu button { - font-size: 4vmin; +.comic_settings #settingsMenu label, +.comic_settings #settingsMenu span, +.comic_settings #settingsMenu button { + font-size: 4vmin; } @media (min-width: 1px) and (max-width: 379px) { - .comic_settings #settingsMenu p { - magin: 0px; - padding: 0px; - } + .comic_settings #settingsMenu p { + magin: 0px; + padding: 0px; + } - .comic_settings #settingsMenu label, .comic_settings #settingsMenu span { - display: block; - } + .comic_settings #settingsMenu label, + .comic_settings #settingsMenu span { + display: block; + } } diff --git a/src/components/empty-state/index.js b/src/components/empty-state/index.js index 4a190d0..0b738fe 100644 --- a/src/components/empty-state/index.js +++ b/src/components/empty-state/index.js @@ -1,35 +1,36 @@ -import { h, Component } from 'preact'; -import style from './style'; +import { h, Component } from 'preact' +import style from './style' import Icon from '../../components/icon' export default class EmptyState extends Component { - state = { - }; + state = {} - handleMouseUp = (event) => { - //console.log(this.props.children[0]); - this.props.onClick && this.props.onClick(event); - }; + handleMouseUp = event => { + //console.log(this.props.children[0]); + this.props.onClick && this.props.onClick(event) + } - componentDidMount() { + componentDidMount() { + //console.log(this.props.text); + } - //console.log(this.props.text); - } + render() { + const { props, state } = this + const Message = props.message + const type = props.type ? style[props.type] : '' - render() { - const { props, state } = this; - const Message = props.message; - const type = props.type ? style[props.type] : ''; - - return ( -
-

- -
{props.title}
-

-

{Message && }

-
-
); - } + return ( +
+

+ +
{props.title}
+

+

+ {Message && } +

+
+
+ ) + } } diff --git a/src/components/empty-state/style.less b/src/components/empty-state/style.less index fb3323d..6cff86a 100644 --- a/src/components/empty-state/style.less +++ b/src/components/empty-state/style.less @@ -1,42 +1,42 @@ @import '~style/helpers'; .view { - position: absolute; - top: 0px; - bottom: 0px; - left: 0; - right: 0; - padding: 0 5%; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - color: white; - font-size: 1em; + position: absolute; + top: 0px; + bottom: 0px; + left: 0; + right: 0; + padding: 0 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: white; + font-size: 1em; } .view .message { - margin: 0px; - color: var(--text-message-color); - margin: 0 15%; + margin: 0px; + color: var(--text-message-color); + margin: 0 15%; } .view .title { - font-size: 1.25em; + font-size: 1.25em; } .view h1 i { - display: block; - margin-bottom: 32px; - font-size: 2.5em; - color: var(--text-message-color); - opacity: 0.5; + display: block; + margin-bottom: 32px; + font-size: 2.5em; + color: var(--text-message-color); + opacity: 0.5; } -.actions {} - +.actions { +} .view button { - width: 100%; + width: 100%; } diff --git a/src/components/icon/index.js b/src/components/icon/index.js index d5d6168..5949250 100644 --- a/src/components/icon/index.js +++ b/src/components/icon/index.js @@ -1,8 +1,6 @@ -import style from './style'; +import style from './style' -console.log(style.icon); -const Icon = ({name}) => ( - -); +console.log(style.icon) +const Icon = ({ name }) => -export default Icon; +export default Icon diff --git a/src/components/icon/style.less b/src/components/icon/style.less index 6c87c75..142d629 100644 --- a/src/components/icon/style.less +++ b/src/components/icon/style.less @@ -1,4 +1,4 @@ .icon { - padding: 0; - margin: 0; + padding: 0; + margin: 0; } diff --git a/src/components/menu/index.js b/src/components/menu/index.js index b1a5948..af45a57 100644 --- a/src/components/menu/index.js +++ b/src/components/menu/index.js @@ -1,59 +1,58 @@ -import { h, Component } from 'preact'; -import { Link } from 'preact-router'; -import { connect } from 'preact-redux'; -import { bindActions } from '../../util'; -import reduce from '../../reducers'; -import style from './style'; -import * as actions from '../../actions'; -import { toggleFullScreen } from '../../lib/utility'; +import { h, Component } from 'preact' +import { Link } from 'preact-router' +import { connect } from 'preact-redux' +import { bindActions } from '../../util' +import reduce from '../../reducers' +import style from './style' +import * as actions from '../../actions' +import { toggleFullScreen } from '../../lib/utility' import Icon from '../../components/icon' - -const Item = ({label, icon, href, onClick}) => { - const action = (event) => onClick && onClick(event); - return ( -
- {icon && } - {label} -
- ); -}; +const Item = ({ label, icon, href, onClick }) => { + const action = event => onClick && onClick(event) + return ( +
+ {icon && } + + {label} + +
+ ) +} // Internal button -const Button = ({label, icon, onClick}) => { - const action = (event) => onClick && onClick(event); - return ( - - ); -}; - - +const Button = ({ label, icon, onClick }) => { + const action = event => onClick && onClick(event) + return ( + + ) +} //Test data for ComicLibrary ( remove this ) const TestData = { - items: [ - { title: 'Issue #1', cover: './assets/undefined.png' }, - { title: 'Issue #2', cover: './assets/undefined.png' }, - { title: 'Issue #3', cover: './assets/undefined.png' }, - { title: 'Issue #4', cover: './assets/undefined.png' }, - { title: 'Issue #5', cover: './assets/undefined.png' } - ] + items: [ + { title: 'Issue #1', cover: './assets/undefined.png' }, + { title: 'Issue #2', cover: './assets/undefined.png' }, + { title: 'Issue #3', cover: './assets/undefined.png' }, + { title: 'Issue #4', cover: './assets/undefined.png' }, + { title: 'Issue #5', cover: './assets/undefined.png' }, + ], } @connect(reduce, bindActions(actions)) export default class Menu extends Component { - state = { - is_showing_settings: false, - is_showing_library: false - }; + state = { + is_showing_settings: false, + is_showing_library: false, + } - onBtnFullScreen = () => { - toggleFullScreen(); - } - /* + onBtnFullScreen = () => { + toggleFullScreen() + } + /* onbtnOpenFile = () => { alert("FIXME: onbtnOpenFile"); this.setState({ text: 'ADD_COMIC' }); @@ -76,13 +75,13 @@ export default class Menu extends Component { - -
-
- ); - } + return ( +
+

+ +

+

+ Choose a file or drop it here. +

+ (this.fileInput = c)} + filters={this.filters} + onChange={this.handleFile} + /> +
+ + +
+
+ ) + } } diff --git a/src/routes/file/style.less b/src/routes/file/style.less index 6c4c052..67f4392 100644 --- a/src/routes/file/style.less +++ b/src/routes/file/style.less @@ -1,76 +1,73 @@ @import '~style/helpers'; .view { - position: absolute; - top: 45px; - bottom: 0px; - left: 0; - right: 0; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - font-size: 1.25em; + position: absolute; + top: 45px; + bottom: 0px; + left: 0; + right: 0; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 1.25em; } .view p { - margin: 25px; - color: var(--text-message-color); + margin: 25px; + color: var(--text-message-color); } .view h1 i { - color: var(--text-message-color); - opacity: 0.5; + color: var(--text-message-color); + opacity: 0.5; } .drag p { - color: var(--text-color); + color: var(--text-color); } .drag .actions { - opacity: 0.25; - pointer-events: none; + opacity: 0.25; + pointer-events: none; } - -.actions {} - +.actions { +} .drag h1 i { - display: block; - transform: translateY(0px); - animation-name: drop; - animation-duration: 0.35s; - animation-fill-mode: both; - animation-timing-function: ease; - animation-iteration-count: infinite; - animation-direction: alternate; + display: block; + transform: translateY(0px); + animation-name: drop; + animation-duration: 0.35s; + animation-fill-mode: both; + animation-timing-function: ease; + animation-iteration-count: infinite; + animation-direction: alternate; } .view button { - width: 100%; + width: 100%; } - .view footer { - font-size: 0.85em; - position: absolute; - bottom: 0; - width: 100%; - left: 0; - right: 0; - margin: auto; + font-size: 0.85em; + position: absolute; + bottom: 0; + width: 100%; + left: 0; + right: 0; + margin: auto; } @keyframes drop { - from { - opacity: 0.5; - transform: translateY(0px); - } - to { - opacity: 1; - transform: translateY(25px); - - } + from { + opacity: 0.5; + transform: translateY(0px); + } + to { + opacity: 1; + transform: translateY(25px); + } } diff --git a/src/routes/library/index.js b/src/routes/library/index.js index 66641ea..1b3da96 100644 --- a/src/routes/library/index.js +++ b/src/routes/library/index.js @@ -1,68 +1,68 @@ -import { h, Component } from 'preact'; -import { Link } from 'preact-router'; -import EmptyState from '../../components/empty-state'; -import style from './style'; +import { h, Component } from 'preact' +import { Link } from 'preact-router' +import EmptyState from '../../components/empty-state' +import style from './style' class Item extends Component { + static defaultProps = { + cover: './assets/invalid_image.png', + } - static defaultProps = { - cover: './assets/invalid_image.png' - } + state = { + cover: this.props.cover, + loaded: false, + } - state = { - cover: this.props.cover, - loaded: false - } + componentDidUpdate() { + //this.state.loaded && console.log("Loaded!"); + } - componentDidUpdate() { - //this.state.loaded && console.log("Loaded!"); - } + handleImageLoaded() { + this.setState({ loaded: true }) + } - handleImageLoaded() { - this.setState({loaded: true}); - } + handleError(err) { + this.setState({ cover: './assets/invalid_image.png' }) + } - handleError(err) { - this.setState({cover: './assets/invalid_image.png'}); - } - - render() { - let {props, state} = this; - return ( -
- -

{ props.title }

-
- ); - } + render() { + let { props, state } = this + return ( +
+ +

{props.title}

+
+ ) + } } export default class Library extends Component { + static defaultProps = { + items: [], + } + render() { + const { items } = this.props - static defaultProps = { - items: [] - } - render() { - const {items} = this.props; - - const EmptyMessage = (props) => ( - Your library is empty, add some files first. - ); + const EmptyMessage = props => ( + + {' '} + Your library is empty, add some files first.{' '} + + ) - return ( -
- { items && items.length ? - items.map((i, k) => ) : - - } -
- ); - } + return ( +
+ {items && items.length ? ( + items.map((i, k) => ) + ) : ( + + )} +
+ ) + } } diff --git a/src/routes/library/style.less b/src/routes/library/style.less index d3506ea..a66c86d 100644 --- a/src/routes/library/style.less +++ b/src/routes/library/style.less @@ -1,33 +1,33 @@ @import '~style/helpers'; .view { - position: absolute; - top: 45px; - bottom: 0px; - left: 0; - right: 0; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - font-size: 1.25em; + position: absolute; + top: 45px; + bottom: 0px; + left: 0; + right: 0; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 1.25em; } .view h1 i { - color: var(--text-message-color); - opacity: 0.5; + color: var(--text-message-color); + opacity: 0.5; } .view .item { - display: inline-block; - margin: 10px; - float: left; + display: inline-block; + margin: 10px; + float: left; } .view .item img { - border: 1px solid #ABB2BF; - height: auto; - width: 8vw; - min-width: 100px; + border: 1px solid #abb2bf; + height: auto; + width: 8vw; + min-width: 100px; } diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index 28c7785..724057c 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -1,40 +1,43 @@ -import { h, Component } from 'preact'; -import style from './style'; +import { h, Component } from 'preact' +import style from './style' -import { route } from 'preact-router'; -import Button from '../../components/button'; +import { route } from 'preact-router' +import Button from '../../components/button' export default class Welcome extends Component { - state = { - }; - - showApp(e) { - route('/file'); - } - - // gets called when this route is navigated to - componentDidMount() { - } - - // gets called just before navigating away from the route - componentWillUnmount() { - } - - render() { - return ( -
-

Comic Book Reader

-

- A touch friendly HTML5 comic book reader that reads CBR, CBZ, CBT, and PDF files. -

- - - - -
- ); - } + state = {} + + showApp(e) { + route('/file') + } + + // gets called when this route is navigated to + componentDidMount() {} + + // gets called just before navigating away from the route + componentWillUnmount() {} + + render() { + return ( +
+

+ Comic Book Reader +

+

+ A touch friendly HTML5 comic book reader that reads CBR,{' '} + CBZ, CBT, and{' '} + PDF files. +

+ + + + +
+ ) + } } diff --git a/src/routes/welcome/style.less b/src/routes/welcome/style.less index a8419ce..46b67af 100644 --- a/src/routes/welcome/style.less +++ b/src/routes/welcome/style.less @@ -1,65 +1,64 @@ @import '~style/helpers'; .view { - position: absolute; - top: 45px; - bottom: 0; - left: 0; - right: 0; - padding: 0 5%; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - font-size: 1.25em; - overflow: auto; + position: absolute; + top: 45px; + bottom: 0; + left: 0; + right: 0; + padding: 0 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 1.25em; + overflow: auto; } .view p { - margin: 5% 0; - max-width: 50%; - color: var(--text-message-color); - line-height: 1.5; + margin: 5% 0; + max-width: 50%; + color: var(--text-message-color); + line-height: 1.5; } .view .focus { - color: #c8d6e5; - font-weight: bold; + color: #c8d6e5; + font-weight: bold; } .view button { - width: 100%; + width: 100%; } .view footer { - font-size: 0.9em; - width: 100%; - position: absolute; - bottom: 0; - left:0; - margin: 32px auto; - color: var(--text-message-color); + font-size: 0.9em; + width: 100%; + position: absolute; + bottom: 0; + left: 0; + margin: 32px auto; + color: var(--text-message-color); } .view footer a { - margin: 0 4px; + margin: 0 4px; } - @media (max-width: 400px) { - .view { - font-size: 14px; - } - .view p { - max-width: 100%; - } + .view { + font-size: 14px; + } + .view p { + max-width: 100%; + } - .view button { - font-size: 14px; - } + .view button { + font-size: 14px; + } - .view footer { - font-size: 14px; - } + .view footer { + font-size: 14px; + } } diff --git a/src/store.js b/src/store.js index 68f18b1..e0cd551 100644 --- a/src/store.js +++ b/src/store.js @@ -1,24 +1,31 @@ -import { createStore } from 'redux'; +import { createStore } from 'redux' let ACTIONS = { - ADD_COMIC: ({ comics, ...state }, { text }) => ({ - comics: [...comics, { - id: Math.random().toString(36).substring(2), - text - }], - ...state - }), + ADD_COMIC: ({ comics, ...state }, { text }) => ({ + comics: [ + ...comics, + { + id: Math.random() + .toString(36) + .substring(2), + text, + }, + ], + ...state, + }), - REMOVE_COMIC: ({ comics, ...state }, { comic }) => ({ - comics: comics.filter( i => i!==comic ), - ...state - }) -}; + REMOVE_COMIC: ({ comics, ...state }, { comic }) => ({ + comics: comics.filter(i => i !== comic), + ...state, + }), +} const INITIAL = { - comics: [] -}; + comics: [], +} -export default createStore( (state, action) => ( - action && ACTIONS[action.type] ? ACTIONS[action.type](state, action) : state -), INITIAL, window.devToolsExtension && window.devToolsExtension()); +export default createStore( + (state, action) => (action && ACTIONS[action.type] ? ACTIONS[action.type](state, action) : state), + INITIAL, + window.devToolsExtension && window.devToolsExtension() +) diff --git a/src/style/index.less b/src/style/index.less index 506b958..7008a0b 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -1,42 +1,44 @@ @import 'helpers'; @import 'vars'; -*, *::before, *::after { - box-sizing: border-box; +*, +*::before, +*::after { + box-sizing: border-box; } * { - font-family: Helvetica, Arial, sans-serif; + font-family: Helvetica, Arial, sans-serif; } html { - min-height: 100%; - height: 100%; - margin: 0; - padding: 0; + min-height: 100%; + height: 100%; + margin: 0; + padding: 0; } body { - background: var(--bg-color); - color: var(--text-color); - overflow: hidden; - min-height: 100%; - margin: 0; - padding: 0; - font-size: 1em; + background: var(--bg-color); + color: var(--text-color); + overflow: hidden; + min-height: 100%; + margin: 0; + padding: 0; + font-size: 1em; } a { - color: var(--link-color); + color: var(--link-color); } /* Make scroll bars small and blue on Chrome */ ::-webkit-scrollbar { - height: 5px; - width: 5px; + height: 5px; + width: 5px; } ::-webkit-scrollbar-track { } ::-webkit-scrollbar-thumb { - background: #61AFEF; + background: #61afef; } diff --git a/src/style/vars.less b/src/style/vars.less index 610b584..32ab778 100644 --- a/src/style/vars.less +++ b/src/style/vars.less @@ -1,8 +1,8 @@ /* Css vars */ :root { - --main-color: #1976D2; - --bg-color: #2F3542; - --link-color: #34ace0; - --text-color: white; - --text-message-color: #a4b0be; + --main-color: #1976d2; + --bg-color: #2f3542; + --link-color: #34ace0; + --text-color: white; + --text-message-color: #a4b0be; } diff --git a/src/util.js b/src/util.js index 1ebc4d8..e17b9b2 100644 --- a/src/util.js +++ b/src/util.js @@ -1,7 +1,7 @@ -import { bindActionCreators } from 'redux'; +import { bindActionCreators } from 'redux' export function bindActions(actions) { - return dispatch => ({ - ...bindActionCreators(actions, dispatch) - }); + return dispatch => ({ + ...bindActionCreators(actions, dispatch), + }) } From 250771de92558608f37e0063ccbe16bf4ea8f63e Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 13:59:24 -0700 Subject: [PATCH 17/49] add settings route --- src/components/app.js | 4 +- src/components/comic-settings/index.js | 61 +------------------ src/index.html | 1 - src/routes/settings/index.js | 82 ++++++++++++++++++++++++++ src/routes/settings/style.less | 60 +++++++++++++++++++ 5 files changed, 146 insertions(+), 62 deletions(-) create mode 100644 src/routes/settings/index.js create mode 100644 src/routes/settings/style.less diff --git a/src/components/app.js b/src/components/app.js index b4b5f34..8f6f973 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -1,9 +1,10 @@ import { h, Component } from 'preact' import { Router } from 'preact-router' -import Welcome from '../routes/welcome' import File from '../routes/file' +import Welcome from '../routes/welcome' import Library from '../routes/library' +import Settings from '../routes/settings' import Menu from './menu' @@ -20,6 +21,7 @@ export default class App extends Component { +
) diff --git a/src/components/comic-settings/index.js b/src/components/comic-settings/index.js index f19954e..586ae4c 100644 --- a/src/components/comic-settings/index.js +++ b/src/components/comic-settings/index.js @@ -9,66 +9,7 @@ export default class ComicSettings extends Component { render() { return (
-
-
-

- - -

-
-

- Allow right click -

-

- Check for updates -

-

- - Use higher quality page previews - -

-

- - Use smoothing when resizing images - -

-
-

- - - . . . - -

-

- Clear all data -

-
-

- - - ... - -

-

- -

-

- Visit home page at github -

-
-
+
) } diff --git a/src/index.html b/src/index.html index bff140f..e33bf3e 100644 --- a/src/index.html +++ b/src/index.html @@ -22,7 +22,6 @@ e = e || event; e.preventDefault(); },false); - diff --git a/src/routes/settings/index.js b/src/routes/settings/index.js new file mode 100644 index 0000000..6657317 --- /dev/null +++ b/src/routes/settings/index.js @@ -0,0 +1,82 @@ +import { h, Component } from 'preact' +import style from './style' +import Button from '../../components/button' +import ComicCheckBox from '../../components/comic-check-box' + +import { route } from 'preact-router' + +export default class Settings extends Component { + state = {} + + // gets called when this route is navigated to + componentDidMount() {} + + // gets called just before navigating away from the route + componentWillUnmount() {} + + render() { + return ( +
+
+

Settings

+

+ + +

+
+

+ Allow right click +

+

+ Check for updates +

+

+ + Use higher quality page previews + +

+

+ + Use smoothing when resizing images + +

+
+

+ + + . . . + +

+

+ +

+
+

+ + + ... + +

+

+ +

+

+ +

+
+
+ ) + } +} diff --git a/src/routes/settings/style.less b/src/routes/settings/style.less new file mode 100644 index 0000000..4bcfeb1 --- /dev/null +++ b/src/routes/settings/style.less @@ -0,0 +1,60 @@ +@import '~style/helpers'; + +.view { + position: absolute; + top: 45px; + bottom: 0; + left: 0; + right: 0; + padding: 0 5%; + text-align: left; + font-size: 1.25em; + overflow: auto; +} + +.view p { + margin: 5% 0; + max-width: 50%; + color: var(--text-message-color); + line-height: 1.5; +} + +.view .focus { + color: #c8d6e5; + font-weight: bold; +} + +.view button { + display: inline-block; +} + +.view footer { + font-size: 0.9em; + width: 100%; + position: absolute; + bottom: 0; + left: 0; + margin: 32px auto; + color: var(--text-message-color); +} + +.view footer a { + margin: 0 4px; +} + +@media (max-width: 400px) { + .view { + font-size: 14px; + } + .view p { + max-width: 100%; + } + + .view button { + font-size: 14px; + } + + .view footer { + font-size: 14px; + } +} From 71671d0a2057a3309469205569fe872766fecb8e Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 15:19:17 -0700 Subject: [PATCH 18/49] add simple slider menu --- src/components/app.js | 4 +- src/components/menu/index.js | 54 +++++++++++++-------------- src/components/menu/style.less | 52 ++++++++++++++++++++++---- src/routes/{file => files}/index.js | 2 +- src/routes/{file => files}/style.less | 0 src/routes/library/index.js | 3 +- src/routes/welcome/index.js | 2 +- 7 files changed, 76 insertions(+), 41 deletions(-) rename src/routes/{file => files}/index.js (97%) rename src/routes/{file => files}/style.less (100%) diff --git a/src/components/app.js b/src/components/app.js index 8f6f973..3fc9151 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -1,7 +1,7 @@ import { h, Component } from 'preact' import { Router } from 'preact-router' -import File from '../routes/file' +import Files from '../routes/files' import Welcome from '../routes/welcome' import Library from '../routes/library' import Settings from '../routes/settings' @@ -19,7 +19,7 @@ export default class App extends Component { - + diff --git a/src/components/menu/index.js b/src/components/menu/index.js index af45a57..a55a57d 100644 --- a/src/components/menu/index.js +++ b/src/components/menu/index.js @@ -8,18 +8,31 @@ import * as actions from '../../actions' import { toggleFullScreen } from '../../lib/utility' import Icon from '../../components/icon' -const Item = ({ label, icon, href, onClick }) => { +const Item = ({ id, label, icon, href, onClick }) => { const action = event => onClick && onClick(event) return ( -
- {icon && } +
+ {icon && } {label}
) } +const Slider = props => { + return ( +
+
+ + + + +
+
+ ) +} + // Internal button const Button = ({ label, icon, onClick }) => { const action = event => onClick && onClick(event) @@ -45,42 +58,29 @@ const TestData = { @connect(reduce, bindActions(actions)) export default class Menu extends Component { state = { - is_showing_settings: false, - is_showing_library: false, + openSlider: false, } onBtnFullScreen = () => { toggleFullScreen() } - /* - onbtnOpenFile = () => { - alert("FIXME: onbtnOpenFile"); - this.setState({ text: 'ADD_COMIC' }); - console.log(this.state.text); - } - - onBtnSettings = () => { - this.setState(prevState => ({ is_showing_settings: !prevState.is_showing_settings })); - this.setState({ is_showing_library: false }); - } - onBtnLibrary = () => { - this.setState(prevState => ({ is_showing_library: !prevState.is_showing_library })); - this.setState({ is_showing_settings: false }); - } + toggleSlider = () => { + this.setState(prevState => ({ openSlider: !prevState.openSlider })) + } - -

+

@@ -67,14 +65,8 @@ export default class Settings extends Component { ...

-

- -

-

- -

+ +
) diff --git a/src/style/index.less b/src/style/index.less index 83460ff..c516fbf 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -31,6 +31,11 @@ a { color: var(--link-color); } +hr { + border-color: var(--text-message-color); + opacity: 0.5; +} + /* Make scroll bars small and blue on Chrome */ ::-webkit-scrollbar { height: 5px; From 7cbf9d754f8d1d13d1d42a071769f78d128e68f6 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 20:07:15 -0700 Subject: [PATCH 25/49] update settings styles --- src/components/checkbox/index.js | 19 ++++++ src/components/checkbox/style.less | 74 +++++++++++++++++++++++ src/components/comic-check-box/index.js | 18 ------ src/components/comic-check-box/style.less | 57 ----------------- src/routes/settings/index.js | 19 +++--- src/routes/settings/style.less | 27 +-------- src/style/index.less | 6 +- 7 files changed, 108 insertions(+), 112 deletions(-) create mode 100644 src/components/checkbox/index.js create mode 100644 src/components/checkbox/style.less delete mode 100644 src/components/comic-check-box/index.js delete mode 100644 src/components/comic-check-box/style.less diff --git a/src/components/checkbox/index.js b/src/components/checkbox/index.js new file mode 100644 index 0000000..8a05fe2 --- /dev/null +++ b/src/components/checkbox/index.js @@ -0,0 +1,19 @@ +import { h, Component } from 'preact' +import style from './style' + +export default class ComicCheckBox extends Component { + state = {} + + componentDidMount() {} + + render() { + let { props, state } = this + return ( + + ) + } +} diff --git a/src/components/checkbox/style.less b/src/components/checkbox/style.less new file mode 100644 index 0000000..4f48ef6 --- /dev/null +++ b/src/components/checkbox/style.less @@ -0,0 +1,74 @@ +.checkbox { + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.checkbox input { + position: absolute; + opacity: 0; + cursor: pointer; +} + +.checkbox .label { + padding: 16px; + opacity: 0.75; + display: inline-block; + vertical-align: middle; +} + +.mark { + display: inline-block; + vertical-align: middle; + height: 24px; + width: 24px; + margin: 0; + padding: 0; + border-radius: 3px; + background-color: var(--text-message-color); + opacity: 0.5; + margin: 12px 0; + float: left; + transition: all 0.2s; +} + +.checkbox input:checked~.mark { + background-color: var(--main-color); + opacity: 1; +} + +/* Add the following css rule: */ +.checkbox input:checked~.label { + opacity: 1; + color: var(--text-color); +} + +.mark:after { + content: ""; + position: absolute; + display: none; +} + +.checkbox input:checked~.mark { + opacity: 1; +} + +.checkbox input:checked~.mark:after { + display: block; +} + +.checkbox .mark:after { + position: relative; + left: 7px; + top: 2px; + width: 9px; + height: 15px; + border: solid white; + border-width: 0 3px 3px 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} diff --git a/src/components/comic-check-box/index.js b/src/components/comic-check-box/index.js deleted file mode 100644 index c961b77..0000000 --- a/src/components/comic-check-box/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import { h, Component } from 'preact' -import style from './style' - -export default class ComicCheckBox extends Component { - state = {} - - componentDidMount() {} - - render() { - let { props, state } = this - return ( -
- - -
- ) - } -} diff --git a/src/components/comic-check-box/style.less b/src/components/comic-check-box/style.less deleted file mode 100644 index 54156b1..0000000 --- a/src/components/comic-check-box/style.less +++ /dev/null @@ -1,57 +0,0 @@ -.comic_check_box { -} - -.comic_check_box label { - display: block; - position: relative; - margin: 10px 0; - padding-left: 5vmin; - font-size: 4vmin; - cursor: pointer; -} - -.comic_check_box label::before, -.comic_check_box label::after { - position: absolute; - top: 0; - left: 0; - content: ''; -} - -.comic_check_box label::before { - display: block; - width: 3.5vmin; - height: 3.5vmin; - border: 0.5vmin solid white; - margin: 0; - padding: 0; -} - -.comic_check_box label::after { - display: none; - width: 2vmin; - height: 2vmin; - margin: 0; - padding: 0; - top: 0.75vmin; - left: 0.75vmin; - background-color: #61afef; -} - -.comic_check_box input[type='radio'] + label::before, -.comic_check_box input[type='radio'] + label::after { - border-radius: 50%; -} - -.comic_check_box input[type='checkbox'] { - position: absolute; - left: -999px; -} - -.comic_check_box input:focus + label::before { - border-color: #61afef; -} - -.comic_check_box input:checked + label::after { - display: block; -} diff --git a/src/routes/settings/index.js b/src/routes/settings/index.js index 93b5cc1..b189f0c 100644 --- a/src/routes/settings/index.js +++ b/src/routes/settings/index.js @@ -1,7 +1,7 @@ import { h, Component } from 'preact' import style from './style' import Button from '../../components/button' -import ComicCheckBox from '../../components/comic-check-box' +import CheckBox from '../../components/checkbox' import { route } from 'preact-router' @@ -35,20 +35,20 @@ export default class Settings extends Component {


- Allow right click + Allow right click

- Check for updates + Check for updates

- + Use higher quality page previews - +

- + Use smoothing when resizing images - +


@@ -56,8 +56,9 @@ export default class Settings extends Component { . . . +

- +

@@ -65,8 +66,6 @@ export default class Settings extends Component { ...

- -
) diff --git a/src/routes/settings/style.less b/src/routes/settings/style.less index 6011b73..9dc2f79 100644 --- a/src/routes/settings/style.less +++ b/src/routes/settings/style.less @@ -4,42 +4,19 @@ bottom: 0; left: 0; right: 0; - padding: 0 5%; + padding: 0 2%; text-align: left; - font-size: 1.25em; overflow: auto; } -.view p { - margin: 5% 0; - max-width: 50%; +.view p {; color: var(--text-message-color); - line-height: 1.5; -} - -.view .focus { - color: #c8d6e5; - font-weight: bold; } .view button { display: inline-block; } -.view footer { - font-size: 0.9em; - width: 100%; - position: absolute; - bottom: 0; - left: 0; - margin: 32px auto; - color: var(--text-message-color); -} - -.view footer a { - margin: 0 4px; -} - @media (max-width: 400px) { .view { font-size: 14px; diff --git a/src/style/index.less b/src/style/index.less index c516fbf..a1dd987 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -32,8 +32,10 @@ a { } hr { - border-color: var(--text-message-color); - opacity: 0.5; + border: 0; + height: 2px; + background: var(--text-message-color); + opacity: 0.25; } /* Make scroll bars small and blue on Chrome */ From be0cbd981ff5118a1786c7cc2e3e1d32c6662f3f Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 20:11:31 -0700 Subject: [PATCH 26/49] update template --- src/index.html | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/index.html b/src/index.html index a1e333d..3af6e8f 100644 --- a/src/index.html +++ b/src/index.html @@ -24,12 +24,6 @@ e = e || event; e.preventDefault(); },false); - // Stop the right click menu from popping up - window.addEventListener('contextmenu', function(e) { - if (! settings_get_right_click_enabled()) { - e.preventDefault(); - } - }); // Resize everything when the browser resizes window.addEventListener('resize', function() { let width = window.innerWidth; From 5bf26ef13a607bd9d5dfb5444cc83d61a9f71bca Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 20:18:41 -0700 Subject: [PATCH 27/49] disable unused options in settings --- src/routes/settings/index.js | 9 +++++---- src/routes/settings/style.less | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/routes/settings/index.js b/src/routes/settings/index.js index b189f0c..c6204b2 100644 --- a/src/routes/settings/index.js +++ b/src/routes/settings/index.js @@ -19,6 +19,7 @@ export default class Settings extends Component {

Settings

+ { /*

+ */}

Allow right click @@ -54,16 +56,15 @@ export default class Settings extends Component {

- . . . + 0 -

- +

- ... + 0.0.1

diff --git a/src/routes/settings/style.less b/src/routes/settings/style.less index 9dc2f79..5fd6c17 100644 --- a/src/routes/settings/style.less +++ b/src/routes/settings/style.less @@ -15,6 +15,7 @@ .view button { display: inline-block; + margin: 16px 0; } @media (max-width: 400px) { From 66102497787443e868ea6752033c38bbc636b804 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 21:27:22 -0700 Subject: [PATCH 28/49] test browser features --- src/components/app.js | 38 ++++- src/routes/unsupported/index.js | 21 +++ src/routes/unsupported/style.less | 62 ++++++++ src/utils/browser.js | 229 +++++++++++------------------- 4 files changed, 198 insertions(+), 152 deletions(-) create mode 100644 src/routes/unsupported/index.js create mode 100644 src/routes/unsupported/style.less diff --git a/src/components/app.js b/src/components/app.js index 3fc9151..698a58e 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -1,27 +1,53 @@ import { h, Component } from 'preact' -import { Router } from 'preact-router' +import { Router, route } from 'preact-router' +import { requireBrowserFeatures } from '../utils/browser' -import Files from '../routes/files' +import Files from '../routes/settings' import Welcome from '../routes/welcome' import Library from '../routes/library' import Settings from '../routes/settings' +// Errors +import Unsupported from '../routes/unsupported' + import Menu from './menu' export default class App extends Component { - handleRoute = e => { - this.currentUrl = e.url + state = { + currentRoute: null, + compatible: true, + } + + componentDidMount() { + this.hasErrors() + } + + hasErrors = () => { + // Test browser features + requireBrowserFeatures((errors, warnings) => { + errors.length > 0 && this.setState({ compatible: false }) + }) + } + + handleRoute = page => { + const { compatible } = this.state + this.setState({ currentRoute: page }) + // Redirect to error + !compatible && route('/unsupported') + // Redirect to welcome page + page.url === '/unsupported' && compatible && route('/') } render() { return (
- + {this.state.compatible && } - + +
) diff --git a/src/routes/unsupported/index.js b/src/routes/unsupported/index.js new file mode 100644 index 0000000..d643376 --- /dev/null +++ b/src/routes/unsupported/index.js @@ -0,0 +1,21 @@ +import { h, Component } from 'preact' +import style from './style' + +export default class Unsupported extends Component { + render() { + return ( +
+ ) + } +} diff --git a/src/routes/unsupported/style.less b/src/routes/unsupported/style.less new file mode 100644 index 0000000..3feb2d6 --- /dev/null +++ b/src/routes/unsupported/style.less @@ -0,0 +1,62 @@ +.view { + position: absolute; + top: 45px; + bottom: 0; + left: 0; + right: 0; + padding: 0 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 1.25em; + overflow: auto; +} + +.view p { + margin: 5% 0; + max-width: 50%; + color: var(--text-message-color); + line-height: 1.5; +} + +.view .focus { + color: #c8d6e5; + font-weight: bold; +} + +.view button { + width: 100%; +} + +.view footer { + font-size: 0.9em; + width: 100%; + position: absolute; + bottom: 0; + left: 0; + margin: 32px auto; + color: var(--text-message-color); +} + +.view footer a { + margin: 0 4px; +} + +@media (max-width: 400px) { + .view { + font-size: 14px; + } + .view p { + max-width: 100%; + } + + .view button { + font-size: 14px; + } + + .view footer { + font-size: 14px; + } +} diff --git a/src/utils/browser.js b/src/utils/browser.js index 509b979..dd7c914 100644 --- a/src/utils/browser.js +++ b/src/utils/browser.js @@ -1,154 +1,91 @@ //https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API export function toggleFullScreen() { - if (!document.fullscreenElement && - !document.mozFullScreenElement && - !document.webkitFullscreenElement && - !document.msFullscreenElement) { - console.info('Calling full screen ................'); - if (document.documentElement.requestFullscreen) { - document.documentElement.requestFullscreen(); - } else if (document.documentElement.msRequestFullscreen) { - document.documentElement.msRequestFullscreen(); - } else if (document.documentElement.mozRequestFullScreen) { - document.documentElement.mozRequestFullScreen(); - } else if (document.documentElement.webkitRequestFullscreen) { - document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } - } else { - console.info('Calling exit full screen ................'); - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitExitFullscreen) { - document.webkitExitFullscreen(); - } - } + if ( + !document.fullscreenElement && + !document.mozFullScreenElement && + !document.webkitFullscreenElement && + !document.msFullscreenElement + ) { + console.info('Calling full screen ................') + if (document.documentElement.requestFullscreen) { + document.documentElement.requestFullscreen() + } else if (document.documentElement.msRequestFullscreen) { + document.documentElement.msRequestFullscreen() + } else if (document.documentElement.mozRequestFullScreen) { + document.documentElement.mozRequestFullScreen() + } else if (document.documentElement.webkitRequestFullscreen) { + document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } + } else { + console.info('Calling exit full screen ................') + if (document.exitFullscreen) { + document.exitFullscreen() + } else if (document.msExitFullscreen) { + document.msExitFullscreen() + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen() + } + } } - // Show an error message if any required browser features are missing export function requireBrowserFeatures(cb) { - let errors = []; - if ( !('transform' in document.body.style)) { - errors.push('CSS transform'); - } - if (typeof Blob === 'undefined') { - errors.push('Blob'); - } - if (typeof Object === 'undefined' || typeof Object.defineProperty === 'undefined') { - errors.push('Object defineProperty'); - } - if (typeof Object === 'undefined' || typeof Object.hasOwnProperty === 'undefined') { - errors.push('Object hasOwnProperty'); - } - if (typeof window.HTMLCanvasElement === 'undefined' || - typeof window.HTMLCanvasElement.prototype.getContext === 'undefined') { - errors.push('Canvas Context'); - } - if (typeof Uint8Array === 'undefined') { - errors.push('Uint8Array'); - } - if (typeof indexedDB === 'undefined') { - errors.push('Indexed DB'); - } - if (typeof localStorage === 'undefined') { - errors.push('Local Storage'); - } - if (typeof Worker === 'undefined') { - errors.push('Web Worker'); - } - if (typeof URL === 'undefined' || typeof URL.createObjectURL === 'undefined') { - errors.push('Create Object URL'); - } - if (typeof URL === 'undefined' || typeof URL.revokeObjectURL === 'undefined') { - errors.push('Revoke Object URL'); - } - if (typeof JSON === 'undefined' || typeof JSON.stringify === 'undefined') { - errors.push('JSON Stringify'); - } - if (typeof JSON === 'undefined' || typeof JSON.parse === 'undefined') { - errors.push('JSON Parse'); - } - if (typeof FileReader === 'undefined') { - errors.push('File Reader'); - } - if (typeof document.documentElement.requestFullscreen === 'undefined' && - typeof document.documentElement.msRequestFullscreen === 'undefined' && - typeof document.documentElement.mozRequestFullScreen === 'undefined' && - typeof document.documentElement.webkitRequestFullscreen === 'undefined') { - errors.push('Request Full Screen'); - } - - function hasErrors(errors) { - if (errors.length > 0) { - let message = '
'; - message += '

Your browser is missing features required to run this program:

'; - for (let i=0; i'); - } - message += '
'; - //document.body.innerHTML = message; - return true; - } - - return false; - } + let errors = [] + if (!('transform' in document.body.style)) { + errors.push('CSS transform') + } + if (typeof Blob === 'undefined') { + errors.push('Blob') + } + if (typeof Object === 'undefined' || typeof Object.defineProperty === 'undefined') { + errors.push('Object defineProperty') + } + if (typeof Object === 'undefined' || typeof Object.hasOwnProperty === 'undefined') { + errors.push('Object hasOwnProperty') + } + if ( + typeof window.HTMLCanvasElement === 'undefined' || + typeof window.HTMLCanvasElement.prototype.getContext === 'undefined' + ) { + errors.push('Canvas Context') + } + if (typeof Uint8Array === 'undefined') { + errors.push('Uint8Array') + } + if (typeof indexedDB === 'undefined') { + errors.push('Indexed DB') + } + if (typeof localStorage === 'undefined') { + errors.push('Local Storage') + } + if (typeof Worker === 'undefined') { + errors.push('Web Worker') + } + if (typeof URL === 'undefined' || typeof URL.createObjectURL === 'undefined') { + errors.push('Create Object URL') + } + if (typeof URL === 'undefined' || typeof URL.revokeObjectURL === 'undefined') { + errors.push('Revoke Object URL') + } + if (typeof JSON === 'undefined' || typeof JSON.stringify === 'undefined') { + errors.push('JSON Stringify') + } + if (typeof JSON === 'undefined' || typeof JSON.parse === 'undefined') { + errors.push('JSON Parse') + } + if (typeof FileReader === 'undefined') { + errors.push('File Reader') + } + if ( + typeof document.documentElement.requestFullscreen === 'undefined' && + typeof document.documentElement.msRequestFullscreen === 'undefined' && + typeof document.documentElement.mozRequestFullScreen === 'undefined' && + typeof document.documentElement.webkitRequestFullscreen === 'undefined' + ) { + errors.push('Request Full Screen') + } - if (! hasErrors(errors)) { - // Test the Web Workers requirements - let worker = new Worker('./lib/ws/test_requirements_worker.js'); - worker.onmessage = function(e) { - if (e.data.action === 'test_requirements') { - let errors = e.data.errors; - if (! hasErrors(errors)) { - // Test Web Workers for transferable objects - let array_buffer = new ArrayBuffer(1); - let message = { - action: 'test_transferable_objects', - array_buffer: array_buffer - }; - worker.postMessage(message, [array_buffer]); - if (array_buffer.byteLength !== 0) { - errors = ['Transferable Object']; - hasErrors(errors); - } - } - } - }; - - let message = { - action: 'test_requirements' - }; - worker.postMessage(message); - } - - cb(); + cb(errors) } - -/* -const test = () => requireBrowserFeatures(function() { - // Start the service worker - if (g_use_service_worker && 'serviceWorker' in navigator) { - navigator.serviceWorker.register('./lib/ws/service_worker.js', { scope: '/' }).then(function(reg) { - if (reg.installing) { - console.log('Service worker installing'); - } else if (reg.waiting) { - console.log('Service worker installed'); - } else if (reg.active) { - console.log('Service worker active'); - } - //main() - }).catch(function(error) { - console.error('Failed to register service worker: '); - console.error(error); - }); - } else { - console.info('Service workers are not supported ...'); - PDFJS.disableWorker = true; - //main(); - } -}); -*/ From 08a17417ca24da25debf7a2bc796d5a8a0ce81eb Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 21:47:11 -0700 Subject: [PATCH 29/49] drop redux -> unistore --- package.json | 11 +--- src/components/menu/index.js | 12 ++-- src/index.js | 2 +- src/lib/settings.js | 118 +++++++++++++++++++++++++++++++++++ src/store.js | 33 ++-------- src/util.js | 8 +-- yarn.lock | 29 ++------- 7 files changed, 137 insertions(+), 76 deletions(-) create mode 100644 src/lib/settings.js diff --git a/package.json b/package.json index 20ab924..5ccf1f3 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,7 @@ "version": "0.1.0", "description": "A browser based touch friendly comic book reader", "homepage": "https://github.com/workhorsy/comic_book_reader", - "keywords": [ - "comics" - ], + "keywords": ["comics"], "author": "Matthew Brennan Jones ", "license": "AGPL-3.0", "main": "index.js", @@ -38,9 +36,7 @@ } } }, - "eslintIgnore": [ - "src/lib/*" - ], + "eslintIgnore": ["src/lib/*"], "devDependencies": { "eslint": "^4.2.0", "eslint-config-synacor": "^1.0.1", @@ -55,8 +51,7 @@ "dependencies": { "preact": "^8.2.7", "preact-compat": "^3.18.0", - "preact-redux": "^2.0.3", "preact-router": "^2.6.0", - "redux": "^3.7.2" + "unistore": "^3.0.4" } } diff --git a/src/components/menu/index.js b/src/components/menu/index.js index 9182a4f..920f3f1 100644 --- a/src/components/menu/index.js +++ b/src/components/menu/index.js @@ -1,8 +1,5 @@ import { h, Component } from 'preact' import { Link } from 'preact-router/match' -import { connect } from 'preact-redux' -import { bindActions } from '../../util' -import reduce from '../../reducers' import style from './style' import * as actions from '../../actions' import Icon from '../../components/icon' @@ -10,10 +7,10 @@ import Icon from '../../components/icon' const Item = ({ id, label, icon, href, onClick }) => { const action = event => onClick && onClick(event) return ( - - {icon && } - {label} - + + {icon && } + {label} + ) } @@ -52,7 +49,6 @@ const TestData = { ], } -@connect(reduce, bindActions(actions)) export default class Menu extends Component { state = { openSlider: false, diff --git a/src/index.js b/src/index.js index 0b5fc4e..1470284 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import { h, render } from 'preact' -import { Provider } from 'preact-redux' +import { Provider } from 'unistore/preact' import store from './store' import App from './components/app' import './style' diff --git a/src/lib/settings.js b/src/lib/settings.js new file mode 100644 index 0000000..fbdd611 --- /dev/null +++ b/src/lib/settings.js @@ -0,0 +1,118 @@ +// Copyright (c) 2017 Matthew Brennan Jones +// This software is licensed under AGPL v3 or later +// http://github.com/workhorsy/comic_book_reader +"use strict"; + +function generate_random_user_id() { + // Get a 18 character user id + const code_table = "0123456789"; + let user_id = ""; + for (let i = 0; i < 18; ++i) { + // Get a random number between 0 and 10 + const num = Math.floor((Math.random() * code_table.length)); + + // Get the character that corresponds to the number + user_id += code_table[num]; + } + + return user_id; +} + +function settings_delete_all() { + localStorage.removeItem('is_first_run'); + localStorage.removeItem('use_higher_quality_previews'); + localStorage.removeItem('use_smoothing_when_resizing_images'); + localStorage.removeItem('install_updates_enabled'); + localStorage.removeItem('right_click_enabled'); + localStorage.removeItem('db_names'); +} + +function settings_set(name, value) { + localStorage.setItem(name, JSON.stringify(value)); +} + +function settings_get(name, default_value) { + let value = localStorage.getItem(name); + if (value) { + return JSON.parse(value); + } else { + return default_value; + } +} + +function settings_has(name) { + let value = localStorage.getItem(name); + if (value) { + return true; + } else { + return false; + } +} + +function settings_get_is_first_run() { + return settings_get('is_first_run', true); +} + +function settings_set_is_first_run(value) { + settings_set('is_first_run', value); +} + +function settings_get_use_higher_quality_previews() { + return settings_get('use_higher_quality_previews', false); +} + +function settings_set_use_higher_quality_previews(value) { + settings_set('use_higher_quality_previews', value); +} + +function settings_get_use_smoothing_when_resizing_images() { + return settings_get('use_smoothing_when_resizing_images', true); +} + +function settings_set_use_smoothing_when_resizing_images(value) { + settings_set('use_smoothing_when_resizing_images', value); +} + +function settings_get_install_updates_enabled() { + return settings_get('install_updates_enabled', true); +} + +function settings_set_install_updates_enabled(value) { + settings_set('install_updates_enabled', value); +} + +function settings_get_right_click_enabled() { + return settings_get('right_click_enabled', false); +} + +function settings_set_right_click_enabled(value) { + settings_set('right_click_enabled', value); +} + +function settings_get_db_names() { + return settings_get('db_names', []); +} + +function settings_set_db_names(value) { + value.sort(); + settings_set('db_names', value); +} + +function settings_get_user_id() { + // Get or create the user id + let user_id = null; + if (! settings_has('user_id')) { + user_id = generate_random_user_id(); + settings_set('user_id', user_id); + } + user_id = settings_get('user_id'); + + // If the user id is longer than 18 characters, get a new one + if (user_id.length > 18) { + console.warn('The user_id was too long. Making a new one.'); + user_id = generate_random_user_id(); + settings_set('user_id', user_id); + } + + return user_id; +} diff --git a/src/store.js b/src/store.js index e0cd551..85aa2ea 100644 --- a/src/store.js +++ b/src/store.js @@ -1,31 +1,6 @@ -import { createStore } from 'redux' +import { createStore, connect } from 'unistore/full/preact' -let ACTIONS = { - ADD_COMIC: ({ comics, ...state }, { text }) => ({ - comics: [ - ...comics, - { - id: Math.random() - .toString(36) - .substring(2), - text, - }, - ], - ...state, - }), +// Set initialState +const initialState = { count: 0 } - REMOVE_COMIC: ({ comics, ...state }, { comic }) => ({ - comics: comics.filter(i => i !== comic), - ...state, - }), -} - -const INITIAL = { - comics: [], -} - -export default createStore( - (state, action) => (action && ACTIONS[action.type] ? ACTIONS[action.type](state, action) : state), - INITIAL, - window.devToolsExtension && window.devToolsExtension() -) +export default createStore(initialState) diff --git a/src/util.js b/src/util.js index e17b9b2..d97d4bf 100644 --- a/src/util.js +++ b/src/util.js @@ -1,7 +1 @@ -import { bindActionCreators } from 'redux' - -export function bindActions(actions) { - return dispatch => ({ - ...bindActionCreators(actions, dispatch), - }) -} +/* REMOVE */ diff --git a/yarn.lock b/yarn.lock index d292dca..e21a723 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4302,10 +4302,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash-es@^4.2.1: - version "4.17.8" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.8.tgz#6fa8c8c5d337481df0bdf1c0d899d42473121e45" - lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -4426,7 +4422,7 @@ lodash@^3.6.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: +lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -4451,7 +4447,7 @@ longest@^1.0.0, longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: @@ -5679,10 +5675,6 @@ preact-compat@^3.14.3, preact-compat@^3.18.0: prop-types "^15.5.8" standalone-react-addons-pure-render-mixin "^0.1.1" -preact-redux@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/preact-redux/-/preact-redux-2.0.3.tgz#960a535c322643cd35998f33f0c2e67bc1e7eaab" - preact-render-to-string@^3.6.0: version "3.7.0" resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-3.7.0.tgz#7db4177454bc01395e0d01d6ac07bc5e838e31ee" @@ -6032,15 +6024,6 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -redux@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" - regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" @@ -6921,10 +6904,6 @@ sw-toolbox@^3.4.0: path-to-regexp "^1.0.1" serviceworker-cache-polyfill "^4.0.0" -symbol-observable@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -7254,6 +7233,10 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +unistore@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/unistore/-/unistore-3.0.4.tgz#e7304ee8c43c3ae31751ea733ea22ab63841d672" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" From f0b90d4726061d1341b0be021e94168104917def Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 23:08:05 -0700 Subject: [PATCH 30/49] first attemp to connect settings --- src/components/app/index.js | 4 + src/components/{app.js => app/view.jsx} | 18 ++-- src/components/menu/index.js | 1 - src/index.js | 2 +- src/lib/settings.js | 118 ------------------------ src/settings.js | 48 ++++++++++ src/store.js | 6 -- src/{ => unistore}/actions.js | 0 src/{ => unistore}/reducers.js | 0 src/unistore/store.js | 11 +++ src/util.js | 1 - src/utils/random.js | 14 +++ 12 files changed, 89 insertions(+), 134 deletions(-) create mode 100644 src/components/app/index.js rename src/components/{app.js => app/view.jsx} (73%) delete mode 100644 src/lib/settings.js create mode 100644 src/settings.js delete mode 100644 src/store.js rename src/{ => unistore}/actions.js (100%) rename src/{ => unistore}/reducers.js (100%) create mode 100644 src/unistore/store.js delete mode 100644 src/util.js create mode 100644 src/utils/random.js diff --git a/src/components/app/index.js b/src/components/app/index.js new file mode 100644 index 0000000..b75913b --- /dev/null +++ b/src/components/app/index.js @@ -0,0 +1,4 @@ +import { connect } from 'unistore/preact' +import App from './view.jsx'; + +export default connect('settings')(App); diff --git a/src/components/app.js b/src/components/app/view.jsx similarity index 73% rename from src/components/app.js rename to src/components/app/view.jsx index 698a58e..2bd5c2e 100644 --- a/src/components/app.js +++ b/src/components/app/view.jsx @@ -1,16 +1,18 @@ import { h, Component } from 'preact' import { Router, route } from 'preact-router' -import { requireBrowserFeatures } from '../utils/browser' +import { requireBrowserFeatures } from '../../utils/browser' -import Files from '../routes/settings' -import Welcome from '../routes/welcome' -import Library from '../routes/library' -import Settings from '../routes/settings' +// Routes +import Files from '../../routes/settings' +import Welcome from '../../routes/welcome' +import Library from '../../routes/library' +import Settings from '../../routes/settings' // Errors -import Unsupported from '../routes/unsupported' +import Unsupported from '../../routes/unsupported' -import Menu from './menu' +// Components +import Menu from '../menu' export default class App extends Component { state = { @@ -19,6 +21,8 @@ export default class App extends Component { } componentDidMount() { + // Test settings + console.log(this.props.settings); this.hasErrors() } diff --git a/src/components/menu/index.js b/src/components/menu/index.js index 920f3f1..dbca87f 100644 --- a/src/components/menu/index.js +++ b/src/components/menu/index.js @@ -1,7 +1,6 @@ import { h, Component } from 'preact' import { Link } from 'preact-router/match' import style from './style' -import * as actions from '../../actions' import Icon from '../../components/icon' const Item = ({ id, label, icon, href, onClick }) => { diff --git a/src/index.js b/src/index.js index 1470284..485ab09 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ import { h, render } from 'preact' import { Provider } from 'unistore/preact' -import store from './store' +import store from './unistore/store' import App from './components/app' import './style' diff --git a/src/lib/settings.js b/src/lib/settings.js deleted file mode 100644 index fbdd611..0000000 --- a/src/lib/settings.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright (c) 2017 Matthew Brennan Jones -// This software is licensed under AGPL v3 or later -// http://github.com/workhorsy/comic_book_reader -"use strict"; - -function generate_random_user_id() { - // Get a 18 character user id - const code_table = "0123456789"; - let user_id = ""; - for (let i = 0; i < 18; ++i) { - // Get a random number between 0 and 10 - const num = Math.floor((Math.random() * code_table.length)); - - // Get the character that corresponds to the number - user_id += code_table[num]; - } - - return user_id; -} - -function settings_delete_all() { - localStorage.removeItem('is_first_run'); - localStorage.removeItem('use_higher_quality_previews'); - localStorage.removeItem('use_smoothing_when_resizing_images'); - localStorage.removeItem('install_updates_enabled'); - localStorage.removeItem('right_click_enabled'); - localStorage.removeItem('db_names'); -} - -function settings_set(name, value) { - localStorage.setItem(name, JSON.stringify(value)); -} - -function settings_get(name, default_value) { - let value = localStorage.getItem(name); - if (value) { - return JSON.parse(value); - } else { - return default_value; - } -} - -function settings_has(name) { - let value = localStorage.getItem(name); - if (value) { - return true; - } else { - return false; - } -} - -function settings_get_is_first_run() { - return settings_get('is_first_run', true); -} - -function settings_set_is_first_run(value) { - settings_set('is_first_run', value); -} - -function settings_get_use_higher_quality_previews() { - return settings_get('use_higher_quality_previews', false); -} - -function settings_set_use_higher_quality_previews(value) { - settings_set('use_higher_quality_previews', value); -} - -function settings_get_use_smoothing_when_resizing_images() { - return settings_get('use_smoothing_when_resizing_images', true); -} - -function settings_set_use_smoothing_when_resizing_images(value) { - settings_set('use_smoothing_when_resizing_images', value); -} - -function settings_get_install_updates_enabled() { - return settings_get('install_updates_enabled', true); -} - -function settings_set_install_updates_enabled(value) { - settings_set('install_updates_enabled', value); -} - -function settings_get_right_click_enabled() { - return settings_get('right_click_enabled', false); -} - -function settings_set_right_click_enabled(value) { - settings_set('right_click_enabled', value); -} - -function settings_get_db_names() { - return settings_get('db_names', []); -} - -function settings_set_db_names(value) { - value.sort(); - settings_set('db_names', value); -} - -function settings_get_user_id() { - // Get or create the user id - let user_id = null; - if (! settings_has('user_id')) { - user_id = generate_random_user_id(); - settings_set('user_id', user_id); - } - user_id = settings_get('user_id'); - - // If the user id is longer than 18 characters, get a new one - if (user_id.length > 18) { - console.warn('The user_id was too long. Making a new one.'); - user_id = generate_random_user_id(); - settings_set('user_id', user_id); - } - - return user_id; -} diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 0000000..5cd242c --- /dev/null +++ b/src/settings.js @@ -0,0 +1,48 @@ +export const defaultSettings = { + 'theme': 'dark', + 'is_first_run': true, + 'use_higher_quality_previews': false, + 'use_smoothing_when_resizing_images': false, + 'right_click_enabled': false, + 'db_names': null, +}; + +export function settingsSet(name, value) { + localStorage.setItem(name, JSON.stringify(value)); +} + +export function settingsGet(name) { + let value = localStorage.getItem(name); + if (value) { + return JSON.parse(value); + } else { + return defaultSettings[name]; + } +} + +export function settingsSetAll() { + // Set settings to default + Object.entries(defaultSettings).forEach(([key, value]) => { + settingsSet(key, value); + }); +} + +export function settingsGetAll() { + // Get all settings from localStorage + let settings = {}; + Object.entries(defaultSettings).forEach(([key, value]) => { + settings[key] = settingsGet(key, value); + }); + // If no previous settings found set to default + if (!Object.entries(settings).length) { + settingsSetAll(); + return defaultSettings; + } + return settings; +} + +export function settingsResetAll() { + // Clear localStorage and set to default + localStorage.clear(); + settingsSetAll(); +} diff --git a/src/store.js b/src/store.js deleted file mode 100644 index 85aa2ea..0000000 --- a/src/store.js +++ /dev/null @@ -1,6 +0,0 @@ -import { createStore, connect } from 'unistore/full/preact' - -// Set initialState -const initialState = { count: 0 } - -export default createStore(initialState) diff --git a/src/actions.js b/src/unistore/actions.js similarity index 100% rename from src/actions.js rename to src/unistore/actions.js diff --git a/src/reducers.js b/src/unistore/reducers.js similarity index 100% rename from src/reducers.js rename to src/unistore/reducers.js diff --git a/src/unistore/store.js b/src/unistore/store.js new file mode 100644 index 0000000..b710f69 --- /dev/null +++ b/src/unistore/store.js @@ -0,0 +1,11 @@ +import { createStore, connect } from 'unistore/full/preact' +import { settingsGetAll } from '../settings.js'; + +// Set initialState +const initialState = { count: 0 }; + +// Load settings +initialState.settings = settingsGetAll(); + +// Create store +export default createStore(initialState); diff --git a/src/util.js b/src/util.js deleted file mode 100644 index d97d4bf..0000000 --- a/src/util.js +++ /dev/null @@ -1 +0,0 @@ -/* REMOVE */ diff --git a/src/utils/random.js b/src/utils/random.js new file mode 100644 index 0000000..93a4ed7 --- /dev/null +++ b/src/utils/random.js @@ -0,0 +1,14 @@ +export function generateId() { + // Get a 18 character user id + const code_table = "0123456789"; + let user_id = ""; + for (let i = 0; i < 18; ++i) { + // Get a random number between 0 and 10 + const num = Math.floor((Math.random() * code_table.length)); + + // Get the character that corresponds to the number + user_id += code_table[num]; + } + + return user_id; +} From c7b655149889bc7f0f0e5fbab2bee18ee85d43d7 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sat, 31 Mar 2018 23:50:31 -0700 Subject: [PATCH 31/49] test updated settings --- src/components/app/view.jsx | 4 +- src/components/checkbox/index.js | 26 +++++++--- src/routes/settings/index.js | 77 ++-------------------------- src/routes/settings/view.jsx | 87 ++++++++++++++++++++++++++++++++ src/unistore/actions.js | 22 ++++---- 5 files changed, 123 insertions(+), 93 deletions(-) create mode 100644 src/routes/settings/view.jsx diff --git a/src/components/app/view.jsx b/src/components/app/view.jsx index 2bd5c2e..796aad9 100644 --- a/src/components/app/view.jsx +++ b/src/components/app/view.jsx @@ -3,7 +3,7 @@ import { Router, route } from 'preact-router' import { requireBrowserFeatures } from '../../utils/browser' // Routes -import Files from '../../routes/settings' +import Files from '../../routes/files' import Welcome from '../../routes/welcome' import Library from '../../routes/library' import Settings from '../../routes/settings' @@ -22,7 +22,7 @@ export default class App extends Component { componentDidMount() { // Test settings - console.log(this.props.settings); + console.log(this.props.settings) this.hasErrors() } diff --git a/src/components/checkbox/index.js b/src/components/checkbox/index.js index 8a05fe2..e8f65ca 100644 --- a/src/components/checkbox/index.js +++ b/src/components/checkbox/index.js @@ -2,18 +2,32 @@ import { h, Component } from 'preact' import style from './style' export default class ComicCheckBox extends Component { - state = {} + state = { + checked: this.props.checked || false, + } componentDidMount() {} + handleInputChange = event => { + const { onChange } = this.props + const { checked } = event.target + onChange && onChange(checked) + this.setState({ checked }) + } + render() { let { props, state } = this return ( - + ) } } diff --git a/src/routes/settings/index.js b/src/routes/settings/index.js index c6204b2..4195a5a 100644 --- a/src/routes/settings/index.js +++ b/src/routes/settings/index.js @@ -1,74 +1,5 @@ -import { h, Component } from 'preact' -import style from './style' -import Button from '../../components/button' -import CheckBox from '../../components/checkbox' +import { connect } from 'unistore/preact' +import Settings from './view.jsx' +import actions from '../../unistore/actions' -import { route } from 'preact-router' - -export default class Settings extends Component { - state = {} - - // gets called when this route is navigated to - componentDidMount() {} - - // gets called just before navigating away from the route - componentWillUnmount() {} - - render() { - return ( -
-
-

Settings

- { /* -

- - -

- */} -
-

- Allow right click -

-

- Check for updates -

-

- - Use higher quality page previews - -

-

- - Use smoothing when resizing images - -

-
-

- - - 0 - -

- -
-

- - - 0.0.1 - -

-
-
- ) - } -} +export default connect('settings', actions)(Settings) diff --git a/src/routes/settings/view.jsx b/src/routes/settings/view.jsx new file mode 100644 index 0000000..1657410 --- /dev/null +++ b/src/routes/settings/view.jsx @@ -0,0 +1,87 @@ +import { h, Component } from 'preact' +import style from './style' +import Button from '../../components/button' +import CheckBox from '../../components/checkbox' + +import { route } from 'preact-router' + +export default class Settings extends Component { + state = {} + + // gets called when this route is navigated to + componentDidMount() {} + + // gets called just before navigating away from the route + componentWillUnmount() {} + + updateSettings = (key, value) => { + const { setSettings } = this.props + setSettings({ key, value }) + console.log({ key, value }) + } + + render() { + const { settings } = this.props + return ( +
+
+

Settings

+ {/* +

+ + +

+ */} +
+

+ this.updateSettings('rigth_click_enabled', value)} + > + Allow right click + +

+

+ Check for updates +

+

+ Use higher quality page previews +

+

+ + Use smoothing when resizing images + +

+
+

+ + + 0 + +

+ +
+

+ + + 0.0.1 + +

+
+
+ ) + } +} diff --git a/src/unistore/actions.js b/src/unistore/actions.js index 3d2ef02..97833a9 100644 --- a/src/unistore/actions.js +++ b/src/unistore/actions.js @@ -1,13 +1,11 @@ -export function addComic(text) { - return { - type: 'ADD_COMIC', - text, - } -} +const actions = store => ({ + // for count + setSettings(prevState, data) { + const { settings } = prevState + settings[data.key] = data.value + console.log({ ...prevState, settings }) + return { ...prevState, settings } + }, +}) -export function removeComic(comic) { - return { - type: 'REMOVE_COMIC', - comic, - } -} +export default actions From 6b1b64e47ffa0a3beee9ef8f0819489a7240cdbe Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 13:41:03 -0600 Subject: [PATCH 32/49] store settings to localStorage --- src/components/app/view.jsx | 2 +- src/routes/settings/view.jsx | 23 ++++++++++++---- src/settings.js | 52 +++++------------------------------- src/unistore/actions.js | 5 ++-- src/unistore/store.js | 10 ++++--- 5 files changed, 33 insertions(+), 59 deletions(-) diff --git a/src/components/app/view.jsx b/src/components/app/view.jsx index 796aad9..9a84f90 100644 --- a/src/components/app/view.jsx +++ b/src/components/app/view.jsx @@ -22,7 +22,7 @@ export default class App extends Component { componentDidMount() { // Test settings - console.log(this.props.settings) + console.log('Init settings:', this.props.settings) this.hasErrors() } diff --git a/src/routes/settings/view.jsx b/src/routes/settings/view.jsx index 1657410..8f1a5b7 100644 --- a/src/routes/settings/view.jsx +++ b/src/routes/settings/view.jsx @@ -9,15 +9,28 @@ export default class Settings extends Component { state = {} // gets called when this route is navigated to - componentDidMount() {} + componentDidMount() { + window.addEventListener('beforeunload', this.storeSettings) + } // gets called just before navigating away from the route - componentWillUnmount() {} + componentWillUnmount() { + this.storeSettings() + window.removeEventListener('beforeunload', () => { + this.storeSettings() + }) + } + + storeSettings = () => { + // Save settings to localStorage (persistent data) + const { settings } = this.props + console.log(settings) + localStorage.setItem('settings', JSON.stringify(settings)) + } updateSettings = (key, value) => { const { setSettings } = this.props setSettings({ key, value }) - console.log({ key, value }) } render() { @@ -46,8 +59,8 @@ export default class Settings extends Component {

this.updateSettings('rigth_click_enabled', value)} + checked={settings.right_click_enabled} + onChange={value => this.updateSettings('right_click_enabled', value)} > Allow right click diff --git a/src/settings.js b/src/settings.js index 5cd242c..eb00360 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1,48 +1,8 @@ export const defaultSettings = { - 'theme': 'dark', - 'is_first_run': true, - 'use_higher_quality_previews': false, - 'use_smoothing_when_resizing_images': false, - 'right_click_enabled': false, - 'db_names': null, -}; - -export function settingsSet(name, value) { - localStorage.setItem(name, JSON.stringify(value)); -} - -export function settingsGet(name) { - let value = localStorage.getItem(name); - if (value) { - return JSON.parse(value); - } else { - return defaultSettings[name]; - } -} - -export function settingsSetAll() { - // Set settings to default - Object.entries(defaultSettings).forEach(([key, value]) => { - settingsSet(key, value); - }); -} - -export function settingsGetAll() { - // Get all settings from localStorage - let settings = {}; - Object.entries(defaultSettings).forEach(([key, value]) => { - settings[key] = settingsGet(key, value); - }); - // If no previous settings found set to default - if (!Object.entries(settings).length) { - settingsSetAll(); - return defaultSettings; - } - return settings; -} - -export function settingsResetAll() { - // Clear localStorage and set to default - localStorage.clear(); - settingsSetAll(); + theme: 'dark', + is_first_run: true, + use_higher_quality_previews: false, + use_smoothing_when_resizing_images: false, + right_click_enabled: false, + db_names: null, } diff --git a/src/unistore/actions.js b/src/unistore/actions.js index 97833a9..9012c24 100644 --- a/src/unistore/actions.js +++ b/src/unistore/actions.js @@ -1,9 +1,8 @@ const actions = store => ({ // for count - setSettings(prevState, data) { + setSettings(prevState, { key, value }) { const { settings } = prevState - settings[data.key] = data.value - console.log({ ...prevState, settings }) + if (settings[key] !== undefined) settings[key] = value return { ...prevState, settings } }, }) diff --git a/src/unistore/store.js b/src/unistore/store.js index b710f69..e4ce39b 100644 --- a/src/unistore/store.js +++ b/src/unistore/store.js @@ -1,11 +1,13 @@ import { createStore, connect } from 'unistore/full/preact' -import { settingsGetAll } from '../settings.js'; +import { defaultSettings } from '../settings.js' // Set initialState -const initialState = { count: 0 }; +const initialState = { count: 0 } + +const storedSettings = localStorage.getItem('settings') // Load settings -initialState.settings = settingsGetAll(); +initialState.settings = (storedSettings && JSON.parse(storedSettings)) || defaultSettings // Create store -export default createStore(initialState); +export default createStore(initialState) From 0cfa88f0c25088038fbd386f8066c02713f7e124 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:26:13 -0600 Subject: [PATCH 33/49] add all-contributors-cli --- .all-contributorsrc | 32 ++++++++ README.md | 6 +- package.json | 5 +- yarn.lock | 185 +++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 213 insertions(+), 15 deletions(-) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 0000000..65005d4 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,32 @@ +{ + "projectOwner": "workhorsy", + "projectName": "comic_book_reader", + "files": [ + "README.md", + "package.json" + ], + "imageSize": 100, + "commit": false, + "contributorsPerLine": 6, + "contributors": [ + { + "login": "workhorsy", + "name": "Matthew Brennan Jones", + "avatar_url": "https://avatars3.githubusercontent.com/u/2733986?v=4", + "profile": "http://workhorsy.org", + "contributions": [ + "code" + ] + }, + { + "login": "btzr-io", + "name": "Baltazar Gomez", + "avatar_url": "https://avatars1.githubusercontent.com/u/14793624?v=4", + "profile": "http://codepen.io/btzr-io", + "contributions": [ + "design" + ] + } + ], + "repoType": "github" +} diff --git a/README.md b/README.md index fd11792..d0f19bd 100644 --- a/README.md +++ b/README.md @@ -18,14 +18,16 @@ Comic Book Reader npm install ``` -# Run for development +## Run for development ```bash npm start ``` -# Install git hooks to automatically generate src/lib/version_date.js file on commit +## Install git hooks to automatically generate src/lib/version_date.js file on commit ```bash ./bin/install_hooks.sh ``` +## Contributors +This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. diff --git a/package.json b/package.json index 5ccf1f3..64d2606 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "serve": "npm run build && preact serve", "dev": "preact watch --template src/index.html", "lint": "eslint src", - "format": "pretty-quick --branch preact" + "format": "pretty-quick --branch preact", + "contributors:add": "all-contributors add", + "contributors:generate": "all-contributors generate" }, "eslintConfig": { "extends": "eslint-config-synacor", @@ -38,6 +40,7 @@ }, "eslintIgnore": ["src/lib/*"], "devDependencies": { + "all-contributors-cli": "^4.11.1", "eslint": "^4.2.0", "eslint-config-synacor": "^1.0.1", "husky": "^0.14.3", diff --git a/yarn.lock b/yarn.lock index e21a723..ec533da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -96,7 +96,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -122,6 +122,18 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" +all-contributors-cli@^4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-4.11.1.tgz#8e4d28a69bb60006b72d53758177a0c7b8a20f19" + dependencies: + async "^2.0.0-rc.1" + chalk "^2.3.0" + inquirer "^4.0.0" + lodash "^4.11.2" + pify "^3.0.0" + request "^2.72.0" + yargs "^10.0.3" + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -319,7 +331,7 @@ async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.4.1: +async@^2.0.0-rc.1, async@^2.1.2, async@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -359,7 +371,11 @@ aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" -aws4@^1.2.1: +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" @@ -1086,6 +1102,18 @@ boom@2.x.x: dependencies: hoek "2.x.x" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" @@ -1487,6 +1515,14 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -1568,7 +1604,7 @@ colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" -combined-stream@^1.0.5, combined-stream@~1.0.5: +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: @@ -1793,6 +1829,12 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2758,11 +2800,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0: +extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4: +external-editor@^2.0.4, external-editor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" dependencies: @@ -3017,6 +3059,14 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" +form-data@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -3363,6 +3413,10 @@ har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" @@ -3370,6 +3424,13 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3464,6 +3525,15 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -3480,6 +3550,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3586,6 +3660,14 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -3713,6 +3795,25 @@ inquirer@^3.0.6, inquirer@^3.3.0: strip-ansi "^4.0.0" through "^2.3.6" +inquirer@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-4.0.2.tgz#cc678b4cbc0e183a3500cc63395831ec956ab0a3" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + internal-ip@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" @@ -4422,7 +4523,7 @@ lodash@^3.6.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.11.2, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -4927,7 +5028,7 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -5257,6 +5358,10 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + persist-path@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/persist-path/-/persist-path-1.0.2.tgz#b7b9475365b5ccf038aafa55af12b0dd8c418d7a" @@ -5846,7 +5951,7 @@ q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" -qs@6.5.1: +qs@6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -6163,6 +6268,33 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" +request@^2.72.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6507,6 +6639,12 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" @@ -6759,7 +6897,7 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -7079,7 +7217,7 @@ toposort@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" -tough-cookie@~2.3.0: +tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -7365,7 +7503,7 @@ uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.0.1: +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" @@ -7694,6 +7832,12 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + dependencies: + camelcase "^4.1.0" + yargs@6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" @@ -7712,6 +7856,23 @@ yargs@6.6.0: y18n "^3.2.1" yargs-parser "^4.2.0" +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" + yargs@^8.0.1, yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" From ea052204fff953946da437915aff7cd645e80225 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:38:37 -0600 Subject: [PATCH 34/49] add / fix contributors section --- .all-contributorsrc | 4 ++-- README.md | 21 ++++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 65005d4..34491fd 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -6,8 +6,8 @@ "package.json" ], "imageSize": 100, - "commit": false, - "contributorsPerLine": 6, + "commit": true, + "contributorsPerLine": 4, "contributors": [ { "login": "workhorsy", diff --git a/README.md b/README.md index d0f19bd..8c01f25 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ http://comic-book-reader.com -Warning -=================== +# Warning + This branch is a port to Preact, and does not work yet! -Comic Book Reader -=================== +# Comic Book Reader + * Can read CBR, CBZ, CBT, and PDF files * Runs in the browser as a JavaScript and HTML web page * Works well on a touch device or desktop @@ -14,20 +14,31 @@ Comic Book Reader * Regularly tested in Firefox, Chrome, and Internet Explorer # Install Requirements + ```bash npm install ``` ## Run for development + ```bash npm start ``` - ## Install git hooks to automatically generate src/lib/version_date.js file on commit + ```bash ./bin/install_hooks.sh ``` + ## Contributors This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. + + + + +| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") | +| :---: | :---: | + + From 0615cf198242df5861065582f0284730e53d5455 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:42:01 -0600 Subject: [PATCH 35/49] Update @btzr-io as a contributor --- .all-contributorsrc | 3 ++- README.md | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 34491fd..eab5610 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -24,7 +24,8 @@ "avatar_url": "https://avatars1.githubusercontent.com/u/14793624?v=4", "profile": "http://codepen.io/btzr-io", "contributions": [ - "design" + "design", + "platform" ] } ], diff --git a/README.md b/README.md index 8c01f25..c8ca60d 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,7 @@ npm start This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. - -| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") | +| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | | :---: | :---: | - From 679a16f59c6a930019d00cd4c72626ba7fc431d1 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:44:11 -0600 Subject: [PATCH 36/49] Update @workhorsy as a contributor --- .all-contributorsrc | 4 +++- README.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index eab5610..3a7d27e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -15,7 +15,9 @@ "avatar_url": "https://avatars3.githubusercontent.com/u/2733986?v=4", "profile": "http://workhorsy.org", "contributions": [ - "code" + "code", + "translation", + "bug" ] }, { diff --git a/README.md b/README.md index c8ca60d..abbea51 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,6 @@ This project follows the [all-contributors](https://github.com/kentcdodds/all-co -| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | +| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") [🌍](#translation-workhorsy "Translation") [🐛](https://github.com/workhorsy/comic_book_reader/issues?q=author%3Aworkhorsy "Bug reports") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | | :---: | :---: | From 273b5e4f427d2d340e9bf07aa43b292d9ff3aa05 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:44:53 -0600 Subject: [PATCH 37/49] Update @workhorsy as a contributor --- .all-contributorsrc | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 3a7d27e..70397a9 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -17,7 +17,8 @@ "contributions": [ "code", "translation", - "bug" + "bug", + "question" ] }, { diff --git a/README.md b/README.md index abbea51..4bb3809 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,6 @@ This project follows the [all-contributors](https://github.com/kentcdodds/all-co -| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") [🌍](#translation-workhorsy "Translation") [🐛](https://github.com/workhorsy/comic_book_reader/issues?q=author%3Aworkhorsy "Bug reports") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | +| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") [🌍](#translation-workhorsy "Translation") [🐛](https://github.com/workhorsy/comic_book_reader/issues?q=author%3Aworkhorsy "Bug reports") [💬](#question-workhorsy "Answering Questions") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | | :---: | :---: | From 3b95cc27749a4a4a9944c31f0754e3c86787a750 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:45:04 -0600 Subject: [PATCH 38/49] Update @btzr-io as a contributor --- .all-contributorsrc | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 70397a9..144e540 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -28,7 +28,8 @@ "profile": "http://codepen.io/btzr-io", "contributions": [ "design", - "platform" + "platform", + "code" ] } ], diff --git a/README.md b/README.md index 4bb3809..e85f546 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,6 @@ This project follows the [all-contributors](https://github.com/kentcdodds/all-co -| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") [🌍](#translation-workhorsy "Translation") [🐛](https://github.com/workhorsy/comic_book_reader/issues?q=author%3Aworkhorsy "Bug reports") [💬](#question-workhorsy "Answering Questions") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") | +| [
Matthew Brennan Jones](http://workhorsy.org)
[💻](https://github.com/workhorsy/comic_book_reader/commits?author=workhorsy "Code") [🌍](#translation-workhorsy "Translation") [🐛](https://github.com/workhorsy/comic_book_reader/issues?q=author%3Aworkhorsy "Bug reports") [💬](#question-workhorsy "Answering Questions") | [
Baltazar Gomez](http://codepen.io/btzr-io)
[🎨](#design-btzr-io "Design") [📦](#platform-btzr-io "Packaging/porting to new platform") [💻](https://github.com/workhorsy/comic_book_reader/commits?author=btzr-io "Code") | | :---: | :---: | From 97d3b508d88c759073580a21d7b68b224980d43c Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 14:49:31 -0600 Subject: [PATCH 39/49] update readme.md --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e85f546..8f7ed6c 100644 --- a/README.md +++ b/README.md @@ -13,25 +13,24 @@ This branch is a port to Preact, and does not work yet! * Works when offline thanks to Service Workers. * Regularly tested in Firefox, Chrome, and Internet Explorer -# Install Requirements +## Install Requirements ```bash npm install ``` -## Run for development +### Run for development ```bash -npm start +yarn dev ``` -## Install git hooks to automatically generate src/lib/version_date.js file on commit - +### Format code ```bash -./bin/install_hooks.sh +yarn format ``` -## Contributors +# Contributors This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. From 87150e3714767ac9c3c0b4abaee7f654c23c0cec Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 15:05:16 -0600 Subject: [PATCH 40/49] add contributors to package.json --- .all-contributorsrc | 5 +---- README.md | 9 ++++----- package.json | 1 + 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 144e540..4bd14fd 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1,10 +1,7 @@ { "projectOwner": "workhorsy", "projectName": "comic_book_reader", - "files": [ - "README.md", - "package.json" - ], + "files": ["README.md"], "imageSize": 100, "commit": true, "contributorsPerLine": 4, diff --git a/README.md b/README.md index 8f7ed6c..63f321e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ http://comic-book-reader.com -# Warning - -This branch is a port to Preact, and does not work yet! +> ### :warning: Warning +> This branch is a port to Preact, and does not work yet! # Comic Book Reader @@ -13,7 +12,7 @@ This branch is a port to Preact, and does not work yet! * Works when offline thanks to Service Workers. * Regularly tested in Firefox, Chrome, and Internet Explorer -## Install Requirements +### Install Requirements ```bash npm install @@ -30,7 +29,7 @@ yarn dev yarn format ``` -# Contributors +## Contributors This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. diff --git a/package.json b/package.json index 64d2606..30f2ef6 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "homepage": "https://github.com/workhorsy/comic_book_reader", "keywords": ["comics"], "author": "Matthew Brennan Jones ", + "contributors": ["Baltazar Gomez (https://github.com/btzr-io)"], "license": "AGPL-3.0", "main": "index.js", "repository": { From 9611a1ffc05a30312b56c6b81ffbb2cef4778b0f Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 15:22:16 -0600 Subject: [PATCH 41/49] update footer copyright --- .all-contributorsrc | 2 +- src/components/empty-state/index.js | 5 ---- src/components/footer/index.js | 19 ++++++++++++++ src/components/footer/style.less | 40 +++++++++++++++++++++++++++++ src/routes/welcome/index.js | 6 ++--- 5 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 src/components/footer/index.js create mode 100644 src/components/footer/style.less diff --git a/.all-contributorsrc b/.all-contributorsrc index 4bd14fd..9a3255b 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -3,7 +3,7 @@ "projectName": "comic_book_reader", "files": ["README.md"], "imageSize": 100, - "commit": true, + "commit": false, "contributorsPerLine": 4, "contributors": [ { diff --git a/src/components/empty-state/index.js b/src/components/empty-state/index.js index 0b738fe..efe7dd9 100644 --- a/src/components/empty-state/index.js +++ b/src/components/empty-state/index.js @@ -6,11 +6,6 @@ import Icon from '../../components/icon' export default class EmptyState extends Component { state = {} - handleMouseUp = event => { - //console.log(this.props.children[0]); - this.props.onClick && this.props.onClick(event) - } - componentDidMount() { //console.log(this.props.text); } diff --git a/src/components/footer/index.js b/src/components/footer/index.js new file mode 100644 index 0000000..ce250c8 --- /dev/null +++ b/src/components/footer/index.js @@ -0,0 +1,19 @@ +import { h, Component } from 'preact' +import style from './style' + +export default class Footer extends Component { + state = {} + + componentDidMount() { + //console.log(this.props.text); + } + + render() { + const { props, state } = this + const year = (new Date()).getFullYear() + + return ( +

Copyright © 2017 - {year} Comic Book Reader Developers
+ ) + } +} diff --git a/src/components/footer/style.less b/src/components/footer/style.less new file mode 100644 index 0000000..ecc9854 --- /dev/null +++ b/src/components/footer/style.less @@ -0,0 +1,40 @@ +.view { + position: absolute; + top: 0px; + bottom: 0px; + left: 0; + right: 0; + padding: 0 5%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: white; + font-size: 1em; +} + +.view .message { + margin: 0px; + color: var(--text-message-color); + margin: 0 15%; +} + +.view .title { + font-size: 1.25em; +} + +.view h1 i { + display: block; + margin-bottom: 32px; + font-size: 2.5em; + color: var(--text-message-color); + opacity: 0.5; +} + +.actions { +} + +.view button { + width: 100%; +} diff --git a/src/routes/welcome/index.js b/src/routes/welcome/index.js index 95c2b54..019ed5f 100644 --- a/src/routes/welcome/index.js +++ b/src/routes/welcome/index.js @@ -2,6 +2,7 @@ import { h, Component } from 'preact' import style from './style' import { route } from 'preact-router' +import Footer from '../../components/footer' import Button from '../../components/button' export default class Welcome extends Component { @@ -33,10 +34,7 @@ export default class Welcome extends Component { Start - +
) } From cac6801bf18b893adb1797295c69ac71786d674b Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 1 Apr 2018 22:39:19 -0600 Subject: [PATCH 42/49] rewrite settings --- src/index.html | 8 +++-- src/routes/settings/view.jsx | 43 +++++++++++------------- src/settings.js | 64 ++++++++++++++++++++++++++++++++---- src/unistore/store.js | 8 ++--- 4 files changed, 86 insertions(+), 37 deletions(-) diff --git a/src/index.html b/src/index.html index 3af6e8f..93e340f 100644 --- a/src/index.html +++ b/src/index.html @@ -9,8 +9,8 @@
- - + diff --git a/src/routes/settings/view.jsx b/src/routes/settings/view.jsx index 8f1a5b7..57de938 100644 --- a/src/routes/settings/view.jsx +++ b/src/routes/settings/view.jsx @@ -2,7 +2,7 @@ import { h, Component } from 'preact' import style from './style' import Button from '../../components/button' import CheckBox from '../../components/checkbox' - +import { defaultSettings, updateSettings, getDefaultSettings } from '../../settings.js' import { route } from 'preact-router' export default class Settings extends Component { @@ -24,17 +24,21 @@ export default class Settings extends Component { storeSettings = () => { // Save settings to localStorage (persistent data) const { settings } = this.props - console.log(settings) - localStorage.setItem('settings', JSON.stringify(settings)) + settings && updateSettings(settings) } - updateSettings = (key, value) => { + setSetting = (key, value) => { const { setSettings } = this.props setSettings({ key, value }) } render() { const { settings } = this.props + + const checkboxes = Object.entries(defaultSettings).filter( + ([item, data]) => data.type === 'checkbox' + ) + return (
@@ -56,26 +60,17 @@ export default class Settings extends Component {

*/}
-

- this.updateSettings('right_click_enabled', value)} - > - Allow right click - -

-

- Check for updates -

-

- Use higher quality page previews -

-

- - Use smoothing when resizing images - -

+ {checkboxes.map(([item, data]) => ( +

+ this.setSetting(item, value)} + > + {data.label} + +

+ ))}

diff --git a/src/settings.js b/src/settings.js index eb00360..fb55e98 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1,8 +1,60 @@ export const defaultSettings = { - theme: 'dark', - is_first_run: true, - use_higher_quality_previews: false, - use_smoothing_when_resizing_images: false, - right_click_enabled: false, - db_names: null, + theme: { + type: 'select', + values: ['dark', 'light'], + defaultValue: 'theme', + label: 'Select a theme', + }, + install_updates_enabled: { + type: 'checkbox', + defaultValue: false, + label: 'Check for updates', + }, + + right_click_enabled: { + type: 'checkbox', + defaultValue: false, + label: 'Allow right click', + }, + use_higher_quality_previews: { + type: 'checkbox', + defaultValue: false, + label: 'Use higher quality page previews', + }, + use_smoothing_when_resizing_images: { + type: 'checkbox', + defaultValue: false, + label: 'Use smoothing when resizing images', + } +} + +export function getDefaultSettings() { + const settings = {} + Object.entries(defaultSettings).forEach(([key, value]) => { + settings[key] = value.defaultValue + }) + return settings +} + +export function getSettings() { + let settings = {} + try { + const stored = JSON.parse(localStorage.getItem('settings')) + settings = stored ? stored : getDefaultSettings() + } catch (error) { + // Default settings + settings = getDefaultSettings() + throw new Error('Settings failed to load!') + } finally { + return settings + } +} + +export function updateSettings(settings) { + try { + const data = JSON.stringify(settings) + data && localStorage.setItem('settings', data) + } catch (error) { + throw new Error("Settings: Can't load Settings, revert to default! ") + } } diff --git a/src/unistore/store.js b/src/unistore/store.js index e4ce39b..f9123c3 100644 --- a/src/unistore/store.js +++ b/src/unistore/store.js @@ -1,13 +1,11 @@ import { createStore, connect } from 'unistore/full/preact' -import { defaultSettings } from '../settings.js' +import { getSettings } from '../settings.js' // Set initialState -const initialState = { count: 0 } - -const storedSettings = localStorage.getItem('settings') +const initialState = {} // Load settings -initialState.settings = (storedSettings && JSON.parse(storedSettings)) || defaultSettings +initialState.settings = getSettings() // Create store export default createStore(initialState) From 4574672e9c5e9f9cc1e42d88205c8fce96f6e8f9 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 00:00:25 -0600 Subject: [PATCH 43/49] add switch component --- src/components/checkbox/index.js | 3 +- src/components/switch/index.js | 30 +++++++++++++++ src/components/switch/style.less | 66 ++++++++++++++++++++++++++++++++ src/routes/settings/view.jsx | 3 ++ src/settings.js | 2 +- 5 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 src/components/switch/index.js create mode 100644 src/components/switch/style.less diff --git a/src/components/checkbox/index.js b/src/components/checkbox/index.js index e8f65ca..f3e9735 100644 --- a/src/components/checkbox/index.js +++ b/src/components/checkbox/index.js @@ -18,9 +18,8 @@ export default class ComicCheckBox extends Component { render() { let { props, state } = this return ( -

))}
+ this.setSetting('theme', value)}/> +

diff --git a/src/settings.js b/src/settings.js index fb55e98..d8bd46f 100644 --- a/src/settings.js +++ b/src/settings.js @@ -2,7 +2,7 @@ export const defaultSettings = { theme: { type: 'select', values: ['dark', 'light'], - defaultValue: 'theme', + defaultValue: 'dark', label: 'Select a theme', }, install_updates_enabled: { From 90960c7e5cb07bcf71c030ae7dddc179e6c0f878 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 11:29:59 -0600 Subject: [PATCH 44/49] auto update settings --- src/settings.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/settings.js b/src/settings.js index d8bd46f..5600f76 100644 --- a/src/settings.js +++ b/src/settings.js @@ -10,7 +10,11 @@ export const defaultSettings = { defaultValue: false, label: 'Check for updates', }, - + night_mode_enabled: { + type: 'switch', + defaultValue: true, + label: 'Night Mode', + }, right_click_enabled: { type: 'checkbox', defaultValue: false, @@ -25,7 +29,7 @@ export const defaultSettings = { type: 'checkbox', defaultValue: false, label: 'Use smoothing when resizing images', - } + }, } export function getDefaultSettings() { @@ -39,14 +43,11 @@ export function getDefaultSettings() { export function getSettings() { let settings = {} try { - const stored = JSON.parse(localStorage.getItem('settings')) - settings = stored ? stored : getDefaultSettings() + settings = JSON.parse(localStorage.getItem('settings')) } catch (error) { - // Default settings - settings = getDefaultSettings() throw new Error('Settings failed to load!') } finally { - return settings + return Object.assign(getDefaultSettings(), settings) } } From 499d97408be0f57126ecd3fc898d66ed08c46828 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 11:47:52 -0600 Subject: [PATCH 45/49] update switch / checkbox styles --- src/components/checkbox/style.less | 32 ++++++++++---------- src/components/switch/style.less | 47 ++++++++++++++---------------- 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/src/components/checkbox/style.less b/src/components/checkbox/style.less index 4f48ef6..19f0489 100644 --- a/src/components/checkbox/style.less +++ b/src/components/checkbox/style.less @@ -1,4 +1,5 @@ .checkbox { + --checkbox-bg-color: rgba(164, 176, 190, 0.5); position: relative; cursor: pointer; -webkit-user-select: none; @@ -7,6 +8,10 @@ user-select: none; } +.checkbox:disabled { + opacity: 0.25; +} + .checkbox input { position: absolute; opacity: 0; @@ -14,10 +19,9 @@ } .checkbox .label { - padding: 16px; - opacity: 0.75; - display: inline-block; - vertical-align: middle; + padding: 16px; + display: inline-block; + vertical-align: middle; } .mark { @@ -28,35 +32,31 @@ margin: 0; padding: 0; border-radius: 3px; - background-color: var(--text-message-color); - opacity: 0.5; + background-color: var(--checkbox-bg-color); margin: 12px 0; float: left; - transition: all 0.2s; + transition: background-color 0.2s; } -.checkbox input:checked~.mark { - background-color: var(--main-color); - opacity: 1; +.checkbox input:checked ~ .mark { + background-color: var(--main-color); } /* Add the following css rule: */ -.checkbox input:checked~.label { - opacity: 1; +.checkbox input:checked ~ .label { color: var(--text-color); } .mark:after { - content: ""; + content: ''; position: absolute; display: none; } -.checkbox input:checked~.mark { - opacity: 1; +.checkbox input:checked ~ .mark { } -.checkbox input:checked~.mark:after { +.checkbox input:checked ~ .mark:after { display: block; } diff --git a/src/components/switch/style.less b/src/components/switch/style.less index ad6d433..316e2ad 100644 --- a/src/components/switch/style.less +++ b/src/components/switch/style.less @@ -1,40 +1,40 @@ .switch { ---switch-size: 24px; ---switch-padding: 2px; ---switch-slider-size: calc(var(--switch-size) - 2 * var(--switch-padding)); - cursor: pointer; - display: inline-block; - margin: 16px 0; - + --switch-size: 24px; + --switch-padding: 2px; + --switch-slider-size: calc(var(--switch-size) - 2 * var(--switch-padding)); + --switch-bg-color: rgba(164, 176, 190, 0.5); + cursor: pointer; + display: inline-block; + margin: 16px 0; } -.switch input {display: none;} +.switch input { + display: none; +} .slider { -position: relative; - + position: relative; width: calc(2 * (var(--switch-size) - var(--switch-padding))); height: var(--switch-size); display: inline-block; vertical-align: middle; - background-color: var(--text-message-color); + background-color: var(--switch-bg-color); border-radius: var(--switch-size); - opacity: 0.75; - -webkit-transition: .4s; - transition: .4s; + -webkit-transition: 0.4s; + transition: 0.4s; } .slider:before { position: absolute; - content: ""; + content: ''; height: var(--switch-slider-size); width: var(--switch-slider-size); left: var(--switch-padding); bottom: var(--switch-padding); background-color: white; - border-radius: 50%; - -webkit-transition: .4s; - transition: .4s; + border-radius: 50%; + -webkit-transition: 0.3s; + transition: 0.3s; } .label { @@ -42,25 +42,22 @@ position: relative; vertical-align: middle; margin: 16px; color: var(--text-message-color); - opacity: 0.75; } .switch input:checked + .slider { - background-color: var(--main-color); - opacity: 1; + background-color: var(--main-color); } .switch input:focus + .slider { - box-shadow: 0 0 1px var(--main-color); + box-shadow: 0 0 1px var(--main-color); } .switch input:checked + .slider + .label { - color: var(--text-color); - opacity: 1; + color: var(--text-color); } .switch input:checked + .slider:before { -webkit-transform: translateX(var(--switch-slider-size)); - -ms-transform: translateX(var(--switch-slider-size)); + -ms-transform: translateX(var(--switch-slider-size)); transform: translateX(var(--switch-slider-size)); } From 542da63cc129949b08e6b5da87f9f7da0e697240 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 14:24:30 -0600 Subject: [PATCH 46/49] add night mode #102 --- src/components/app/style.less | 24 ++++++++++++++++++++++++ src/components/app/view.jsx | 9 ++++++++- src/components/button/style.less | 2 +- src/components/empty-state/style.less | 1 - src/components/menu/style.less | 7 ++----- src/components/switch/index.js | 15 ++++++--------- src/routes/settings/style.less | 5 +++-- src/routes/settings/view.jsx | 6 +++++- src/style/index.less | 19 +++++++++++++++---- src/unistore/actions.js | 5 ++++- 10 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 src/components/app/style.less diff --git a/src/components/app/style.less b/src/components/app/style.less new file mode 100644 index 0000000..453586d --- /dev/null +++ b/src/components/app/style.less @@ -0,0 +1,24 @@ +.app { + background: var(--bg-color); + color: var(--text-color); +} + +.themeDark { + /* Css vars */ + --main-color: #1976d2; + --bg-color: #2f3542; + --link-color: #34ace0; + --text-color: white; + --text-message-color: #a4b0be; + --menu-bg-color: #1f232b; +} + +.themeLight { + /* Css vars */ + --main-color: #1976d2; + --bg-color: #fff; + --link-color: #34ace0; + --text-color: #3c3d3f; + --text-message-color: #727b85; + --menu-bg-color: #eee; +} diff --git a/src/components/app/view.jsx b/src/components/app/view.jsx index 9a84f90..882cd66 100644 --- a/src/components/app/view.jsx +++ b/src/components/app/view.jsx @@ -13,6 +13,7 @@ import Unsupported from '../../routes/unsupported' // Components import Menu from '../menu' +import style from './style' export default class App extends Component { state = { @@ -43,8 +44,14 @@ export default class App extends Component { } render() { + const { settings } = this.props + + // Select theme + const theme = settings.night_mode_enabled ? style.themeDark : style.themeLight + console.log(theme) + return ( -

+
{this.state.compatible && } diff --git a/src/components/button/style.less b/src/components/button/style.less index 0414364..431857d 100644 --- a/src/components/button/style.less +++ b/src/components/button/style.less @@ -5,8 +5,8 @@ margin: 16px; cursor: pointer; word-wrap: break-word; + color: white; background: var(--main-color); - color: inherit; font-weight: bold; font-family: inherit; font-size: 1em; diff --git a/src/components/empty-state/style.less b/src/components/empty-state/style.less index ecc9854..619f866 100644 --- a/src/components/empty-state/style.less +++ b/src/components/empty-state/style.less @@ -10,7 +10,6 @@ justify-content: center; align-items: center; flex-direction: column; - color: white; font-size: 1em; } diff --git a/src/components/menu/style.less b/src/components/menu/style.less index 5308f44..b907f24 100644 --- a/src/components/menu/style.less +++ b/src/components/menu/style.less @@ -1,7 +1,5 @@ .comic_menu { background: transparent; - border-bottom: 0px solid #57606f; - color: white; box-sizing: border-box; width: 100%; margin: 0; @@ -27,14 +25,13 @@ align-items: center; } -.item{ +.item { color: inherit; display: inline-block; text-decoration: none; } .button { - color: black; border: 0; cursor: pointer; font-size: 1em; @@ -86,7 +83,7 @@ right: 0; height: 100%; min-width: 250px; - background: #1f232b; //var(--bg-color); + background: var(--menu-bg-color); z-index: 1; text-align: left; transform: translateX(250px); diff --git a/src/components/switch/index.js b/src/components/switch/index.js index b55dc0c..50b90b3 100644 --- a/src/components/switch/index.js +++ b/src/components/switch/index.js @@ -9,7 +9,7 @@ export default class Switch extends Component { handleInputChange = event => { const { onChange } = this.props const { checked } = event.target - //onChange && onChange(checked) + onChange && onChange(checked) console.log(checked) this.setState({ checked }) } @@ -17,14 +17,11 @@ export default class Switch extends Component { render() { let { props, state } = this return ( - + ) } } diff --git a/src/routes/settings/style.less b/src/routes/settings/style.less index 5fd6c17..3c2d09b 100644 --- a/src/routes/settings/style.less +++ b/src/routes/settings/style.less @@ -4,12 +4,12 @@ bottom: 0; left: 0; right: 0; - padding: 0 2%; + padding: 0 5%; text-align: left; overflow: auto; } -.view p {; +.view p { color: var(--text-message-color); } @@ -21,6 +21,7 @@ @media (max-width: 400px) { .view { font-size: 14px; + padding: 0 2%; } .view p { max-width: 100%; diff --git a/src/routes/settings/view.jsx b/src/routes/settings/view.jsx index f4ee820..bc81900 100644 --- a/src/routes/settings/view.jsx +++ b/src/routes/settings/view.jsx @@ -73,7 +73,11 @@ export default class Settings extends Component {

))}
- this.setSetting('theme', value)}/> + this.setSetting('night_mode_enabled', value)} + />

diff --git a/src/style/index.less b/src/style/index.less index a1dd987..10d37fe 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -32,10 +32,21 @@ a { } hr { - border: 0; - height: 2px; - background: var(--text-message-color); - opacity: 0.25; + border: 0; + height: 2px; + background: var(--text-message-color); + opacity: 0.25; +} + +#outer { + margin: 0; + height: 100vh; + width: 100vw; +} + +#app { + width: 100%; + height: 100%; } /* Make scroll bars small and blue on Chrome */ diff --git a/src/unistore/actions.js b/src/unistore/actions.js index 9012c24..615d333 100644 --- a/src/unistore/actions.js +++ b/src/unistore/actions.js @@ -3,7 +3,10 @@ const actions = store => ({ setSettings(prevState, { key, value }) { const { settings } = prevState if (settings[key] !== undefined) settings[key] = value - return { ...prevState, settings } + return { + ...prevState, + settings: { ...settings }, + } }, }) From 4d2d517ca7df9bbc9f62698620b331ad7edec438 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 17:20:47 -0600 Subject: [PATCH 47/49] make state immutable --- src/components/app/view.jsx | 10 +++++++++- src/unistore/actions.js | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/app/view.jsx b/src/components/app/view.jsx index 882cd66..58bfe99 100644 --- a/src/components/app/view.jsx +++ b/src/components/app/view.jsx @@ -21,12 +21,21 @@ export default class App extends Component { compatible: true, } + constructor(props) { + super(props) + } + componentDidMount() { // Test settings console.log('Init settings:', this.props.settings) this.hasErrors() } + shouldComponentUpdate(props, state) { + console.log(props.settings.night_mode_enabled, this.props.settings.night_mode_enabled) + return true + } + hasErrors = () => { // Test browser features requireBrowserFeatures((errors, warnings) => { @@ -48,7 +57,6 @@ export default class App extends Component { // Select theme const theme = settings.night_mode_enabled ? style.themeDark : style.themeLight - console.log(theme) return (

diff --git a/src/unistore/actions.js b/src/unistore/actions.js index 615d333..6ddac1a 100644 --- a/src/unistore/actions.js +++ b/src/unistore/actions.js @@ -1,10 +1,14 @@ +// Immutable state +const deepClone = state => JSON.parse(JSON.stringify(state)) + const actions = store => ({ // for count setSettings(prevState, { key, value }) { - const { settings } = prevState + const state = deepClone(prevState) + const { settings } = state if (settings[key] !== undefined) settings[key] = value return { - ...prevState, + ...state, settings: { ...settings }, } }, From 972b82c02d5632ad8e619d35ba08338ff2641fdb Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 17:26:55 -0600 Subject: [PATCH 48/49] improve theme updates --- src/components/app/view.jsx | 7 +++++-- src/unistore/actions.js | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/app/view.jsx b/src/components/app/view.jsx index 58bfe99..8e06f4a 100644 --- a/src/components/app/view.jsx +++ b/src/components/app/view.jsx @@ -32,8 +32,11 @@ export default class App extends Component { } shouldComponentUpdate(props, state) { - console.log(props.settings.night_mode_enabled, this.props.settings.night_mode_enabled) - return true + if (props.settings.night_mode_enabled !== this.props.settings.night_mode_enabled) { + // Update theme + return true + } + return false } hasErrors = () => { diff --git a/src/unistore/actions.js b/src/unistore/actions.js index 6ddac1a..ba516d6 100644 --- a/src/unistore/actions.js +++ b/src/unistore/actions.js @@ -1,4 +1,4 @@ -// Immutable state +// Immutable state: quick hack [FIX IT] const deepClone = state => JSON.parse(JSON.stringify(state)) const actions = store => ({ From 82b85361becdb7251f5e65908dc9a435666f3519 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 2 Apr 2018 18:42:03 -0600 Subject: [PATCH 49/49] update styles / animations --- src/components/app/style.less | 1 + src/components/checkbox/style.less | 30 +++++++++++++----------------- src/components/switch/style.less | 9 +++++---- src/index.html | 5 +---- src/style/index.less | 5 +---- src/unistore/reducers.js | 5 ----- 6 files changed, 21 insertions(+), 34 deletions(-) delete mode 100644 src/unistore/reducers.js diff --git a/src/components/app/style.less b/src/components/app/style.less index 453586d..ab04c09 100644 --- a/src/components/app/style.less +++ b/src/components/app/style.less @@ -1,6 +1,7 @@ .app { background: var(--bg-color); color: var(--text-color); + /* transition: background 0.15s ease; */ } .themeDark { diff --git a/src/components/checkbox/style.less b/src/components/checkbox/style.less index 19f0489..6bfb79c 100644 --- a/src/components/checkbox/style.less +++ b/src/components/checkbox/style.less @@ -25,6 +25,7 @@ } .mark { + position: relative; display: inline-block; vertical-align: middle; height: 24px; @@ -35,7 +36,7 @@ background-color: var(--checkbox-bg-color); margin: 12px 0; float: left; - transition: background-color 0.2s; + /* transition: background-color 0.2s; */ } .checkbox input:checked ~ .mark { @@ -47,28 +48,23 @@ color: var(--text-color); } -.mark:after { - content: ''; - position: absolute; - display: none; -} - -.checkbox input:checked ~ .mark { -} - .checkbox input:checked ~ .mark:after { - display: block; + opacity: 1; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); } .checkbox .mark:after { - position: relative; + position: absolute; left: 7px; top: 2px; - width: 9px; - height: 15px; + width: 10px; + height: 16px; border: solid white; border-width: 0 3px 3px 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); + content: ''; + opacity: 0; + /* transition: all 0.2s ease; */ + } diff --git a/src/components/switch/style.less b/src/components/switch/style.less index 316e2ad..bc58a95 100644 --- a/src/components/switch/style.less +++ b/src/components/switch/style.less @@ -20,8 +20,9 @@ vertical-align: middle; background-color: var(--switch-bg-color); border-radius: var(--switch-size); - -webkit-transition: 0.4s; - transition: 0.4s; + /* -webkit-transition: 0.3s ease; + transition: 0.3s ease; + */ } .slider:before { @@ -33,8 +34,8 @@ bottom: var(--switch-padding); background-color: white; border-radius: 50%; - -webkit-transition: 0.3s; - transition: 0.3s; + -webkit-transition: 0.3s ease; + transition: 0.3s ease; } .label { diff --git a/src/index.html b/src/index.html index 93e340f..dd84c5c 100644 --- a/src/index.html +++ b/src/index.html @@ -5,6 +5,7 @@ Comic Book Reader + @@ -30,10 +31,6 @@ let height = window.innerHeight; //onResize(width, height); }); - // Test - window.addEventListener('error', function(err) { - alert(JSON.stringify(err)); - }); diff --git a/src/style/index.less b/src/style/index.less index 10d37fe..3fb62bd 100644 --- a/src/style/index.less +++ b/src/style/index.less @@ -6,10 +6,6 @@ box-sizing: border-box; } -* { - font-family: Helvetica, Arial, sans-serif; -} - html { min-height: 100%; height: 100%; @@ -24,6 +20,7 @@ body { min-height: 100%; margin: 0; padding: 0; + font-family: 'Montserrat', Helvetica, Arial, sans-serif; font-size: 1em; } diff --git a/src/unistore/reducers.js b/src/unistore/reducers.js deleted file mode 100644 index 8d41a92..0000000 --- a/src/unistore/reducers.js +++ /dev/null @@ -1,5 +0,0 @@ -const EMPTY = {} - -export default store => { - return store || EMPTY -}