From eb827a255a77b6886dc907c7e799c3b1c2a85475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Danyi?= Date: Sat, 10 Nov 2018 16:15:57 +0100 Subject: [PATCH] * initial commit --- .gitignore | 3 + dist/index.html | 680 ++++++ dist/sprites.svg | 165 ++ package-lock.json | 4336 ++++++++++++++++++++++++++++++++++ package.json | 22 + src/app.class.ts | 201 ++ src/ethmap.css | 211 ++ src/index.ts | 255 ++ src/room.class.ts | 48 + src/utm-ericsson-capital.ttf | Bin 0 -> 196304 bytes tsconfig.json | 59 + webpack.config.js | 43 + 12 files changed, 6023 insertions(+) create mode 100644 .gitignore create mode 100644 dist/index.html create mode 100644 dist/sprites.svg create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/app.class.ts create mode 100644 src/ethmap.css create mode 100644 src/index.ts create mode 100644 src/room.class.ts create mode 100644 src/utm-ericsson-capital.ttf create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e23a5b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +dist/*.js +dist/*.map diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..56401ac --- /dev/null +++ b/dist/index.html @@ -0,0 +1,680 @@ + + + + + ETH map + + + + +
+
+ +
+
+ +
+ +

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + Bookable Special + + + + Non-bookable Mini + + + + Non-bookable Scrum + + + + Non-bookable Research + +
+ + + + diff --git a/dist/sprites.svg b/dist/sprites.svg new file mode 100644 index 0000000..2b6c7e6 --- /dev/null +++ b/dist/sprites.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8d4003c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4336 @@ +{ + "name": "eth-map", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "http://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "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" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "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": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "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" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "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" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "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" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "file-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", + "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules-path": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", + "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz", + "integrity": "sha512-o+Jm+ocb0asEngdM6FsZWtZsRzA8koFUudIDwYUfl94M3PejPHG7Vopw5hN9V8WsMkSFpm3tZP3Fesz89EyrfQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "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": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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-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" + } + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", + "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "ts-loader": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.0.tgz", + "integrity": "sha512-lGSNs7szRFj/rK9T1EQuayE3QNLg6izDUxt5jpmq0RG1rU2bapAt7E7uLckLCUPeO1jwxCiet2oRaWovc53UAg==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", + "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.25.1.tgz", + "integrity": "sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", + "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.2" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.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 || ^4.0.0", + "yargs-parser": "^10.1.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..eec6b25 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "eth-map", + "version": "1.0.0", + "description": "Ericsson House map", + "private": true, + "scripts": { + "build": "webpack", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "edvidan", + "license": "ISC", + "dependencies": {}, + "devDependencies": { + "css-loader": "^1.0.1", + "file-loader": "^2.0.0", + "mini-css-extract-plugin": "^0.4.4", + "ts-loader": "^5.3.0", + "typescript": "^3.1.6", + "webpack": "^4.25.1", + "webpack-cli": "^3.1.2" + } +} diff --git a/src/app.class.ts b/src/app.class.ts new file mode 100644 index 0000000..01defbe --- /dev/null +++ b/src/app.class.ts @@ -0,0 +1,201 @@ +import { Room } from "./room.class"; + +export class App { + static floorLabels = [ + 'Ground floor', + '1st floor', + '2nd floor', + '3rd floor', + '4th floor', + '5th floor', + '6th floor', + ]; + static removeClasses = ['active', 'lower', 'raise', 'hilite']; + + private rooms: Array = []; + + private roomsDataListElement: HTMLDataListElement; + private floorSelectElement: HTMLSelectElement; + private filterElement: HTMLInputElement; + private labelElement: HTMLHeadingElement; + private svgElements: Array; + private svgRooms: Array; + + constructor(params: {rooms: Array}) { + this.rooms = params.rooms; + + this.roomsDataListElement = document.getElementById('roomList'); + this.floorSelectElement = document.getElementById('floorSelect'); + this.filterElement = document.getElementById('filter'); + this.labelElement = document.getElementById('label'); + + const mapContainer = document.getElementById('map-container'); + this.svgElements = Array.from(mapContainer.getElementsByTagName('svg')); + this.svgRooms = Array.from(mapContainer.getElementsByClassName('room')); + } + + run() { + // init floor selector and input datalist + this.initFloorSelect(App.floorLabels) + .populateDataList(); + + // add event listeners for restoring application state + document.addEventListener('DOMContentLoaded', () => { + const hash = (document.location).hash; + return hash ? this.restoreState(hash.split('.')) : null; + }); + window.addEventListener('popstate', event => this.restoreState(event.state)); + + // what happens when the floor selector is changed + this.floorSelectElement.addEventListener('change', event => this.applyFloorFilter(+(event.target).value)); + + // what happens when the room filter is changed + this.filterElement.addEventListener('change', event => { + const room = this.rooms.find(room => room.name.toLocaleLowerCase() === this.filterElement.value.toLocaleLowerCase()); + this.selectFloor(room ? room.floor : 7).deselectAllRooms(); + if (room) this.selectRoom(room.id).pushRoomState(room); + }); + + // what should happen when a floor is clicked on + this.svgElements.map(svg => svg.addEventListener('click', event => { + event.stopPropagation(); + const svgRoom = this.svgRooms.find(svgRoom => svgRoom.classList.contains('hilite')); + if (svgRoom) this.setFloorLabel((this.rooms.find(room => room.id == svgRoom.id)).floor); + this.deselectAllRooms(); + })); + + // what should happen when a room is clicked on + this.svgRooms.map(svgRoom => svgRoom.addEventListener('click', event => { + event.stopPropagation(); + const room = this.rooms.find(room => room.id === svgRoom.id); + if ((event.target).classList.contains('hilite')) { + this.deselectAllRooms().setFloorLabel(room.floor); + } else { + this.deselectAllRooms().selectRoom(room.id).pushRoomState(room); + } + })); + + // add roomname as title to all rooms when user hovers mouse over the room + this.rooms.map(room => { + const titleElement = document.createElementNS("http://www.w3.org/2000/svg", "title"); + titleElement.textContent = `${room.name}`; + const svgRoom = document.getElementById(room.id); + svgRoom.appendChild(titleElement); + svgRoom.classList.add(...Room.typeClassMap[room.type]); + }); + } + + genFloorHash(idx: number): string { + return `#f.${idx}`; + } + + genRoomHash(room: Room): string { + return `#r.${room.floor}.${room.id}`; + } + + initFloorSelect(labels: Array): App { + labels.map((floor, idx) => this.floorSelectElement.appendChild(new Option(floor, idx.toLocaleString()))); + return this; + } + + populateDataList(floor: number = -1): App { + this.rooms.filter(room => floor == -1 ? true : room.floor == floor) + .map(room => room.name).sort() + .map(roomName => this.roomsDataListElement.appendChild(new Option(roomName))); + return this; + } + + clearDataList(): App { + while(this.roomsDataListElement.lastChild) { + this.roomsDataListElement.removeChild(this.roomsDataListElement.lastChild); + } + return this; + } + + setLabel(label: string): App { + this.labelElement.innerHTML = label; + return this; + } + + setFloorLabel(idx: number): App { + this.setLabel(App.floorLabels[idx]); + return this; + } + + setRoomLabel(room: Room): App { + this.setLabel(`${App.floorLabels[room.floor]} - ${room.formattedName}`); + return this; + } + + selectFloor(idx: number): App { + this.svgElements.map((svg, svgidx) => { + svg.classList.remove(...App.removeClasses); + svg.classList.add(idx == svgidx ? 'active' : ( + svgidx > idx ? 'raise' : 'lower' + )); + }); + return this; + } + + selectRoom(id: string): App { + const room = this.rooms.find(room => room.id === id); + this.setRoomLabel(room).filterElement.value = room.name; + (document.getElementById(id)).classList.add('hilite'); + Array.from(document.getElementsByClassName(`floor-${room.floor}`)) + .filter(floor => !floor.classList.contains('hilite')) + .map(floor => floor.classList.add('hilite')); + return this; + } + + deselectAllRooms(): App { + this.svgElements.map(svg => svg.classList.remove('hilite')); + this.svgRooms.map(room => room.classList.remove('hilite')); + return this; + } + + applyFloorFilter(idx: number): App { + this.filterElement.value = ''; + this.deselectAllRooms().clearDataList().populateDataList(idx); + if (idx == -1) { + this.setLabel('').svgElements + .map(svg => svg.classList.remove(...App.removeClasses)); + return this; + } + return this.setFloorLabel(idx).selectFloor(idx).pushFloorState(idx); + } + + pushState(state: {}, title: string, url: string): App { + window.history.pushState(state, title, url); + return this; + } + + pushFloorState(idx: number): App { + return this.pushState( + ['#f', idx], + `ETH map - ${App.floorLabels[idx]}`, + this.genFloorHash(idx) + ); + } + + pushRoomState(room: Room): App { + return this.pushState( + ['#r', room.floor, room.id], + `ETH map - ${App.floorLabels[room.floor]} / ${room.formattedName}`, + this.genRoomHash(room) + ); + } + + restoreState(params: Array): App { + const [cmd,floor,roomId] = [...params]; + this.deselectAllRooms(); + switch(cmd) { + case '#r': + this.selectFloor(floor).selectRoom(roomId); + break; + case '#f': + this.selectFloor(floor); + break; + } + return this; + } +} diff --git a/src/ethmap.css b/src/ethmap.css new file mode 100644 index 0000000..da92742 --- /dev/null +++ b/src/ethmap.css @@ -0,0 +1,211 @@ +@font-face { + font-family: 'EricssonCapital'; + src: url(utm-ericsson-capital.ttf); + font-weight: normal; + font-style: normal; +} +html, +body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} +html { + --ericsson-white: #fafafa; + --ericsson-grey1: #f1f1f1; + --ericsson-grey2: #e0e0e0; + --ericsson-grey3: #9f9f9f; + --ericsson-grey4: #757575; + --ericsson-black: #242424; + + --ericsson-yellow: #f8d12c; + --ericsson-green: #10c372; + --ericsson-blue: #0082ef; + --ericsson-red: #fe3030; + --ericsson-orange: #fe8b0a; + --ericsson-purple: #ad75ce; +} + +h1 { + font-family: EricssonCapital; +} + +svg text { + font-family: EricssonCapital; +} + +.wall { + fill: var(--ericsson-white); + fill-rule: evenodd; + stroke: var(--ericsson-black); + stroke-width: 0.5; +} +.inner-wall { + fill: var(--ericsson-white); + stroke: var(--ericsson-black); + stroke-width: 0.5; +} +.speedgate { stroke: var(--ericsson-black); stroke-width: 0.5; stroke-dasharray: 2,2; } + +.room { + fill: var(--ericsson-white); + stroke: var(--ericsson-black); + stroke-width: 0.5; + transition-property: fill, fill-opacity; + transition-duration: 0.25s; + transition-timing-function: linear; +} +#door-marker { + z-index: 10; +} +.room ~ .door-marker { + display: none; + stroke: var(--ericsson-black); + stroke-width: 0.5; + fill: none; +} +.room.hilite ~ .door-marker { display: initial; } + +.active .bookable.special { fill: var(--ericsson-blue); } +.active .non-bookable.mini { fill: var(--ericsson-green); } +.active .non-bookable.scrum { fill: var(--ericsson-orange); } +.active .non-bookable.research { fill: var(--ericsson-red); } + +svg.hilite .bookable.special:not(.hilite), +svg.hilite .non-bookable.mini:not(.hilite), +svg.hilite .non-bookable.scrum:not(.hilite), +svg.hilite .non-bookable.research:not(.hilite) { + fill-opacity: .2; +} + +.room.hilite { + animation: colors 0.75s ease-in-out infinite alternate; +} + +@keyframes colors { + from { fill: var(--ericsson-yellow) } + to { fill: var(--ericsson-red) } +} + +.stairs { fill: var(--ericsson-grey2); } +.terrace { + fill: var(--ericsson-grey3); + stroke: var(--ericsson-black); + stroke-width: 0.5; +} +.storage, +.phonebooth { + stroke: var(--ericsson-black); + stroke-width: 0.5; +} +.storage { fill: var(--ericsson-grey3); } +.phonebooth { fill: var(--ericsson-grey2); } +.elevator { fill: var(--ericsson-grey2); } +.here-must-be-aliens { fill: var(--ericsson-grey4); } + +.controls { height: 110px; padding: 10px; } +.ui.input { + position: relative; + font-size: 1em; + font-style: normal; + font-weight: 400; + display: inline-flex; + color: rgba(0,0,0,.87); +} +.ui.input > select, +.ui.input > input { + margin: 0; + max-width: 100%; + flex: 1 0 auto; + outline: 0; + -webkit-tap-highlight-color: rgba(255,255,255,0); + text-align: left; + line-height: 1.21428571em; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + padding: .67857143em 1em; + background: #fff; + border: 1px solid rgba(34,36,38,.15); + color: rgba(0,0,0,.87); + border-radius: .28571429rem; + transition: box-shadow .1s ease, border-color .1s ease; + box-shadow: none; +} +.ui.input > select:active, +.ui.input > input:focus { + color: rgba(0,0,0,.8); + border-color: #85b7d9; + background: #fff; + box-shadow: none; +} +svg.active .room { cursor: pointer; } +svg.active .room:hover { stroke-dasharray: 1 1; } +.svgbox { + position: relative; + perspective: 800px; + transform-style: preserve-3d; + margin-top: 20%; + margin-left: 10%; + margin-right: 10%; +} +.svgbox svg { + position: absolute; + transition-property: bottom, transform, z-index; + transition-duration: 0.35s; + transition-timing-function: ease-in-out; + transform: matrix3d(1, 0, 0, 0, + 0, 0.3048, 0.9524, 0, + 0, -0.9524, 0.3048, 0, + 0, 0, -250, 1); + bottom: var(--bottom-distance); +} +.svgbox svg.active { + transform: matrix3d(0.85, 0, 0, 0, + 0, 0.85, 0, 0, + 0, 0, 1, 0, + 0, 0, 200, 1); +} + +.svgbox .floor-0 { z-index: 1; --bottom-distance: 0px; } +.svgbox .floor-1 { z-index: 2; --bottom-distance: 20px; } +.svgbox .floor-2 { z-index: 3; --bottom-distance: 40px; } +.svgbox .floor-3 { z-index: 4; --bottom-distance: 60px; } +.svgbox .floor-4 { z-index: 5; --bottom-distance: 80px; } +.svgbox .floor-5 { z-index: 6; --bottom-distance: 100px; } +.svgbox .floor-6 { z-index: 7; --bottom-distance: 120px; } +@media only screen and (max-width: 779px) { + .svgbox { width: 75%; height: 50%; } + .svgbox svg.lower { bottom: calc(var(--bottom-distance) - 20%) } + .svgbox svg.raise { bottom: calc(var(--bottom-distance) + 40%) } + .legend svg { + width: 50%; + height: auto; + float: left; + } +} +@media only screen and (min-width: 780px) and (max-width: 1219px) { + .svgbox { width: 75%; height: 50%; } + .svgbox svg.lower { bottom: calc(var(--bottom-distance) - 40%) } + .svgbox svg.raise { bottom: calc(var(--bottom-distance) + 70%) } + .legend svg { + width: 33%; + height: auto; + float: left; + } +} +@media only screen and (min-width: 1220px) { + .svgbox { width: 40%; height: 40%; } + .svgbox svg.lower { bottom: calc(var(--bottom-distance) - 180px) } + .svgbox svg.raise { bottom: calc(var(--bottom-distance) + 420px) } + .legend svg { + width: 25%; + height: auto; + float: left; + } +} +.legend { + position: absolute; + bottom: 0; + width: calc(100% - 16px); + padding: 8px; +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..6010048 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,255 @@ +import { App } from "./app.class"; +import { Room, RoomTypes } from "./room.class"; + +const rooms = [ + new Room({ floor: 0, number: 0, name: 'AXE', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_axe' }), + new Room({ floor: 0, number: 0, name: 'Bike storage', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_bike_storage' }), + new Room({ floor: 0, number: 0, name: 'Bluetooth', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_bluetooth' }), + new Room({ floor: 0, number: 0, name: 'Canteen', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_canteen' }), + new Room({ floor: 0, number: 0, name: 'Cross bar club', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_cross_bar_club' }), + new Room({ floor: 0, number: 0, name: 'Ericsson Garage', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_ericsson_garage' }), + new Room({ floor: 0, number: 0, name: 'Erlang', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_erlang' }), + new Room({ floor: 0, number: 0, name: 'Heat & eat', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_food_heating_area' }), + new Room({ floor: 0, number: 0, name: 'Hilda', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_hilda' }), + new Room({ floor: 0, number: 0, name: 'Lars Magnus Ericsson', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_lars_magnus_ericsson' }), + new Room({ floor: 0, number: 0, name: 'Medical bay', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_medical_bay' }), + new Room({ floor: 0, number: 0, name: 'Reception', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_reception' }), + new Room({ floor: 0, number: 0, name: 'Security', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_security' }), + new Room({ floor: 0, number: 0, name: 'Titan', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_titan' }), + + new Room({ floor: 1, number: 1, name: 'Aggtelek', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_01' }), + new Room({ floor: 1, number: 11, name: 'Andrássy út', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_11' }), + new Room({ floor: 1, number: 8, name: 'Bazilika', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_08' }), + new Room({ floor: 1, number: 13, name: 'Budai vár', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_13' }), + new Room({ floor: 1, number: 12, name: 'Busó', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_12' }), + new Room({ floor: 1, number: 21, name: 'Car Fleet Manager', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_21' }), + new Room({ floor: 1, number: 3, name: 'Cimbalom', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_03' }), + new Room({ floor: 1, number: 0, name: 'COOR office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_coor' }), + new Room({ floor: 1, number: 9, name: 'Copy room 1NE', type: RoomTypes.TYPE_COPYROOM, id: 'r_1_09' }), + new Room({ floor: 1, number: 20, name: 'Copy room 1SE', type: RoomTypes.TYPE_COPYROOM, id: 'r_1_20' }), + new Room({ floor: 1, number: 25, name: 'Füvészkert', type: RoomTypes.TYPE_TERRACE, id: 't_1_25' }), + new Room({ floor: 1, number: 15, name: 'Gundel', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_15' }), + new Room({ floor: 1, number: 6, name: 'Gyulai', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_06' }), + new Room({ floor: 1, number: 2, name: 'Herend', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_02' }), + new Room({ floor: 1, number: 19, name: 'Hévíz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_19' }), + new Room({ floor: 1, number: 18, name: 'Hollókő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_18' }), + new Room({ floor: 1, number: 5, name: 'Hortobágy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_05' }), + new Room({ floor: 1, number: 16, name: 'Hősök tere', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_16' }), + new Room({ floor: 1, number: 0, name: 'HP office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_hp' }), + new Room({ floor: 1, number: 0, name: 'ITTE office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_itte' }), + new Room({ floor: 1, number: 14, name: 'Kodály', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_14' }), + new Room({ floor: 1, number: 0, name: 'Lab', type: RoomTypes.TYPE_LAB, id: 'r_lab_main' }), + new Room({ floor: 1, number: 24, name: 'Nagycsarnok', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_24' }), + new Room({ floor: 1, number: 7, name: 'Operaház', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_07' }), + new Room({ floor: 1, number: 10, name: 'Pannonhalma', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_10' }), + new Room({ floor: 1, number: 17, name: 'Parlament', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_17' }), + new Room({ floor: 1, number: 4, name: 'Szóda', type: RoomTypes.TYPE_PHONEBOOTH, id: 'r_1_04' }), + new Room({ floor: 1, number: 22, name: 'Tokaj', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_22' }), + new Room({ floor: 1, number: 26, name: 'Walk-in COOR', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_26' }), + new Room({ floor: 1, number: 27, name: 'Walk-in ITTE', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_27' }), + new Room({ floor: 1, number: 28, name: 'Walk-in HP', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_28' }), + new Room({ floor: 1, number: 23, name: 'Zsolnay', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_23' }), + + new Room({ floor: 2, number: 4, name: 'Achát', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_04' }), + new Room({ floor: 2, number: 12, name: 'Akvamarin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_12' }), + new Room({ floor: 2, number: 2, name: 'Almandin', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_02' }), + new Room({ floor: 2, number: 1, name: 'Amazonit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_01' }), + new Room({ floor: 2, number: 10, name: 'Ametiszt', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_10' }), + new Room({ floor: 2, number: 6, name: 'Andradit', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_06' }), + new Room({ floor: 2, number: 41, name: 'Berill', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_41' }), + new Room({ floor: 2, number: 5, name: 'Borostyán', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_05' }), + new Room({ floor: 2, number: 36, name: 'Cirkon', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_36' }), + new Room({ floor: 2, number: 31, name: 'Copy room 2E', type: RoomTypes.TYPE_COPYROOM, id: 'r_2_31' }), + new Room({ floor: 2, number: 16, name: 'Copy room 2W', type: RoomTypes.TYPE_COPYROOM, id: 'r_2_16' }), + new Room({ floor: 2, number: 7, name: 'Diopszid', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_07' }), + new Room({ floor: 2, number: 9, name: 'Fluorit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_09' }), + new Room({ floor: 2, number: 13, name: 'Gránát', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_13' }), + new Room({ floor: 2, number: 39, name: 'Gyémánt', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_39' }), + new Room({ floor: 2, number: 22, name: 'Holdkő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_22' }), + new Room({ floor: 2, number: 27, name: 'Jade', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_27' }), + new Room({ floor: 2, number: 3, name: 'Jáspis', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_03' }), + new Room({ floor: 2, number: 20, name: 'Kalcedon', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_20' }), + new Room({ floor: 2, number: 17, name: 'Karneol', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_17' }), + new Room({ floor: 2, number: 40, name: 'Korund', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_40' }), + new Room({ floor: 2, number: 8, name: 'Labradorit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_08' }), + new Room({ floor: 2, number: 14, name: 'Larimar', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_14' }), + new Room({ floor: 2, number: 18, name: 'Lazurit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_18' }), + new Room({ floor: 2, number: 19, name: 'Malachit', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_19' }), + new Room({ floor: 2, number: 11, name: 'Morganit', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_11' }), + new Room({ floor: 2, number: 34, name: 'Napkő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_34' }), + new Room({ floor: 2, number: 45, name: 'Obszidián', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_45' }), + new Room({ floor: 2, number: 24, name: 'Opál', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_24' }), + new Room({ floor: 2, number: 23, name: 'Ortoklász', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_23' }), + new Room({ floor: 2, number: 28, name: 'Pirit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_28' }), + new Room({ floor: 2, number: 25, name: 'Pirop', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_25' }), + new Room({ floor: 2, number: 30, name: 'Rodonit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_30' }), + new Room({ floor: 2, number: 33, name: 'Rózsakvarc', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_33' }), + new Room({ floor: 2, number: 32, name: 'Rubin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_32' }), + new Room({ floor: 2, number: 15, name: 'Smaragd', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_2_15' }), + new Room({ floor: 2, number: 42, name: 'Spinell', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_42' }), + new Room({ floor: 2, number: 35, name: 'Tanzanit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_35' }), + new Room({ floor: 2, number: 29, name: 'Tigrisszem', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_29' }), + new Room({ floor: 2, number: 43, name: 'Topaz', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_43' }), + new Room({ floor: 2, number: 44, name: 'Turmalin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_44' }), + new Room({ floor: 2, number: 37, name: 'Türkiz', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_37' }), + new Room({ floor: 2, number: 26, name: 'Zafír', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_26' }), + new Room({ floor: 2, number: 21, name: 'Ónix', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_21' }), + new Room({ floor: 2, number: 38, name: 'Variszcit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_38' }), + new Room({ floor: 2, number: 46, name: 'Városliget', type: RoomTypes.TYPE_TERRACE, id: 't_2_46' }), + new Room({ floor: 2, number: 47, name: 'Tabán', type: RoomTypes.TYPE_TERRACE, id: 't_2_47' }), + + new Room({ floor: 3, number: 40, name: 'Almás-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_40' }), + new Room({ floor: 3, number: 2, name: 'Által-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_02' }), + new Room({ floor: 3, number: 39, name: 'Balaton', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_39' }), + new Room({ floor: 3, number: 42, name: 'Baláta-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_42' }), + new Room({ floor: 3, number: 14, name: 'Bánki-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_14' }), + new Room({ floor: 3, number: 23, name: 'Békás-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_23' }), + new Room({ floor: 3, number: 25, name: 'Berettyo', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_25' }), + new Room({ floor: 3, number: 34, name: 'Copy room 3E', type: RoomTypes.TYPE_COPYROOM, id: 'r_3_34' }), + new Room({ floor: 3, number: 15, name: 'Copy room 3W', type: RoomTypes.TYPE_COPYROOM, id: 'r_3_15' }), + new Room({ floor: 3, number: 31, name: 'Deseda', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_31' }), + new Room({ floor: 3, number: 11, name: 'Donát-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_11' }), + new Room({ floor: 3, number: 4, name: 'Dráva', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_04' }), + new Room({ floor: 3, number: 16, name: 'Duna', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_3_16' }), + new Room({ floor: 3, number: 22, name: 'Fehér-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_22' }), + new Room({ floor: 3, number: 21, name: 'Fekete-víz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_21' }), + new Room({ floor: 3, number: 32, name: 'Fertő-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_32' }), + new Room({ floor: 3, number: 29, name: 'Galga-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_29' }), + new Room({ floor: 3, number: 33, name: 'Hernád', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_33' }), + new Room({ floor: 3, number: 41, name: 'Hévizi-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_41' }), + new Room({ floor: 3, number: 3, name: 'Ikva', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_03' }), + new Room({ floor: 3, number: 27, name: 'Kapos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_27' }), + new Room({ floor: 3, number: 10, name: 'Koppány', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_10' }), + new Room({ floor: 3, number: 20, name: 'Kórógy-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_20' }), + new Room({ floor: 3, number: 1, name: 'Kozár-Borzó', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_01' }), + new Room({ floor: 3, number: 24, name: 'Körös', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_24' }), + new Room({ floor: 3, number: 37, name: 'Lajta', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_37' }), + new Room({ floor: 3, number: 19, name: 'Magos-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_19' }), + new Room({ floor: 3, number: 9, name: 'Marcal', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_09' }), + new Room({ floor: 3, number: 17, name: 'Maros', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_17' }), + new Room({ floor: 3, number: 38, name: 'Orfűi-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_38' }), + new Room({ floor: 3, number: 36, name: 'Rába', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_3_36' }), + new Room({ floor: 3, number: 13, name: 'Sajó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_13' }), + new Room({ floor: 3, number: 8, name: 'Sió', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_08' }), + new Room({ floor: 3, number: 18, name: 'Szamos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_18' }), + new Room({ floor: 3, number: 26, name: 'Szelidi-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_26' }), + new Room({ floor: 3, number: 35, name: 'Tisza', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_35' }), + new Room({ floor: 3, number: 30, name: 'Túr', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_30' }), + new Room({ floor: 3, number: 5, name: 'Váli-víz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_05' }), + new Room({ floor: 3, number: 6, name: 'Velencei-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_06' }), + new Room({ floor: 3, number: 12, name: 'Vadkerti-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_12' }), + new Room({ floor: 3, number: 28, name: 'Zagyva', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_28' }), + new Room({ floor: 3, number: 7, name: 'Zala', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_07' }), + + new Room({ floor: 4, number: 1, name: 'Abaliget', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_01' }), + new Room({ floor: 4, number: 7, name: 'Alföld', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_07' }), + new Room({ floor: 4, number: 16, name: 'Bakony', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_16' }), + new Room({ floor: 4, number: 2, name: 'Borsod', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_02' }), + new Room({ floor: 4, number: 13, name: 'Börzsöny', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_13' }), + new Room({ floor: 4, number: 35, name: 'Bugac', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_35' }), + new Room({ floor: 4, number: 22, name: 'Bükk', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_22' }), + new Room({ floor: 4, number: 31, name: 'Cserhát', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_31' }), + new Room({ floor: 4, number: 5, name: 'Csóványos', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_05' }), + new Room({ floor: 4, number: 33, name: 'Copy room 4E', type: RoomTypes.TYPE_COPYROOM, id: 'r_4_33' }), + new Room({ floor: 4, number: 15, name: 'Copy room 4W', type: RoomTypes.TYPE_COPYROOM, id: 'r_4_15' }), + new Room({ floor: 4, number: 27, name: 'Dunazug', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_27' }), + new Room({ floor: 4, number: 8, name: 'Galya-tető', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_08' }), + new Room({ floor: 4, number: 6, name: 'Gellért-hegy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_06' }), + new Room({ floor: 4, number: 34, name: 'Gemenc', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_34' }), + new Room({ floor: 4, number: 38, name: 'Gerecse', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_38' }), + new Room({ floor: 4, number: 3, name: 'Hajdúság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_03' }), + new Room({ floor: 4, number: 21, name: 'Hanság', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_21' }), + new Room({ floor: 4, number: 39, name: 'Illancs', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_39' }), + new Room({ floor: 4, number: 10, name: 'Jászság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_10' }), + new Room({ floor: 4, number: 12, name: 'Kékes', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_12' }), + new Room({ floor: 4, number: 25, name: 'Kőris-hegy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_25' }), + new Room({ floor: 4, number: 19, name: 'Kunság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_19' }), + new Room({ floor: 4, number: 30, name: 'Magos-fa', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_30' }), + new Room({ floor: 4, number: 32, name: 'Mátra', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_32' }), + new Room({ floor: 4, number: 17, name: 'Mecsek', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_17' }), + new Room({ floor: 4, number: 4, name: 'Mezőföld', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_04' }), + new Room({ floor: 4, number: 36, name: 'Nagy-Milic', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_36' }), + new Room({ floor: 4, number: 20, name: 'Nyírség', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_20' }), + new Room({ floor: 4, number: 9, name: 'Pilis', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_09' }), + new Room({ floor: 4, number: 28, name: 'Ördögmalom', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_28' }), + new Room({ floor: 4, number: 29, name: 'Őrség', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_29' }), + new Room({ floor: 4, number: 14, name: 'Rétköz', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_14' }), + new Room({ floor: 4, number: 24, name: 'Szigetköz', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_24' }), + new Room({ floor: 4, number: 18, name: 'Tolna', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_18' }), + new Room({ floor: 4, number: 23, name: 'Vértes', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_23' }), + new Room({ floor: 4, number: 37, name: 'Zemplén', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_37' }), + new Room({ floor: 4, number: 11, name: 'Zengő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_11' }), + new Room({ floor: 4, number: 26, name: 'Zselic', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_26' }), + + new Room({ floor: 5, number: 11, name: 'BASIC', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_11' }), + new Room({ floor: 5, number: 16, name: 'Bánki Donát', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_16' }), + new Room({ floor: 5, number: 24, name: 'Bárány Róbert', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_24' }), + new Room({ floor: 5, number: 26, name: 'Békésy György', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_26' }), + new Room({ floor: 5, number: 12, name: 'Bolyai János', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_12' }), + new Room({ floor: 5, number: 23, name: 'Copy room 5E', type: RoomTypes.TYPE_COPYROOM, id: 'r_5_23' }), + new Room({ floor: 5, number: 3, name: 'Copy room 5W', type: RoomTypes.TYPE_COPYROOM, id: 'r_5_03' }), + new Room({ floor: 5, number: 40, name: 'Csepel-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_40' }), + new Room({ floor: 5, number: 28, name: 'Dinamo', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_28' }), + new Room({ floor: 5, number: 1, name: 'Eötvös Loránd', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_01' }), + new Room({ floor: 5, number: 21, name: 'Floppy', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_21' }), + new Room({ floor: 5, number: 35, name: 'Galamb József', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_35' }), + new Room({ floor: 5, number: 19, name: 'Ganz Ábrahám', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_19' }), + new Room({ floor: 5, number: 34, name: 'Gábor Dénes', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_34' }), + new Room({ floor: 5, number: 4, name: 'Golyóstoll', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_04' }), + new Room({ floor: 5, number: 10, name: 'Gömböc', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_10' }), + new Room({ floor: 5, number: 25, name: 'Hevesy György', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_25' }), + new Room({ floor: 5, number: 13, name: 'Hugonnai Vilma', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_13' }), + new Room({ floor: 5, number: 0, name: 'HR', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_hr' }), + new Room({ floor: 5, number: 30, name: 'Irinyi János', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_30' }), + new Room({ floor: 5, number: 36, name: 'Jedlik Ányos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_36' }), + new Room({ floor: 5, number: 9, name: 'Kandó Kálmán', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_09' }), + new Room({ floor: 5, number: 29, name: 'Karburátor', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_29' }), + new Room({ floor: 5, number: 2, name: 'Kármán Tódor', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_02' }), + new Room({ floor: 5, number: 15, name: 'Kempelen Farkas', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_15' }), + new Room({ floor: 5, number: 37, name: 'Kocsi', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_37' }), + new Room({ floor: 5, number: 20, name: 'Lénárd Fülöp', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_20' }), + new Room({ floor: 5, number: 43, name: 'Lupa-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_43' }), + new Room({ floor: 5, number: 39, name: 'Margitsziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_39' }), + new Room({ floor: 5, number: 27, name: 'Neumann János', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_5_27' }), + new Room({ floor: 5, number: 41, name: 'Óbudai-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_41' }), + new Room({ floor: 5, number: 32, name: 'Petzvál József', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_32' }), + new Room({ floor: 5, number: 33, name: 'Péter Rózsa', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_33' }), + new Room({ floor: 5, number: 14, name: 'Puskás Tivadar', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_14' }), + new Room({ floor: 5, number: 5, name: 'Rubik-kocka', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_05' }), + new Room({ floor: 5, number: 18, name: 'Semmelweis Ignác', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_18' }), + new Room({ floor: 5, number: 6, name: 'Simonyi Károly', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_06' }), + new Room({ floor: 5, number: 17, name: 'Szent-Györgyi Albert', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_17' }), + new Room({ floor: 5, number: 44, name: 'Szentendrei-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_44' }), + new Room({ floor: 5, number: 42, name: 'Szúnyog-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_42' }), + new Room({ floor: 5, number: 31, name: 'Telehor', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_31' }), + new Room({ floor: 5, number: 38, name: 'Telkes Mária', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_38' }), + new Room({ floor: 5, number: 8, name: 'Tihanyi Kálmán', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_08' }), + new Room({ floor: 5, number: 22, name: 'Transzformátor', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_22' }), + new Room({ floor: 5, number: 7, name: 'Üvegbeton', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_07' }), + + new Room({ floor: 6, number: 18, name: 'Andromeda', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_18' }), + new Room({ floor: 6, number: 19, name: 'Carina', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_19' }), + new Room({ floor: 6, number: 10, name: 'Cassiopeia', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_10' }), + new Room({ floor: 6, number: 4, name: 'Copy room 6NE', type: RoomTypes.TYPE_COPYROOM, id: 'r_6_04' }), + new Room({ floor: 6, number: 12, name: 'Copy room 6SW', type: RoomTypes.TYPE_COPYROOM, id: 'r_6_12' }), + new Room({ floor: 6, number: 20, name: 'Crux', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_20' }), + new Room({ floor: 6, number: 16, name: 'Cygnus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_16' }), + new Room({ floor: 6, number: 17, name: 'Draco', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_17' }), + new Room({ floor: 6, number: 13, name: 'Gemini', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_13' }), + new Room({ floor: 6, number: 3, name: 'Hydra', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_03' }), + new Room({ floor: 6, number: 14, name: 'Lacerta', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_14' }), + new Room({ floor: 6, number: 15, name: 'Leo', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_15' }), + new Room({ floor: 6, number: 11, name: 'Libra', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_11' }), + new Room({ floor: 6, number: 9, name: 'Lynx', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_09' }), + new Room({ floor: 6, number: 7, name: 'Octans', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_07' }), + new Room({ floor: 6, number: 8, name: 'Orion', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_08' }), + new Room({ floor: 6, number: 6, name: 'Pegasus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_06' }), + new Room({ floor: 6, number: 5, name: 'Phoenix', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_05' }), + new Room({ floor: 6, number: 2, name: 'Taurus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_02' }), + new Room({ floor: 6, number: 1, name: 'Ursa Major', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_6_01' }), +]; + +const app = new App({ + rooms: rooms, +}); +app.run(); diff --git a/src/room.class.ts b/src/room.class.ts new file mode 100644 index 0000000..1ffe5a8 --- /dev/null +++ b/src/room.class.ts @@ -0,0 +1,48 @@ +export enum RoomTypes { + TYPE_BOOKABLE, + TYPE_BOOKABLE_SPECIAL, + TYPE_NONBOOKABLE, + TYPE_NONBOOKABLE_MINI, + TYPE_NONBOOKABLE_SCRUM, + TYPE_NONBOOKABLE_RESEARCH, + TYPE_COPYROOM, + TYPE_PHONEBOOTH, + TYPE_TERRACE, + TYPE_LAB, +} + +export class Room { + + static typeClassMap = { + [RoomTypes.TYPE_BOOKABLE]: ['bookable'], + [RoomTypes.TYPE_BOOKABLE_SPECIAL]: ['bookable', 'special'], + [RoomTypes.TYPE_NONBOOKABLE]: ['non-bookable'], + [RoomTypes.TYPE_NONBOOKABLE_MINI]: ['non-bookable', 'mini'], + [RoomTypes.TYPE_NONBOOKABLE_SCRUM]: ['non-bookable', 'scrum'], + [RoomTypes.TYPE_NONBOOKABLE_RESEARCH]: ['non-bookable', 'research'], + [RoomTypes.TYPE_COPYROOM]: ['copy-room'], + [RoomTypes.TYPE_PHONEBOOTH]: ['phonebooth'], + [RoomTypes.TYPE_TERRACE]: ['terrace'], + [RoomTypes.TYPE_LAB]: ['storage'], + }; + + public floor: number; + public number: number; + public name: string; + public type: RoomTypes; + public id: string; + + constructor({floor, number, name, type, id}:{ + floor:number, number:number, name:string, type: RoomTypes, id: string + }) { + this.floor = floor; + this.number = number; + this.name = name; + this.type = type; + this.id = id; + } + + get formattedName() { + return this.number ? `${this.name} (${this.number})` : this.name; + } +} diff --git a/src/utm-ericsson-capital.ttf b/src/utm-ericsson-capital.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c37a7977c12b364028f347643cb92a30d82def62 GIT binary patch literal 196304 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≀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 literal 0 HcmV?d00001 diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3b5397e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,59 @@ +{ + "compilerOptions": { + /* Basic Options */ + "target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ +// "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./dist/index.js", /* Concatenate and emit output to single file. */ + "outDir": "ts-out", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + } +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..e4113ae --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,43 @@ +const path = require('path'); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); + +module.exports = { + mode: 'production', + entry: { + js: './src/index.ts', + css: './src/ethmap.css' + }, + devtool: 'source-map', + plugins: [ + new MiniCssExtractPlugin({ + filename: "[name].css", + chunkFilename: "[id].css" + }) + ], + module: { + rules: [{ + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /node_modules/ + },{ + test: /\.css$/, + use: [{ + loader: 'css-loader', + options: { minimize: true } + }] + },{ + test: /\.ttf$/, + use: [{ + loader: 'file-loader', + options: { name: '[name].[ext]', outputPath: 'fonts/' } + }] + }] + }, + resolve: { + extensions: [ '.tsx', '.ts', '.js' ] + }, + output: { + filename: '[name].bundle.js', + path: path.resolve(__dirname, 'dist') + } +};