diff --git a/.gitignore b/.gitignore index 284a021..12cb87b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,4 @@ node_modules/ npm-debug.log # dist -dist \ No newline at end of file +dist diff --git a/.huskyrc.json b/.huskyrc.json new file mode 100644 index 0000000..b67e05e --- /dev/null +++ b/.huskyrc.json @@ -0,0 +1,6 @@ +{ + "hooks": { + "pre-commit": "npm run generate:rk-kit && git add ./rk-kit/generated.ts", + "pre-push": "npm run lint" + } +} diff --git a/eva-kitten/kitten-preprocessor/package-lock.json b/eva-kitten/kitten-preprocessor/package-lock.json deleted file mode 100644 index 8e8d5fa..0000000 --- a/eva-kitten/kitten-preprocessor/package-lock.json +++ /dev/null @@ -1,5669 +0,0 @@ -{ - "name": "eva-kitten", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } - } - }, - "@types/jest": { - "version": "23.3.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.11.tgz", - "integrity": "sha512-eroF85PoG87XjCwzxey7yBsQNkIY/TV5myKKSG/022A0FW25afdu/uub6JDMS5eT68zBBt82S+w/MFOTjeLM3Q==", - "dev": true - }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "dev": true - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "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-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "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" - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "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": "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" - }, - "dependencies": { - "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 - }, - "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 - }, - "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" - } - } - } - }, - "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" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://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-data-descriptor": { - "version": "0.1.4", - "resolved": "http://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" - } - }, - "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 - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "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" - } - } - } - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "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-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "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 - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "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 - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "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-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": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.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": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", - "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "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": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.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 - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "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" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "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" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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 - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "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 - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "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-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", - "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==", - "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 - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "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": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "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 - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "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 - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "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, - "optional": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "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 - }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", - "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "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": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "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" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "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" - } - }, - "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, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": 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, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": 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, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": 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, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": 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, - "optional": 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, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": 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, - "optional": 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 - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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 - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "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-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "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 - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "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 - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "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" - } - }, - "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-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "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": { - "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" - } - } - } - }, - "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" - } - } - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "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 - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://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" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "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-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "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-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "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-generator-fn": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.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-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "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": "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" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", - "dev": true, - "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", - "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", - "dev": true, - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" - }, - "dependencies": { - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", - "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - } - } - }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "dev": true, - "requires": { - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", - "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" - } - }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", - "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", - "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" - } - }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", - "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - } - }, - "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", - "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", - "dev": true, - "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" - } - }, - "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", - "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", - "dev": true, - "requires": { - "pretty-format": "^23.6.0" - } - }, - "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", - "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true - }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", - "dev": true - }, - "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", - "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", - "dev": true, - "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" - } - }, - "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", - "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", - "dev": true, - "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.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 - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", - "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", - "dev": true - }, - "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", - "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", - "dev": true, - "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", - "semver": "^5.5.0" - } - }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "dev": true, - "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^1.0.0", - "source-map": "^0.6.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 - } - } - }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" - } - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", - "dev": true, - "requires": { - "merge-stream": "^1.0.1" - } - }, - "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 - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "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 - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.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" - } - }, - "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.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.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "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" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", - "dev": true - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "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 - }, - "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 - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "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" - }, - "dependencies": { - "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 - }, - "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 - }, - "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 - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-notifier": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", - "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "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 - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "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" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "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-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 - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "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 - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "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" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "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 - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "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 - }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, - "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 - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "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 - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.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" - } - }, - "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "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" - } - }, - "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 - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "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": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "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" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "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" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "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 - }, - "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" - } - } - } - }, - "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" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://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-data-descriptor": { - "version": "0.1.4", - "resolved": "http://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" - } - }, - "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 - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "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" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "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" - } - } - } - }, - "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 - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "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 - }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - } - } - }, - "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" - } - }, - "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-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "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 - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", - "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" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, - "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" - } - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - } - }, - "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": "http://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" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.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" - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "ts-jest": { - "version": "23.10.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-23.10.5.tgz", - "integrity": "sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" - }, - "dependencies": { - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "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" - } - } - } - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "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 - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tslint": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.12.0.tgz", - "integrity": "sha512-CKEcH1MHUBhoV43SA/Jmy1l24HJJgI0eyLbBNSRyFlsQvb9v6Zdq+Nz2vEOH00nC5SUx4SneJ59PZUS/ARcokQ==", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" - }, - "dependencies": { - "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typescript": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", - "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==" - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.17.1", - "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, - "optional": 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" - } - } - } - }, - "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 - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "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-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "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 - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "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": { - "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": "http://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 - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "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": "11.1.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "dev": true - } - } -} diff --git a/eva-kitten/kitten-preprocessor/package.json b/eva-kitten/kitten-preprocessor/package.json deleted file mode 100644 index 84ddaea..0000000 --- a/eva-kitten/kitten-preprocessor/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "eva-kitten", - "version": "0.0.1", - "description": "Preprocessing tool for react-native-ui-kitten", - "scripts": { - "test": "jest", - "start": "tsc --watch", - "build": "tsc", - "lint:src": "tslint --project tsconfig.json ./src/**/*.ts", - "lint:src-fix": "npm run lint:src -- --fix", - "lint": "npm run lint:src", - "lint:fix": "npm run lint:src-fix", - "ci:lint": "npm run lint", - "ci:test": "npm test -- --coverage && cat ./dist/jest/coverage/lcov.info | coveralls" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/akveo/eva.git" - }, - "author": "Akveo", - "license": "MIT", - "bugs": { - "url": "https://github.com/akveo/eva/issues" - }, - "homepage": "https://github.com/akveo/eva#readme", - "dependencies": { - "typescript": "^3.2.2" - }, - "devDependencies": { - "@types/jest": "^23.3.11", - "@types/node": "^10.12.18", - "jest": "^23.6.0", - "ts-jest": "^23.10.5", - "ts-node": "^7.0.1", - "tslint": "^5.12.0" - }, - "jest": { - "transform": { - "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" - }, - "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$", - "moduleFileExtensions": [ - "ts", - "tsx", - "js", - "json" - ] - } -} diff --git a/eva-kitten/kitten-preprocessor/src/index.ts b/eva-kitten/kitten-preprocessor/src/index.ts deleted file mode 100644 index b5e9323..0000000 --- a/eva-kitten/kitten-preprocessor/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -// console.log('Hello world !'); diff --git a/eva-kitten/kitten-preprocessor/tsconfig.json b/eva-kitten/kitten-preprocessor/tsconfig.json deleted file mode 100644 index 2f9da23..0000000 --- a/eva-kitten/kitten-preprocessor/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "commonjs", - "outDir": "./dist", - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "declaration": true, - "lib": [ - "es6" - ] - }, - "files": [ - "src/index.ts" - ], - "exclude": [ - "./node_modules" - ] -} \ No newline at end of file diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..22d3e6f --- /dev/null +++ b/index.ts @@ -0,0 +1,2 @@ +export { default as DefaultMapping } from './mapping/default'; +export { default as DefaultTheme } from './theme/default'; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..e0b0276 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,22 @@ +const { defaults: tsJestConfig } = require('ts-jest/presets'); + +module.exports = { + ...tsJestConfig, + transform: { + ...tsJestConfig.transform, + '\\.js$': '/node_modules/ts-jest/preprocessor.js', + }, + globals: { + 'ts-jest': { + babelConfig: true, + tsConfig: './tsconfig.jest.json', + }, + }, + cacheDirectory: './dist/jest/cache', + coverageDirectory: './dist/jest/coverage', + snapshotResolver: '/jest.config.snapshot', + testPathIgnorePatterns: [ + '/dist', + '/node_modules' + ] +}; diff --git a/jest.config.snapshot.js b/jest.config.snapshot.js new file mode 100644 index 0000000..d51ecf8 --- /dev/null +++ b/jest.config.snapshot.js @@ -0,0 +1,9 @@ +module.exports = { + resolveSnapshotPath: (path, extension) => { + return `${path}${extension}`; + }, + resolveTestPath: (path, extension) => { + return path.slice(0, -extension.length); + }, + testPathForConsistencyCheck: 'some/example.spec.ts', +}; diff --git a/mapping/default/index.ts b/mapping/default/index.ts new file mode 100644 index 0000000..5a94728 --- /dev/null +++ b/mapping/default/index.ts @@ -0,0 +1,3 @@ +import { default as mapping } from './mapping.json'; + +export default mapping; diff --git a/mapping/default/mapping.json b/mapping/default/mapping.json new file mode 100644 index 0000000..f1074d6 --- /dev/null +++ b/mapping/default/mapping.json @@ -0,0 +1,86 @@ +{ + "Radio": { + "meta": { + "variants": { + "status": [ + "error" + ], + "size": [ + "small", + "big" + ] + }, + "states": [ + "checked", + "disabled", + "active" + ] + }, + "appearance": { + "default": { + "mapping": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-primary", + "selectColor": "transparent", + "highlightColor": "transparent", + "state": { + "active": { + "borderColor": "gray-dark", + "highlightColor": "gray-light" + }, + "checked": { + "borderColor": "blue-primary", + "selectColor": "blue-primary" + }, + "disabled": { + "borderColor": "gray-light" + }, + "checked.active": { + "borderColor": "blue-dark" + }, + "checked.disabled": { + "selectColor": "gray-primary" + } + } + }, + "variant": { + "status": { + "error": { + "mapping": { + "borderColor": "pink-primary", + "state": { + "checked": { + "borderColor": "pink-primary", + "selectColor": "pink-primary" + }, + "checked.active": { + "borderColor": "pink-primary" + } + } + } + } + }, + "size": { + "big": { + "mapping": { + "size": 42, + "innerSize": 28, + "highlightSize": 70 + } + }, + "small": { + "mapping": { + "size": 30, + "innerSize": 20, + "highlightSize": 50 + } + } + } + } + } + } + } +} diff --git a/mapping/default/package.json b/mapping/default/package.json new file mode 100644 index 0000000..7fe2ac1 --- /dev/null +++ b/mapping/default/package.json @@ -0,0 +1,12 @@ +{ + "name": "@eva/default", + "description": "Eva design system default scheme", + "version": "0.0.1", + "license": "MIT", + "author": "akveo ", + "homepage": "https://github.com/akveo/eva#readme", + "repository": "git+https://github.com/akveo/eva.git", + "bugs": { + "url": "https://github.com/akveo/eva/issues" + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..20da290 --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "eva", + "description": "Eva design system", + "version": "0.0.1", + "license": "MIT", + "author": "akveo ", + "homepage": "https://github.com/akveo/eva#readme", + "repository": "git+https://github.com/akveo/eva.git", + "bugs": { + "url": "https://github.com/akveo/eva/issues" + }, + "scripts": { + "start": "npm run build -- --watch", + "build": "tsc", + "clean": "rimraf ./dist", + "lint": "tslint --project tsconfig.json ./src/**/*.ts", + "lint:fix": "npm run lint -- --fix", + "ci:test": "npm test -- --coverage && cat ./dist/jest/coverage/lcov.info | coveralls", + "test": "jest", + "generate:rk-kit": "(cd ./rk-kit/scripts && ts-node generate)" + }, + "devDependencies": { + "@types/jest": "^23.3.11", + "@types/node": "^10.12.18", + "husky": "^1.1.2", + "jest": "^24.0.0-alpha.9", + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "ts-node": "^7.0.1", + "tslint": "^5.12.0", + "typescript": "^3.2.2" + } +} diff --git a/processor/rk-kit/index.ts b/processor/rk-kit/index.ts new file mode 100644 index 0000000..bd799a2 --- /dev/null +++ b/processor/rk-kit/index.ts @@ -0,0 +1,2 @@ +export * from './src/processor'; +export * from './src/service'; diff --git a/processor/rk-kit/package.json b/processor/rk-kit/package.json new file mode 100644 index 0000000..8234812 --- /dev/null +++ b/processor/rk-kit/package.json @@ -0,0 +1,12 @@ +{ + "name": "@eva/processor-rk", + "description": "Eva scheme processor for react-native-ui-kitten", + "version": "0.0.1", + "license": "MIT", + "author": "akveo ", + "homepage": "https://github.com/akveo/eva#readme", + "repository": "git+https://github.com/akveo/eva.git", + "bugs": { + "url": "https://github.com/akveo/eva/issues" + } +} diff --git a/processor/rk-kit/src/processor/index.ts b/processor/rk-kit/src/processor/index.ts new file mode 100644 index 0000000..a01db61 --- /dev/null +++ b/processor/rk-kit/src/processor/index.ts @@ -0,0 +1,3 @@ +export * from './mapping/mappingProcessor'; +export * from './meta/metaProcessor'; +export * from './type'; diff --git a/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.config.ts b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.config.ts new file mode 100644 index 0000000..1c5ae4c --- /dev/null +++ b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.config.ts @@ -0,0 +1,224 @@ +export const mapping = { + Radio: { + meta: { + variants: { + status: [ + 'error', + ], + size: [ + 'small', + 'big', + ], + }, + states: [ + 'checked', + 'disabled', + 'active', + ], + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + highlightSize: 60, + borderWidth: 2, + borderColor: 'gray-primary', + selectColor: 'transparent', + highlightColor: 'transparent', + state: { + active: { + borderColor: 'gray-dark', + highlightColor: 'gray-light', + }, + checked: { + borderColor: 'blue-primary', + selectColor: 'blue-primary', + }, + disabled: { + borderColor: 'gray-light', + }, + 'checked.active': { + borderColor: 'blue-dark', + }, + 'checked.disabled': { + selectColor: 'gray-primary', + }, + }, + }, + variant: { + status: { + error: { + mapping: { + borderColor: 'pink-primary', + state: { + checked: { + borderColor: 'pink-primary', + selectColor: 'pink-primary', + }, + 'checked.active': { + borderColor: 'pink-primary', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + highlightSize: 70, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + }, + }, + }, + }, + }, + custom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + state: { + checked: { + borderColor: 'blue-test1', + }, + }, + }, + variant: { + size: { + big: { + mapping: { + size: 66, + innerSize: 34, + highlightSize: 60, + state: { + active: { + testToken: 'test-token', + }, + }, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + state: { + checked: { + selectColor: 'blue-test', + }, + }, + }, + }, + }, + }, + }, + }, + }, +}; + +export const emptyMapping = { + Test: { + meta: { + variants: { + status: [ + 'error', + 'info', + ], + size: [ + 'small', + 'big', + ], + }, + states: [ + 'checked', + 'disabled', + 'active', + ], + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + highlightSize: 60, + borderWidth: 2, + borderColor: 'gray-primary', + selectColor: 'transparent', + highlightColor: 'transparent', + }, + variant: { + status: { + error: { + mapping: { + borderColor: 'pink-primary', + state: { + checked: { + borderColor: 'pink-primary', + selectColor: 'pink-primary', + }, + 'checked.active': { + borderColor: 'pink-primary', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + highlightSize: 70, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + }, + }, + }, + }, + }, + custom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + }, + variant: { + status: { + info: { + mapping: { + size: 66, + innerSize: 34, + highlightSize: 60, + }, + }, + }, + }, + }, + superCustom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + }, + variant: {}, + }, + }, + }, +}; diff --git a/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts new file mode 100644 index 0000000..0fa8960 --- /dev/null +++ b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts @@ -0,0 +1,21 @@ +import { MappingProcessor } from './mappingProcessor'; +import { + mapping, + emptyMapping, +} from './mappingProcessor.spec.config'; + +describe('@processor: service checks', () => { + + const processor = new MappingProcessor(); + + it('* theme mapping meta expected', () => { + const value = processor.process(mapping); + expect(value).toMatchSnapshot(); + }); + + it('* theme mapping meta empty', () => { + const value = processor.process(emptyMapping); + expect(value).toMatchSnapshot(); + }); + +}); diff --git a/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts.snap b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts.snap new file mode 100644 index 0000000..28d2897 --- /dev/null +++ b/processor/rk-kit/src/processor/mapping/mappingProcessor.spec.ts.snap @@ -0,0 +1,304 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`@processor: service checks * theme mapping meta 1`] = ` +Array [ + Object { + "appearance": "default", + "name": "Radio", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, + Object { + "appearance": "custom", + "name": "Radio", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, +] +`; + +exports[`@processor: service checks * theme mapping meta 2`] = ` +Array [ + Object { + "appearance": "default", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, + Object { + "appearance": "custom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, + Object { + "appearance": "superCustom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, +] +`; + +exports[`@processor: service checks * theme mapping meta empty 1`] = ` +Array [ + Object { + "appearance": "default", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, + Object { + "appearance": "custom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, + Object { + "appearance": "superCustom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, +] +`; + +exports[`@processor: service checks * theme mapping meta expected 1`] = ` +Array [ + Object { + "appearance": "default", + "name": "Radio", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, + Object { + "appearance": "custom", + "name": "Radio", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "error.small", + "error.big", + "small", + "big", + ], + }, +] +`; + +exports[`@processor: service checks * theme mapping meta unexpected 1`] = ` +Array [ + Object { + "appearance": "default", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, + Object { + "appearance": "custom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, + Object { + "appearance": "superCustom", + "name": "Test", + "states": Array [ + "checked", + "checked.disabled", + "checked.active", + "checked.disabled.active", + "disabled", + "disabled.active", + "active", + ], + "variants": Array [ + "error", + "info", + "error.small", + "error.big", + "info.small", + "info.big", + "small", + "big", + ], + }, +] +`; diff --git a/processor/rk-kit/src/processor/mapping/mappingProcessor.ts b/processor/rk-kit/src/processor/mapping/mappingProcessor.ts new file mode 100644 index 0000000..8b38c29 --- /dev/null +++ b/processor/rk-kit/src/processor/mapping/mappingProcessor.ts @@ -0,0 +1,78 @@ +import { Processor } from '../processor'; +import { + getComponentVariants, + getComponentStates, + SEPARATOR_MAPPING_ENTRY, + ThemeMappingType, + ComponentMappingType, getComponentVariantGroups, +} from '../../service'; +import { MappingMetaType } from '../type'; + +export class MappingProcessor implements Processor { + + process(params: ThemeMappingType): MappingMetaType[] { + return Object.keys(params).reduce((acc: MappingMetaType[], component: string) => { + return [ + ...acc, + ...this.getComponentMappingMeta(params, component), + ]; + }, []); + } + + private getComponentMappingMeta(mapping: ThemeMappingType, component: string): MappingMetaType[] { + const componentMapping: ComponentMappingType = mapping[component]; + + return Object.keys(componentMapping.appearance).map((appearance: string): MappingMetaType => ({ + name: component, + appearance: appearance, + variants: this.getComponentVariants(mapping, component), + states: this.getComponentStates(mapping, component), + })); + } + + private getComponentVariants(mapping: ThemeMappingType, component: string): string[] { + const variants: string[][] = getComponentVariants(mapping, component); + + return this.concatComponentVariants([...variants]); + } + + private getComponentStates(mapping: ThemeMappingType, component: string): string[] { + const states: string[] = getComponentStates(mapping, component); + + return this.concatComponentStates([...states]); + } + + private concatComponentVariants(variants: string[][], result: string[] = []): string[] { + if (variants.length === 0) { + return result; + } + + const concat = variants.reduce((acc: string[], current: string[]) => { + return [...acc, ...this.concatVariantGroups(acc, current)]; + }, variants.shift()); + + return this.concatComponentVariants(variants, [...result, ...concat]); + } + + private concatVariantGroups(lhs: string[], rhs: string[]): string[] { + return lhs.reduce((acc: string[], lhsValue: string) => { + const concat = rhs.map(rhsValue => { + return lhsValue.concat(SEPARATOR_MAPPING_ENTRY, rhsValue); + }); + return [...acc, ...concat]; + }, []); + } + + private concatComponentStates(states: string[], result: string[] = []): string[] { + if (states.length === 0) { + return result; + } + + const concat = states.reduce((acc: string[], current: string) => { + const next = acc.map(value => value.concat(SEPARATOR_MAPPING_ENTRY, current)); + return [...acc, ...next]; + }, [states.shift()]); + + return this.concatComponentStates(states,[...result, ...concat]); + } +} diff --git a/processor/rk-kit/src/processor/meta/metaProcessor.spec.config.ts b/processor/rk-kit/src/processor/meta/metaProcessor.spec.config.ts new file mode 100644 index 0000000..1c5ae4c --- /dev/null +++ b/processor/rk-kit/src/processor/meta/metaProcessor.spec.config.ts @@ -0,0 +1,224 @@ +export const mapping = { + Radio: { + meta: { + variants: { + status: [ + 'error', + ], + size: [ + 'small', + 'big', + ], + }, + states: [ + 'checked', + 'disabled', + 'active', + ], + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + highlightSize: 60, + borderWidth: 2, + borderColor: 'gray-primary', + selectColor: 'transparent', + highlightColor: 'transparent', + state: { + active: { + borderColor: 'gray-dark', + highlightColor: 'gray-light', + }, + checked: { + borderColor: 'blue-primary', + selectColor: 'blue-primary', + }, + disabled: { + borderColor: 'gray-light', + }, + 'checked.active': { + borderColor: 'blue-dark', + }, + 'checked.disabled': { + selectColor: 'gray-primary', + }, + }, + }, + variant: { + status: { + error: { + mapping: { + borderColor: 'pink-primary', + state: { + checked: { + borderColor: 'pink-primary', + selectColor: 'pink-primary', + }, + 'checked.active': { + borderColor: 'pink-primary', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + highlightSize: 70, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + }, + }, + }, + }, + }, + custom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + state: { + checked: { + borderColor: 'blue-test1', + }, + }, + }, + variant: { + size: { + big: { + mapping: { + size: 66, + innerSize: 34, + highlightSize: 60, + state: { + active: { + testToken: 'test-token', + }, + }, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + state: { + checked: { + selectColor: 'blue-test', + }, + }, + }, + }, + }, + }, + }, + }, + }, +}; + +export const emptyMapping = { + Test: { + meta: { + variants: { + status: [ + 'error', + 'info', + ], + size: [ + 'small', + 'big', + ], + }, + states: [ + 'checked', + 'disabled', + 'active', + ], + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + highlightSize: 60, + borderWidth: 2, + borderColor: 'gray-primary', + selectColor: 'transparent', + highlightColor: 'transparent', + }, + variant: { + status: { + error: { + mapping: { + borderColor: 'pink-primary', + state: { + checked: { + borderColor: 'pink-primary', + selectColor: 'pink-primary', + }, + 'checked.active': { + borderColor: 'pink-primary', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + highlightSize: 70, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + highlightSize: 50, + }, + }, + }, + }, + }, + custom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + }, + variant: { + status: { + info: { + mapping: { + size: 66, + innerSize: 34, + highlightSize: 60, + }, + }, + }, + }, + }, + superCustom: { + mapping: { + size: 55, + innerSize: 33, + highlightSize: 67, + borderWidth: 3, + }, + variant: {}, + }, + }, + }, +}; diff --git a/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts b/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts new file mode 100644 index 0000000..3b0a2c4 --- /dev/null +++ b/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts @@ -0,0 +1,63 @@ +import { MetaProcessor } from './metaProcessor'; +import { MappingProcessor } from '../'; +import { + mapping, + emptyMapping, +} from './metaProcessor.spec.config'; +import { getAllStylesCount, IndexSignatureBase } from '../../service'; + +describe('@processor: service checks', () => { + + const processor = new MetaProcessor(); + const mappingProcessor: MappingProcessor = new MappingProcessor(); + + it('* theme map expected', () => { + const value = processor.process({ + mapping: mapping, + meta: mappingProcessor.process(mapping), + }); + expect(value).toMatchSnapshot(); + }); + + it('* theme map unexpected', () => { + const value = processor.process({ + mapping: mapping, + meta: mappingProcessor.process(emptyMapping), + }); + expect(value).toMatchSnapshot(); + }); + +}); + +describe('* checking size of generated styles', () => { + + const processor = new MetaProcessor(); + const mappingProcessor: MappingProcessor = new MappingProcessor(); + + it('* 1', () => { + const value = processor.process({ + mapping: mapping, + meta: mappingProcessor.process(mapping), + }); + const generatedCount: number = getAllStylesCount(mapping); + const expected: any = Object.values(value) + .map((component: IndexSignatureBase) => Object.keys(component).length) + .reduce((acc: number, curr: number) => acc + curr); + + expect(expected).toBe(generatedCount); + }); + + it('* 2', () => { + const value = processor.process({ + mapping: mapping, + meta: mappingProcessor.process(emptyMapping), + }); + const generatedCount: number = getAllStylesCount(emptyMapping); + const expected: any = Object.values(value) + .map((component: IndexSignatureBase) => Object.keys(component).length) + .reduce((acc: number, curr: number) => acc + curr); + + expect(expected).toBe(generatedCount); + }); + +}); diff --git a/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts.snap b/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts.snap new file mode 100644 index 0000000..8c110ad --- /dev/null +++ b/processor/rk-kit/src/processor/meta/metaProcessor.spec.ts.snap @@ -0,0 +1,2205 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`@processor: service checks * theme map expected 1`] = ` +Object { + "Radio": Object { + "custom": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.big": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.big.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "blue-primary", + "size": 66, + }, + "custom.big.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "blue-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + }, + "custom.big.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "blue-primary", + "size": 55, + }, + "custom.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "blue-primary", + "size": 55, + }, + "custom.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.big": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.error.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "pink-primary", + "size": 66, + }, + "custom.error.big.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "pink-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + }, + "custom.error.big.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.error.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.error.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "pink-primary", + "size": 55, + }, + "custom.error.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "pink-primary", + "size": 55, + }, + "custom.error.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.error.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.error.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.small": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.error.small.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.error.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.error.small.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.error.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.small.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.small.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.big": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "blue-primary", + "size": 42, + }, + "default.big.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "blue-primary", + "size": 42, + }, + "default.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.big.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "blue-primary", + "size": 36, + }, + "default.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "blue-primary", + "size": 36, + }, + "default.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.big": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "pink-primary", + "size": 42, + }, + "default.error.big.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "pink-primary", + "size": 42, + }, + "default.error.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.error.big.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.error.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "pink-primary", + "size": 36, + }, + "default.error.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "pink-primary", + "size": 36, + }, + "default.error.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.error.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.error.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.small": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "pink-primary", + "size": 30, + }, + "default.error.small.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "pink-primary", + "size": 30, + }, + "default.error.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.error.small.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.error.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-primary", + "size": 30, + }, + "default.small.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-primary", + "size": 30, + }, + "default.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.small.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + }, +} +`; + +exports[`@processor: service checks * theme map unexpected 1`] = ` +Object { + "Test": Object { + "custom": Object {}, + "custom.active": Object {}, + "custom.big": Object {}, + "custom.big.active": Object {}, + "custom.big.checked": Object {}, + "custom.big.checked.active": Object {}, + "custom.big.checked.disabled": Object {}, + "custom.big.checked.disabled.active": Object {}, + "custom.big.disabled": Object {}, + "custom.big.disabled.active": Object {}, + "custom.checked": Object {}, + "custom.checked.active": Object {}, + "custom.checked.disabled": Object {}, + "custom.checked.disabled.active": Object {}, + "custom.disabled": Object {}, + "custom.disabled.active": Object {}, + "custom.error": Object {}, + "custom.error.active": Object {}, + "custom.error.big": Object {}, + "custom.error.big.active": Object {}, + "custom.error.big.checked": Object {}, + "custom.error.big.checked.active": Object {}, + "custom.error.big.checked.disabled": Object {}, + "custom.error.big.checked.disabled.active": Object {}, + "custom.error.big.disabled": Object {}, + "custom.error.big.disabled.active": Object {}, + "custom.error.checked": Object {}, + "custom.error.checked.active": Object {}, + "custom.error.checked.disabled": Object {}, + "custom.error.checked.disabled.active": Object {}, + "custom.error.disabled": Object {}, + "custom.error.disabled.active": Object {}, + "custom.error.small": Object {}, + "custom.error.small.active": Object {}, + "custom.error.small.checked": Object {}, + "custom.error.small.checked.active": Object {}, + "custom.error.small.checked.disabled": Object {}, + "custom.error.small.checked.disabled.active": Object {}, + "custom.error.small.disabled": Object {}, + "custom.error.small.disabled.active": Object {}, + "custom.info": Object {}, + "custom.info.active": Object {}, + "custom.info.big": Object {}, + "custom.info.big.active": Object {}, + "custom.info.big.checked": Object {}, + "custom.info.big.checked.active": Object {}, + "custom.info.big.checked.disabled": Object {}, + "custom.info.big.checked.disabled.active": Object {}, + "custom.info.big.disabled": Object {}, + "custom.info.big.disabled.active": Object {}, + "custom.info.checked": Object {}, + "custom.info.checked.active": Object {}, + "custom.info.checked.disabled": Object {}, + "custom.info.checked.disabled.active": Object {}, + "custom.info.disabled": Object {}, + "custom.info.disabled.active": Object {}, + "custom.info.small": Object {}, + "custom.info.small.active": Object {}, + "custom.info.small.checked": Object {}, + "custom.info.small.checked.active": Object {}, + "custom.info.small.checked.disabled": Object {}, + "custom.info.small.checked.disabled.active": Object {}, + "custom.info.small.disabled": Object {}, + "custom.info.small.disabled.active": Object {}, + "custom.small": Object {}, + "custom.small.active": Object {}, + "custom.small.checked": Object {}, + "custom.small.checked.active": Object {}, + "custom.small.checked.disabled": Object {}, + "custom.small.checked.disabled.active": Object {}, + "custom.small.disabled": Object {}, + "custom.small.disabled.active": Object {}, + "default": Object {}, + "default.active": Object {}, + "default.big": Object {}, + "default.big.active": Object {}, + "default.big.checked": Object {}, + "default.big.checked.active": Object {}, + "default.big.checked.disabled": Object {}, + "default.big.checked.disabled.active": Object {}, + "default.big.disabled": Object {}, + "default.big.disabled.active": Object {}, + "default.checked": Object {}, + "default.checked.active": Object {}, + "default.checked.disabled": Object {}, + "default.checked.disabled.active": Object {}, + "default.disabled": Object {}, + "default.disabled.active": Object {}, + "default.error": Object {}, + "default.error.active": Object {}, + "default.error.big": Object {}, + "default.error.big.active": Object {}, + "default.error.big.checked": Object {}, + "default.error.big.checked.active": Object {}, + "default.error.big.checked.disabled": Object {}, + "default.error.big.checked.disabled.active": Object {}, + "default.error.big.disabled": Object {}, + "default.error.big.disabled.active": Object {}, + "default.error.checked": Object {}, + "default.error.checked.active": Object {}, + "default.error.checked.disabled": Object {}, + "default.error.checked.disabled.active": Object {}, + "default.error.disabled": Object {}, + "default.error.disabled.active": Object {}, + "default.error.small": Object {}, + "default.error.small.active": Object {}, + "default.error.small.checked": Object {}, + "default.error.small.checked.active": Object {}, + "default.error.small.checked.disabled": Object {}, + "default.error.small.checked.disabled.active": Object {}, + "default.error.small.disabled": Object {}, + "default.error.small.disabled.active": Object {}, + "default.info": Object {}, + "default.info.active": Object {}, + "default.info.big": Object {}, + "default.info.big.active": Object {}, + "default.info.big.checked": Object {}, + "default.info.big.checked.active": Object {}, + "default.info.big.checked.disabled": Object {}, + "default.info.big.checked.disabled.active": Object {}, + "default.info.big.disabled": Object {}, + "default.info.big.disabled.active": Object {}, + "default.info.checked": Object {}, + "default.info.checked.active": Object {}, + "default.info.checked.disabled": Object {}, + "default.info.checked.disabled.active": Object {}, + "default.info.disabled": Object {}, + "default.info.disabled.active": Object {}, + "default.info.small": Object {}, + "default.info.small.active": Object {}, + "default.info.small.checked": Object {}, + "default.info.small.checked.active": Object {}, + "default.info.small.checked.disabled": Object {}, + "default.info.small.checked.disabled.active": Object {}, + "default.info.small.disabled": Object {}, + "default.info.small.disabled.active": Object {}, + "default.small": Object {}, + "default.small.active": Object {}, + "default.small.checked": Object {}, + "default.small.checked.active": Object {}, + "default.small.checked.disabled": Object {}, + "default.small.checked.disabled.active": Object {}, + "default.small.disabled": Object {}, + "default.small.disabled.active": Object {}, + "superCustom": Object {}, + "superCustom.active": Object {}, + "superCustom.big": Object {}, + "superCustom.big.active": Object {}, + "superCustom.big.checked": Object {}, + "superCustom.big.checked.active": Object {}, + "superCustom.big.checked.disabled": Object {}, + "superCustom.big.checked.disabled.active": Object {}, + "superCustom.big.disabled": Object {}, + "superCustom.big.disabled.active": Object {}, + "superCustom.checked": Object {}, + "superCustom.checked.active": Object {}, + "superCustom.checked.disabled": Object {}, + "superCustom.checked.disabled.active": Object {}, + "superCustom.disabled": Object {}, + "superCustom.disabled.active": Object {}, + "superCustom.error": Object {}, + "superCustom.error.active": Object {}, + "superCustom.error.big": Object {}, + "superCustom.error.big.active": Object {}, + "superCustom.error.big.checked": Object {}, + "superCustom.error.big.checked.active": Object {}, + "superCustom.error.big.checked.disabled": Object {}, + "superCustom.error.big.checked.disabled.active": Object {}, + "superCustom.error.big.disabled": Object {}, + "superCustom.error.big.disabled.active": Object {}, + "superCustom.error.checked": Object {}, + "superCustom.error.checked.active": Object {}, + "superCustom.error.checked.disabled": Object {}, + "superCustom.error.checked.disabled.active": Object {}, + "superCustom.error.disabled": Object {}, + "superCustom.error.disabled.active": Object {}, + "superCustom.error.small": Object {}, + "superCustom.error.small.active": Object {}, + "superCustom.error.small.checked": Object {}, + "superCustom.error.small.checked.active": Object {}, + "superCustom.error.small.checked.disabled": Object {}, + "superCustom.error.small.checked.disabled.active": Object {}, + "superCustom.error.small.disabled": Object {}, + "superCustom.error.small.disabled.active": Object {}, + "superCustom.info": Object {}, + "superCustom.info.active": Object {}, + "superCustom.info.big": Object {}, + "superCustom.info.big.active": Object {}, + "superCustom.info.big.checked": Object {}, + "superCustom.info.big.checked.active": Object {}, + "superCustom.info.big.checked.disabled": Object {}, + "superCustom.info.big.checked.disabled.active": Object {}, + "superCustom.info.big.disabled": Object {}, + "superCustom.info.big.disabled.active": Object {}, + "superCustom.info.checked": Object {}, + "superCustom.info.checked.active": Object {}, + "superCustom.info.checked.disabled": Object {}, + "superCustom.info.checked.disabled.active": Object {}, + "superCustom.info.disabled": Object {}, + "superCustom.info.disabled.active": Object {}, + "superCustom.info.small": Object {}, + "superCustom.info.small.active": Object {}, + "superCustom.info.small.checked": Object {}, + "superCustom.info.small.checked.active": Object {}, + "superCustom.info.small.checked.disabled": Object {}, + "superCustom.info.small.checked.disabled.active": Object {}, + "superCustom.info.small.disabled": Object {}, + "superCustom.info.small.disabled.active": Object {}, + "superCustom.small": Object {}, + "superCustom.small.active": Object {}, + "superCustom.small.checked": Object {}, + "superCustom.small.checked.active": Object {}, + "superCustom.small.checked.disabled": Object {}, + "superCustom.small.checked.disabled.active": Object {}, + "superCustom.small.disabled": Object {}, + "superCustom.small.disabled.active": Object {}, + }, +} +`; + +exports[`@processor: service checks * theme mapping meta expected 1`] = ` +Object { + "Radio": Object { + "custom": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.big": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.big.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "blue-primary", + "size": 66, + }, + "custom.big.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "blue-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + }, + "custom.big.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "blue-primary", + "size": 55, + }, + "custom.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "blue-primary", + "size": 55, + }, + "custom.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.big": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.error.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "pink-primary", + "size": 66, + }, + "custom.error.big.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "pink-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + }, + "custom.error.big.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "gray-primary", + "size": 66, + "testToken": "test-token", + }, + "custom.error.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + }, + "custom.error.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 34, + "selectColor": "transparent", + "size": 66, + "testToken": "test-token", + }, + "custom.error.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "pink-primary", + "size": 55, + }, + "custom.error.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "pink-primary", + "size": 55, + }, + "custom.error.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.error.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "gray-primary", + "size": 55, + }, + "custom.error.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 67, + "innerSize": 33, + "selectColor": "transparent", + "size": 55, + }, + "custom.error.small": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.error.small.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.error.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.error.small.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.error.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.error.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small": Object { + "borderColor": "gray-primary", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.checked": Object { + "borderColor": "blue-test1", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.small.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-test", + "size": 30, + }, + "custom.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.small.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "custom.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 3, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "custom.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 3, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.big": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "blue-primary", + "size": 42, + }, + "default.big.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "blue-primary", + "size": 42, + }, + "default.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.big.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "blue-primary", + "size": 36, + }, + "default.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "blue-primary", + "size": 36, + }, + "default.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.big": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "pink-primary", + "size": 42, + }, + "default.error.big.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "pink-primary", + "size": 42, + }, + "default.error.big.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.error.big.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "gray-primary", + "size": 42, + }, + "default.error.big.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.big.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 70, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, + }, + "default.error.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "pink-primary", + "size": 36, + }, + "default.error.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "pink-primary", + "size": 36, + }, + "default.error.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.error.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "gray-primary", + "size": 36, + }, + "default.error.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 60, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + "default.error.small": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.checked": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "pink-primary", + "size": 30, + }, + "default.error.small.checked.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "pink-primary", + "size": 30, + }, + "default.error.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.error.small.checked.disabled.active": Object { + "borderColor": "pink-primary", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.error.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.error.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small": Object { + "borderColor": "gray-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.checked": Object { + "borderColor": "blue-primary", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-primary", + "size": 30, + }, + "default.small.checked.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "blue-primary", + "size": 30, + }, + "default.small.checked.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.small.checked.disabled.active": Object { + "borderColor": "blue-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "gray-primary", + "size": 30, + }, + "default.small.disabled": Object { + "borderColor": "gray-light", + "borderWidth": 2, + "highlightColor": "transparent", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + "default.small.disabled.active": Object { + "borderColor": "gray-dark", + "borderWidth": 2, + "highlightColor": "gray-light", + "highlightSize": 50, + "innerSize": 20, + "selectColor": "transparent", + "size": 30, + }, + }, +} +`; + +exports[`@processor: service checks * theme mapping meta unexpected 1`] = ` +Object { + "Test": Object { + "custom": Object {}, + "custom.active": Object {}, + "custom.big": Object {}, + "custom.big.active": Object {}, + "custom.big.checked": Object {}, + "custom.big.checked.active": Object {}, + "custom.big.checked.disabled": Object {}, + "custom.big.checked.disabled.active": Object {}, + "custom.big.disabled": Object {}, + "custom.big.disabled.active": Object {}, + "custom.checked": Object {}, + "custom.checked.active": Object {}, + "custom.checked.disabled": Object {}, + "custom.checked.disabled.active": Object {}, + "custom.disabled": Object {}, + "custom.disabled.active": Object {}, + "custom.error": Object {}, + "custom.error.active": Object {}, + "custom.error.big": Object {}, + "custom.error.big.active": Object {}, + "custom.error.big.checked": Object {}, + "custom.error.big.checked.active": Object {}, + "custom.error.big.checked.disabled": Object {}, + "custom.error.big.checked.disabled.active": Object {}, + "custom.error.big.disabled": Object {}, + "custom.error.big.disabled.active": Object {}, + "custom.error.checked": Object {}, + "custom.error.checked.active": Object {}, + "custom.error.checked.disabled": Object {}, + "custom.error.checked.disabled.active": Object {}, + "custom.error.disabled": Object {}, + "custom.error.disabled.active": Object {}, + "custom.error.small": Object {}, + "custom.error.small.active": Object {}, + "custom.error.small.checked": Object {}, + "custom.error.small.checked.active": Object {}, + "custom.error.small.checked.disabled": Object {}, + "custom.error.small.checked.disabled.active": Object {}, + "custom.error.small.disabled": Object {}, + "custom.error.small.disabled.active": Object {}, + "custom.info": Object {}, + "custom.info.active": Object {}, + "custom.info.big": Object {}, + "custom.info.big.active": Object {}, + "custom.info.big.checked": Object {}, + "custom.info.big.checked.active": Object {}, + "custom.info.big.checked.disabled": Object {}, + "custom.info.big.checked.disabled.active": Object {}, + "custom.info.big.disabled": Object {}, + "custom.info.big.disabled.active": Object {}, + "custom.info.checked": Object {}, + "custom.info.checked.active": Object {}, + "custom.info.checked.disabled": Object {}, + "custom.info.checked.disabled.active": Object {}, + "custom.info.disabled": Object {}, + "custom.info.disabled.active": Object {}, + "custom.info.small": Object {}, + "custom.info.small.active": Object {}, + "custom.info.small.checked": Object {}, + "custom.info.small.checked.active": Object {}, + "custom.info.small.checked.disabled": Object {}, + "custom.info.small.checked.disabled.active": Object {}, + "custom.info.small.disabled": Object {}, + "custom.info.small.disabled.active": Object {}, + "custom.small": Object {}, + "custom.small.active": Object {}, + "custom.small.checked": Object {}, + "custom.small.checked.active": Object {}, + "custom.small.checked.disabled": Object {}, + "custom.small.checked.disabled.active": Object {}, + "custom.small.disabled": Object {}, + "custom.small.disabled.active": Object {}, + "default": Object {}, + "default.active": Object {}, + "default.big": Object {}, + "default.big.active": Object {}, + "default.big.checked": Object {}, + "default.big.checked.active": Object {}, + "default.big.checked.disabled": Object {}, + "default.big.checked.disabled.active": Object {}, + "default.big.disabled": Object {}, + "default.big.disabled.active": Object {}, + "default.checked": Object {}, + "default.checked.active": Object {}, + "default.checked.disabled": Object {}, + "default.checked.disabled.active": Object {}, + "default.disabled": Object {}, + "default.disabled.active": Object {}, + "default.error": Object {}, + "default.error.active": Object {}, + "default.error.big": Object {}, + "default.error.big.active": Object {}, + "default.error.big.checked": Object {}, + "default.error.big.checked.active": Object {}, + "default.error.big.checked.disabled": Object {}, + "default.error.big.checked.disabled.active": Object {}, + "default.error.big.disabled": Object {}, + "default.error.big.disabled.active": Object {}, + "default.error.checked": Object {}, + "default.error.checked.active": Object {}, + "default.error.checked.disabled": Object {}, + "default.error.checked.disabled.active": Object {}, + "default.error.disabled": Object {}, + "default.error.disabled.active": Object {}, + "default.error.small": Object {}, + "default.error.small.active": Object {}, + "default.error.small.checked": Object {}, + "default.error.small.checked.active": Object {}, + "default.error.small.checked.disabled": Object {}, + "default.error.small.checked.disabled.active": Object {}, + "default.error.small.disabled": Object {}, + "default.error.small.disabled.active": Object {}, + "default.info": Object {}, + "default.info.active": Object {}, + "default.info.big": Object {}, + "default.info.big.active": Object {}, + "default.info.big.checked": Object {}, + "default.info.big.checked.active": Object {}, + "default.info.big.checked.disabled": Object {}, + "default.info.big.checked.disabled.active": Object {}, + "default.info.big.disabled": Object {}, + "default.info.big.disabled.active": Object {}, + "default.info.checked": Object {}, + "default.info.checked.active": Object {}, + "default.info.checked.disabled": Object {}, + "default.info.checked.disabled.active": Object {}, + "default.info.disabled": Object {}, + "default.info.disabled.active": Object {}, + "default.info.small": Object {}, + "default.info.small.active": Object {}, + "default.info.small.checked": Object {}, + "default.info.small.checked.active": Object {}, + "default.info.small.checked.disabled": Object {}, + "default.info.small.checked.disabled.active": Object {}, + "default.info.small.disabled": Object {}, + "default.info.small.disabled.active": Object {}, + "default.small": Object {}, + "default.small.active": Object {}, + "default.small.checked": Object {}, + "default.small.checked.active": Object {}, + "default.small.checked.disabled": Object {}, + "default.small.checked.disabled.active": Object {}, + "default.small.disabled": Object {}, + "default.small.disabled.active": Object {}, + "superCustom": Object {}, + "superCustom.active": Object {}, + "superCustom.big": Object {}, + "superCustom.big.active": Object {}, + "superCustom.big.checked": Object {}, + "superCustom.big.checked.active": Object {}, + "superCustom.big.checked.disabled": Object {}, + "superCustom.big.checked.disabled.active": Object {}, + "superCustom.big.disabled": Object {}, + "superCustom.big.disabled.active": Object {}, + "superCustom.checked": Object {}, + "superCustom.checked.active": Object {}, + "superCustom.checked.disabled": Object {}, + "superCustom.checked.disabled.active": Object {}, + "superCustom.disabled": Object {}, + "superCustom.disabled.active": Object {}, + "superCustom.error": Object {}, + "superCustom.error.active": Object {}, + "superCustom.error.big": Object {}, + "superCustom.error.big.active": Object {}, + "superCustom.error.big.checked": Object {}, + "superCustom.error.big.checked.active": Object {}, + "superCustom.error.big.checked.disabled": Object {}, + "superCustom.error.big.checked.disabled.active": Object {}, + "superCustom.error.big.disabled": Object {}, + "superCustom.error.big.disabled.active": Object {}, + "superCustom.error.checked": Object {}, + "superCustom.error.checked.active": Object {}, + "superCustom.error.checked.disabled": Object {}, + "superCustom.error.checked.disabled.active": Object {}, + "superCustom.error.disabled": Object {}, + "superCustom.error.disabled.active": Object {}, + "superCustom.error.small": Object {}, + "superCustom.error.small.active": Object {}, + "superCustom.error.small.checked": Object {}, + "superCustom.error.small.checked.active": Object {}, + "superCustom.error.small.checked.disabled": Object {}, + "superCustom.error.small.checked.disabled.active": Object {}, + "superCustom.error.small.disabled": Object {}, + "superCustom.error.small.disabled.active": Object {}, + "superCustom.info": Object {}, + "superCustom.info.active": Object {}, + "superCustom.info.big": Object {}, + "superCustom.info.big.active": Object {}, + "superCustom.info.big.checked": Object {}, + "superCustom.info.big.checked.active": Object {}, + "superCustom.info.big.checked.disabled": Object {}, + "superCustom.info.big.checked.disabled.active": Object {}, + "superCustom.info.big.disabled": Object {}, + "superCustom.info.big.disabled.active": Object {}, + "superCustom.info.checked": Object {}, + "superCustom.info.checked.active": Object {}, + "superCustom.info.checked.disabled": Object {}, + "superCustom.info.checked.disabled.active": Object {}, + "superCustom.info.disabled": Object {}, + "superCustom.info.disabled.active": Object {}, + "superCustom.info.small": Object {}, + "superCustom.info.small.active": Object {}, + "superCustom.info.small.checked": Object {}, + "superCustom.info.small.checked.active": Object {}, + "superCustom.info.small.checked.disabled": Object {}, + "superCustom.info.small.checked.disabled.active": Object {}, + "superCustom.info.small.disabled": Object {}, + "superCustom.info.small.disabled.active": Object {}, + "superCustom.small": Object {}, + "superCustom.small.active": Object {}, + "superCustom.small.checked": Object {}, + "superCustom.small.checked.active": Object {}, + "superCustom.small.checked.disabled": Object {}, + "superCustom.small.checked.disabled.active": Object {}, + "superCustom.small.disabled": Object {}, + "superCustom.small.disabled.active": Object {}, + }, +} +`; diff --git a/processor/rk-kit/src/processor/meta/metaProcessor.ts b/processor/rk-kit/src/processor/meta/metaProcessor.ts new file mode 100644 index 0000000..6b72020 --- /dev/null +++ b/processor/rk-kit/src/processor/meta/metaProcessor.ts @@ -0,0 +1,38 @@ +import { Processor } from '../processor'; +import { + createAllStyles, + toObject, + ThemeMappingType, + StyleMappingType, + IndexSignatureBase, +} from '../../service'; +import { MappingMetaType } from '../type'; + +export interface MappingProcessorParamsType { + mapping: ThemeMappingType; + meta: MappingMetaType[]; +} + +export class MetaProcessor implements Processor { + + process(params: MappingProcessorParamsType): ThemeMappingType { + const entries = params.meta.map((value: MappingMetaType) => { + return this.processComponentMeta(params.mapping, value); + }); + + return toObject(entries); + } + + private processComponentMeta(mapping: ThemeMappingType, value: MappingMetaType): [string, IndexSignatureBase] { + const {name: entryKey, appearance, variants, states} = value; + const entryValue: StyleMappingType[] = createAllStyles( + mapping, + entryKey, + appearance, + variants, + states, + ); + + return [entryKey, toObject(entryValue)]; + } +} diff --git a/processor/rk-kit/src/processor/processor.ts b/processor/rk-kit/src/processor/processor.ts new file mode 100644 index 0000000..8f8b54e --- /dev/null +++ b/processor/rk-kit/src/processor/processor.ts @@ -0,0 +1,3 @@ +export interface Processor { + process(params: T): R; +} diff --git a/processor/rk-kit/src/processor/type.ts b/processor/rk-kit/src/processor/type.ts new file mode 100644 index 0000000..36e8f39 --- /dev/null +++ b/processor/rk-kit/src/processor/type.ts @@ -0,0 +1,6 @@ +export interface MappingMetaType { + name: string; + appearance: string; + states: string[]; + variants: string[]; +} diff --git a/processor/rk-kit/src/service/common/common.service.ts b/processor/rk-kit/src/service/common/common.service.ts new file mode 100644 index 0000000..5f62815 --- /dev/null +++ b/processor/rk-kit/src/service/common/common.service.ts @@ -0,0 +1,68 @@ +import { IndexSignatureBase } from './type'; + +/** + * Safely retrieves R value of T object with reducer + * + * @param value (T | undefined) - unsafe object which should be processed + * @param reducer ((T) => R) - `value` processing lambda. Called if `value` is not `undefined` + * + * @return (R | undefined) - object returned by `reducer` if `value` is not `undefined`, `undefined` otherwise + **/ +export function safe(value: T | undefined, reducer: (value: T) => R): R | undefined { + if (value) { + return reducer(value); + } + return undefined; +} + +/** + * Maps 2-dim array to 1-dim + * + * @param params (T[][]) - 2-dim array + * + * @return 1-dim array + */ +export function flatten(params: T[][]): T[] { + return [].concat(...params); +} + +/** + * Removes all duplicates from array + * + * @param params (T[]) - array with possible duplicate values + * + * @return (T[]) - processed array + */ +export function noDuplicates(params: T[]): T[] { + return [...new Set(params)]; +} + + +/** + * Removes null and undefined values from array + * + * @param params (T[]) - array with possible null values + * + * @return (T[]) - processed array + */ +export function noNulls(params: T[]): T[] { + return params.filter(Boolean); +} + +/** + * Returns Object with string keys from array type [string, IndexSignatureBase] + * + * @param array like [string, IndexSignatureBase] + * + * @return object with string keys and IndexSignatureBase values + */ +export function toObject(array: [string, IndexSignatureBase][]): IndexSignatureBase { + return array.reduce((p, c) => { + if (p && p.hasOwnProperty(c[0])) { + p[c[0]] = { ...p[c[0]], ...c[1] }; + } else { + p[c[0]] = c[1]; + } + return p; + }, {}); +} diff --git a/processor/rk-kit/src/service/common/common.spec.ts b/processor/rk-kit/src/service/common/common.spec.ts new file mode 100644 index 0000000..91bc13f --- /dev/null +++ b/processor/rk-kit/src/service/common/common.spec.ts @@ -0,0 +1,76 @@ +import * as Service from './common.service'; +import { IndexSignatureBase } from './type'; + +describe('@common: service method checks', () => { + + describe('* safe', () => { + + it('* undefined value param', () => { + const safeValue = Service.safe(undefined, (value) => value.toString()); + expect(safeValue).toBeUndefined(); + }); + + it('* defined value param', () => { + const safeValue = Service.safe(42, (value) => value.toString()); + expect(safeValue).toEqual('42'); + }); + + }); + + describe('* flatten', () => { + + it('* 2-dim array', () => { + const value = Service.flatten([[1, 2, 3], [4, 5, 6]]); + expect(value).toEqual([1, 2, 3, 4, 5, 6]); + }); + + }); + + describe('* noDuplicates', () => { + + it('* with duplicates', () => { + const value = Service.noDuplicates([1, 2, 3, 3, 4]); + expect(value).toEqual([1, 2, 3, 4]); + }); + + it('* with no duplicates', () => { + const value = Service.noDuplicates([1, 2, 3, 4]); + expect(value).toEqual([1, 2, 3, 4]); + }); + + }); + + describe('* noNulls', () => { + + it('* with nulls', () => { + const value = Service.noNulls([1, 2, null, undefined, 3, 4]); + expect(value).toEqual([1, 2, 3, 4]); + }); + + it('* with no nulls', () => { + const value = Service.noNulls([1, 2, 3, 4]); + expect(value).toEqual([1, 2, 3, 4]); + }); + + }); + + describe('* toObject', () => { + + it('* expected array', () => { + const value: IndexSignatureBase = Service.toObject([ + ['1', { a: 1, b: 1 }], ['2', { x: 1, y: 1 }], ['1', { c: 1, d: 1 }], + ]); + expect(value).toEqual({ + '1': { a: 1, b: 1, c: 1, d: 1 }, + '2': { x: 1, y: 1 }, + }); + }); + + it('* unexpected array', () => { + const value: IndexSignatureBase = Service.toObject([]); + expect(value).toEqual({}); + }); + + }); + +}); diff --git a/processor/rk-kit/src/service/common/index.ts b/processor/rk-kit/src/service/common/index.ts new file mode 100644 index 0000000..3f0c44d --- /dev/null +++ b/processor/rk-kit/src/service/common/index.ts @@ -0,0 +1,2 @@ +export * from './type'; +export * from './common.service'; diff --git a/processor/rk-kit/src/service/common/type.ts b/processor/rk-kit/src/service/common/type.ts new file mode 100644 index 0000000..96713f9 --- /dev/null +++ b/processor/rk-kit/src/service/common/type.ts @@ -0,0 +1,3 @@ +export interface IndexSignatureBase { + [key: string]: any; +} diff --git a/processor/rk-kit/src/service/index.ts b/processor/rk-kit/src/service/index.ts new file mode 100644 index 0000000..a202d44 --- /dev/null +++ b/processor/rk-kit/src/service/index.ts @@ -0,0 +1,4 @@ +export * from './common'; +export * from './mapping'; +export * from './style'; +export * from './test'; diff --git a/processor/rk-kit/src/service/mapping/index.ts b/processor/rk-kit/src/service/mapping/index.ts new file mode 100644 index 0000000..20eecf2 --- /dev/null +++ b/processor/rk-kit/src/service/mapping/index.ts @@ -0,0 +1,2 @@ +export * from './type'; +export * from './mapping.service'; diff --git a/processor/rk-kit/src/service/mapping/mapping.service.ts b/processor/rk-kit/src/service/mapping/mapping.service.ts new file mode 100644 index 0000000..aff6df1 --- /dev/null +++ b/processor/rk-kit/src/service/mapping/mapping.service.ts @@ -0,0 +1,160 @@ +import { safe } from '../common'; +import { + ThemeMappingType, + ComponentMappingType, + AppearanceType, + VariantGroupType, + MappingType, + StateType, +} from './type'; + +export const APPEARANCE_DEFAULT = 'default'; + +export function getComponentVariantGroups(mapping: ThemeMappingType, + component: string): string[] | undefined { + + const componentMapping = getComponentMapping(mapping, component); + + return safe(componentMapping, (value: ComponentMappingType) => { + return Object.keys(value.meta.variants); + }) +} + +export function getComponentVariants(mapping: ThemeMappingType, + component: string): string[][] | undefined { + + const componentMapping = getComponentMapping(mapping, component); + + return safe(componentMapping, (value: ComponentMappingType) => { + const variantGroups = Object.keys(value.meta.variants); + + return variantGroups.map((group: string) => { + return value.meta.variants[group]; + }); + }) +} + +export function getComponentStates(mapping: ThemeMappingType, + component: string): string[] | undefined { + + const componentMapping = getComponentMapping(mapping, component); + + return safe(componentMapping, (value: ComponentMappingType) => { + return value.meta.states; + }); +} + +export function getStateAppearanceMapping(mapping: ThemeMappingType, + component: string, + appearance: string, + state: string): any | undefined { + + const appearanceMapping = getAppearanceMapping(mapping, component, appearance); + + return safe(appearanceMapping, (value: MappingType) => { + return getMappingState(value, state); + }); +} + +export function getStatelessAppearanceMapping(mapping: ThemeMappingType, + component: string, + appearance: string): any | undefined { + + const appearanceMapping = getAppearanceMapping(mapping, component, appearance); + + return safe(appearanceMapping, (value: MappingType) => { + const {state, ...params} = value; + return params; + }); +} + +export function getStateVariantMapping(mapping: ThemeMappingType, + component: string, + appearance: string, + variant: string, + state: string): any | undefined { + + const variantMapping = getVariantMapping(mapping, component, appearance, variant); + + return safe(variantMapping, (value: MappingType) => { + return getMappingState(value, state); + }); +} + +export function getStatelessVariantMapping(mapping: ThemeMappingType, + component: string, + appearance: string, + variant: string): any | undefined { + + const variantMapping = getVariantMapping(mapping, component, appearance, variant); + + return safe(variantMapping, (value: MappingType) => { + const {state, ...params} = value; + return params; + }); +} + +function getComponentMapping(mapping: ThemeMappingType, + component: string): ComponentMappingType | undefined { + + return mapping[component]; +} + +function getAppearance(mapping: ThemeMappingType, + component: string, + appearance: string): AppearanceType | undefined { + + const componentMapping = getComponentMapping(mapping, component); + + return safe(componentMapping, (value: ComponentMappingType) => { + return value.appearance[appearance]; + }); +} + +function getMappingState(mapping: MappingType, + state: string): StateType | undefined { + + return safe(mapping.state, (value: StateType) => { + return value[state]; + }); +} + +function getAppearanceMapping(mapping: ThemeMappingType, + component: string, + appearance: string): MappingType | undefined { + + const appearanceConfig = getAppearance(mapping, component, appearance); + + return safe(appearanceConfig, (value: AppearanceType) => { + return value.mapping; + }); +} + +function getAppearanceVariantGroups(mapping: ThemeMappingType, + component: string, + appearance: string): VariantGroupType | undefined { + + const appearanceConfig = getAppearance(mapping, component, appearance); + + return safe(appearanceConfig, (value: AppearanceType) => { + return value.variant; + }); +} + +function getVariantMapping(mapping: ThemeMappingType, + component: string, + appearance: string, + variant: string): MappingType | undefined { + + const variantGroups = getAppearanceVariantGroups(mapping, component, appearance); + + const groupName = safe(variantGroups, value => { + return Object.keys(value).find((group: string) => { + return value[group][variant] !== undefined; + }); + }); + + return safe(groupName, value => { + return safe(variantGroups[value][variant], value => value.mapping); + }); +} diff --git a/processor/rk-kit/src/service/mapping/mapping.spec.config.ts b/processor/rk-kit/src/service/mapping/mapping.spec.config.ts new file mode 100644 index 0000000..c897442 --- /dev/null +++ b/processor/rk-kit/src/service/mapping/mapping.spec.config.ts @@ -0,0 +1,120 @@ +export const mapping = { + Test: { + meta: { + variants: { + status: [ + 'success', + 'info', + ], + size: [ + 'small', + 'big', + ] + }, + states: [ + 'checked', + 'disabled', + 'active', + ] + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + borderWidth: 2, + borderColor: 'grayPrimary', + selectColor: 'transparent', + state: { + active: { + borderColor: 'grayDark', + }, + checked: { + borderColor: 'bluePrimary', + selectColor: 'bluePrimary', + }, + disabled: { + borderColor: 'grayLight', + }, + 'checked.active': { + borderColor: 'blueDark', + }, + 'checked.disabled': { + selectColor: 'grayPrimary', + }, + }, + }, + variant: { + status: { + info: { + mapping: { + state: { + checked: { + borderColor: 'orangePrimary', + selectColor: 'orangePrimary', + }, + 'checked.active': { + borderColor: 'orangeDark', + }, + }, + }, + }, + success: { + mapping: { + state: { + checked: { + borderColor: 'tealPrimary', + selectColor: 'tealPrimary', + }, + 'checked.active': { + borderColor: 'tealDark', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + }, + }, + }, + }, + }, + custom: { + mapping: { + borderWidth: 4, + state: { + active: { + borderColor: 'grayLight', + }, + }, + }, + variant: { + status: { + success: { + mapping: { + borderColor: 'tealPrimary', + }, + }, + }, + }, + }, + }, + }, + Empty: { + meta: { + variants: {}, + states: [], + }, + appearance: {}, + }, +}; diff --git a/processor/rk-kit/src/service/mapping/mapping.spec.ts b/processor/rk-kit/src/service/mapping/mapping.spec.ts new file mode 100644 index 0000000..92720df --- /dev/null +++ b/processor/rk-kit/src/service/mapping/mapping.spec.ts @@ -0,0 +1,204 @@ +import * as Service from './mapping.service'; +import * as config from './mapping.spec.config'; + +describe('@mapping: service methods checks', () => { + + describe('* appearance', () => { + + describe('* default', () => { + + const appearance = 'default'; + + it('* stateless', () => { + const mapping = Service.getStatelessAppearanceMapping(config.mapping, 'Test', appearance); + + expect(mapping).toMatchSnapshot(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'active'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + describe('* variant', () => { + + it('* success', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'success'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'active'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + }); + + }); + + describe('* custom', () => { + + const appearance = 'custom'; + + it('* stateless', () => { + const mapping = Service.getStatelessAppearanceMapping(config.mapping, 'Test', appearance); + + expect(mapping).toMatchSnapshot(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'active'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + describe('* variant', () => { + + it('* success', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'success'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toMatchSnapshot(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'active'); + + expect(mapping).toMatchSnapshot(); + }); + + it('* undefined', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + }); + + }); + + describe('* undefined', () => { + + const appearance = 'undefined'; + + it('* stateless', () => { + const mapping = Service.getStatelessAppearanceMapping(config.mapping, 'Test', appearance); + + expect(mapping).toBeUndefined(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'active'); + + expect(mapping).toBeUndefined(); + }); + + it('* undefined', () => { + const mapping = Service.getStateAppearanceMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + describe('* variant', () => { + + it('* success', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'success'); + + expect(mapping).toBeUndefined(); + }); + + it('* undefined', () => { + const mapping = Service.getStatelessVariantMapping(config.mapping, 'Test', appearance, 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + describe('* state', () => { + + it('* active', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'active'); + + expect(mapping).toBeUndefined(); + }); + + it('* undefined', () => { + const mapping = Service.getStateVariantMapping(config.mapping, 'Test', appearance, 'success', 'undefined'); + + expect(mapping).toBeUndefined(); + }); + + }); + + }); + + }); + + }); + + describe('* variants groups getting', () => { + + it('* expected component', () => { + const value: string[] = Service.getComponentVariantGroups(config.mapping, 'Test'); + expect(value).toEqual(['status', 'size']); + }); + + it('* unexpected component', () => { + const value: string[] | undefined = Service.getComponentVariantGroups(config.mapping, 'Undefined'); + expect(value).toBeUndefined(); + }); + + }); + +}); diff --git a/processor/rk-kit/src/service/mapping/mapping.spec.ts.snap b/processor/rk-kit/src/service/mapping/mapping.spec.ts.snap new file mode 100644 index 0000000..0889539 --- /dev/null +++ b/processor/rk-kit/src/service/mapping/mapping.spec.ts.snap @@ -0,0 +1,43 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`@mapping: service methods checks * appearance * custom * state * active 1`] = ` +Object { + "borderColor": "grayLight", +} +`; + +exports[`@mapping: service methods checks * appearance * custom * stateless 1`] = ` +Object { + "borderWidth": 4, +} +`; + +exports[`@mapping: service methods checks * appearance * custom * variant * state * active 1`] = `undefined`; + +exports[`@mapping: service methods checks * appearance * custom * variant * success 1`] = ` +Object { + "borderColor": "tealPrimary", +} +`; + +exports[`@mapping: service methods checks * appearance * custom * variant * undefined 1`] = `undefined`; + +exports[`@mapping: service methods checks * appearance * default * state * active 1`] = ` +Object { + "borderColor": "grayDark", +} +`; + +exports[`@mapping: service methods checks * appearance * default * stateless 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@mapping: service methods checks * appearance * default * variant * state * active 1`] = `undefined`; + +exports[`@mapping: service methods checks * appearance * default * variant * success 1`] = `Object {}`; diff --git a/processor/rk-kit/src/service/mapping/type.ts b/processor/rk-kit/src/service/mapping/type.ts new file mode 100644 index 0000000..ec7d5a7 --- /dev/null +++ b/processor/rk-kit/src/service/mapping/type.ts @@ -0,0 +1,29 @@ +import { IndexSignatureBase } from '../common'; + +export type ThemeMappingType = IndexSignatureBase & any; + +export interface ComponentMappingMetaType { + variants: IndexSignatureBase & any; + states: string[]; +} + +export interface ComponentMappingType { + meta: ComponentMappingMetaType; + appearance: AppearanceType; +} + +export interface AppearanceType { + mapping?: MappingType; + variant?: VariantGroupType; +} + +export type VariantGroupType = IndexSignatureBase & any; + +export interface MappingType { + [key: string]: any; + + state?: StateType; +} + +export type StateType = IndexSignatureBase & any; + diff --git a/processor/rk-kit/src/service/style/index.ts b/processor/rk-kit/src/service/style/index.ts new file mode 100644 index 0000000..ab3c2f4 --- /dev/null +++ b/processor/rk-kit/src/service/style/index.ts @@ -0,0 +1,2 @@ +export * from './type'; +export * from './style.service'; diff --git a/processor/rk-kit/src/service/style/style.service.ts b/processor/rk-kit/src/service/style/style.service.ts new file mode 100644 index 0000000..839c6bc --- /dev/null +++ b/processor/rk-kit/src/service/style/style.service.ts @@ -0,0 +1,317 @@ +import { + safe, + noNulls, + noDuplicates, +} from '../common'; +import { + APPEARANCE_DEFAULT, + getStatelessAppearanceMapping, + getStatelessVariantMapping, + getStateAppearanceMapping, + getStateVariantMapping, + ThemeMappingType, + ComponentMappingType, +} from '../mapping'; +import { StyleMappingType } from './type'; + +export const SEPARATOR_MAPPING_ENTRY = '.'; + +/** + * Creates style object for variant/list of variants(optional) and its state/list of states(optional) + * + * Example + * + * appearance = 'outline'; + * variants = ['success', 'large']; + * state = ['active', 'checked']; + * + * a = `default` + `outline` - acc appearance (apce) mapping + * + * v1 = `success` of `default` - `success` variant mapping of `default` apce + * v2 = `success` of `outline` - `success` variant mapping of `outline` apce + * v3 = `large` of `default` - `large` variant mapping of `default` apce + * v4 = `large` of `outline` - `large` variant mapping of `outline` apce + * + * s1 = `active` of `default` - `active` state mapping of `default` apce + * s2 = `active` of `outline` - `active` state mapping of `outline` apce + * s3 = `active` of `default success` - `active` state mapping of `success` variant of `default` apce + * s4 = `active` of `outline success` - `active` state mapping of `success` variant of `outline` apce + * s5 = `active` of `default large` - `active` state mapping of `large` variant of `default` apce + * s6 = `active` of `outline large` - `active` state mapping of `large` variant of `outline` apce + * + * s7 = `checked` of `default` - `checked` state mapping of `default` apce + * s8 = `checked` of `outline` - `checked` state mapping of `outline` apce + * s9 = `checked` of `default success` - `checked` state mapping of `success` variant of `default` apce + * s10 = `checked` of `outline success` - `checked` state mapping of `success` variant of `outline` apce + * s11 = `checked` of `default large` - `checked` state mapping of `large` variant of `default` apce + * s12 = `checked` of `outline large` - `checked` state mapping of `large` variant of `outline` apce + * + * s13 = `active.checked` of `default` - `active.checked` state mapping of `default` apce + * s14 = `active.checked` of `outline` - `active.checked` state mapping of `outline` apce + * s15 = `active.checked` of `default success` - `active.checked` state mapping of `success` variant of `default` apce + * s16 = `active.checked` of `outline success` - `active.checked` state mapping of `success` variant of `outline` apce + * s17 = `active.checked` of `default large` - `active.checked` state mapping of `large` variant of `default` apce + * s18 = `active.checked` of `outline large` - `active.checked` state mapping of `large` variant of `outline` apce + * + * res = a + (v1 + v2 + ... + vn) + (s1 + s2 + ... + sn) + * + * @param mapping: ThemeMappingType - theme mapping configuration + * @param component: string - component name + * @param appearance: string - appearance applied to component + * @param variants: string[] - variants applied to component. Default is [] + * @param states: string[] - states in which component is. Default is [] + * + * @return StyleType - compiled component styles declared in mappings, mapped to theme values + */ +export function createStyle(mapping: ThemeMappingType, + component: string, + appearance: string = APPEARANCE_DEFAULT, + variants: string[] = [], + states: string[] = []): StyleMappingType { + + const normalizedAppearance = normalizeAppearance(appearance); + const normalizedVariants = normalizeVariants(variants); + const normalizedStates = normalizeStates(states, (state: string) => { + return states.indexOf(state); + }); + + const appearanceMapping = reduce(normalizedAppearance, apce => { + return getStatelessAppearanceMapping(mapping, component, apce); + }); + + const variantMapping = reduce(normalizedVariants, variant => { + return reduce(normalizedAppearance, apce => { + return getStatelessVariantMapping(mapping, component, apce, variant); + }); + }); + + const stateMapping = reduce(normalizedStates, state => { + const appearanceStateMapping = reduce(normalizedAppearance, apce => { + return getStateAppearanceMapping(mapping, component, apce, state); + }); + + const variantStateMapping = reduce(normalizedVariants, variant => { + return reduce(normalizedAppearance, apce => { + return getStateVariantMapping(mapping, component, apce, variant, state); + }); + }); + + return {...appearanceStateMapping, ...variantStateMapping}; + }); + + return {...appearanceMapping, ...variantMapping, ...stateMapping}; +} + +export function createAllStyles(mapping: ThemeMappingType, + component: string, + appearance: string, + variants: string[], + states: string[]): StyleMappingType[] { + + const stateless = createStyleEntry(mapping, component, appearance, appearance); + + const withStates = states.reduce((acc: [string, StyleMappingType][], current: string) => { + const key = appearance.concat(SEPARATOR_MAPPING_ENTRY, current); + const next = createStyleEntry(mapping, component, key, appearance, '', current); + return [...acc, next]; + }, []); + + const withVariants = variants.map(variant => { + const key = appearance.concat(SEPARATOR_MAPPING_ENTRY, variant); + return createStyleEntry(mapping, component, key, appearance, variant); + }); + + const withVariantStates = variants.reduce((acc: [string, StyleMappingType][], current: string) => { + const next = states.map(state => { + const key = appearance.concat(SEPARATOR_MAPPING_ENTRY, current, SEPARATOR_MAPPING_ENTRY, state); + return createStyleEntry(mapping, component, key, appearance, current, state); + }); + return [...acc, ...next]; + }, []); + + return [ + stateless, + ...withStates, + ...withVariants, + ...withVariantStates, + ]; +} + +export function getStyle(mapping: ThemeMappingType, + component: string, + appearance: string, + variants: string[], + states: string[]): StyleMappingType | undefined { + + return safe(mapping, (themeMapping: ThemeMappingType) => { + return safe(themeMapping[component], (componentMapping: ComponentMappingType) => { + + const query = findStyleKey(Object.keys(componentMapping), [ + appearance, + ...variants, + ...states, + ]); + + return componentMapping[query]; + }); + }); +} + +/** + * Creates normalized to design system array of component appearances + * + * Example: + * + * '' => ['default'] + * 'bold' => ['default', 'bold'] + * 'default' => ['default'] + * ... + * + * @param appearance: string - appearance applied to component + * + * @return string[] - array of merged appearances + */ +export function normalizeAppearance(appearance: string): string[] { + return normalize([APPEARANCE_DEFAULT, appearance]); +} + +/** + * Creates normalized to design system array of component variants + * + * Example: + * + * [''] => [] + * ['success'] => ['success'] + * ['success', 'tiny'] => ['success', 'tiny'] + * ... + * + * @param variants: string[] - variants applied to component + * + * @return string[] - array of merged variants + */ +export function normalizeVariants(variants: string[]): string[] { + return normalize(variants); +} + +/** + * Creates normalized to design system array of component states + * + * Example: + * + * [''] => [] + * ['active'] => ['active'] + * ['active', 'checked'] => ['active', 'checked', 'active.checked'] + * ['active', 'checked', 'disabled'] => ['active', 'checked', 'active.checked', 'disabled', 'active.checked.disabled'] + * ... + * + * @param states: string[] - states in which component is + * @param stateWeight: (state: string) => number - state weight calculation lambda + * @param separator - state separator. `.` in example + * + * @return string[] - array of merged states + */ +export function normalizeStates(states: string[], + stateWeight: (state: string) => number, + separator: string = SEPARATOR_MAPPING_ENTRY): string[] { + + const preprocess = normalize(states); + if (preprocess.length === 0) { + return preprocess; + } else { + const variations = createStateVariations([...preprocess], separator, []); + + return variations.sort((lhs: string, rhs: string) => { + const lhsWeight = getStateVariationWeight(lhs, separator, stateWeight); + const rhsWeight = getStateVariationWeight(rhs, separator, stateWeight); + return lhsWeight - rhsWeight; + }); + } +} + +function createStateVariations(states: string[], separator: string, result: string[] = []): string[] { + if (states.length === 0) { + return result; + } + + const next = states.reduce((acc: string[], current: string) => { + const next = acc.map(value => value.concat(separator, current)); + return [...acc, ...next]; + }, [states.shift()]); + + return createStateVariations(states, separator, [...result, ...next]); +} + +function getStateVariationWeight(state: string, + separator: string, + stateWeight: (state: string) => number): number { + + const parts = state.split(separator); + return parts.reduce((acc: number, current: string): number => { + return acc + stateWeight(current) + parts.length; + }, 0); +} + +/** + * Finds identical keys across `source` keys array + * + * Example: + * + * source = ['default.error.small.checked', ...] + * query = ['default', 'small', 'error', 'checked'] + * + * will return 'default.error.small.checked' + * + * @param source (string[]) - array of style keys + * @param query (string[]) - array of key parts to search + * + * @return (string | undefined) - key identical to some of `source` keys if presents + */ +export function findStyleKey(source: string[], query: string[]): string | undefined { + + const partialKeys: string[][] = source.map((key: string) => { + return key.split(SEPARATOR_MAPPING_ENTRY); + }); + + const result: string[][] = partialKeys.filter((partial: string[]) => { + return compareArrays(query, partial); + }); + + return safe(result[0], (value: string[]) => { + return value.join(SEPARATOR_MAPPING_ENTRY); + }); +} + +function createStyleEntry(mapping: ThemeMappingType, + component: string, + key: string, + appearance: string, + variant: string = '', + state: string = ''): [string, StyleMappingType] { + + const value = createStyle( + mapping, + component, + appearance, + variant.split(SEPARATOR_MAPPING_ENTRY), + state.split(SEPARATOR_MAPPING_ENTRY), + ); + + return [key, value]; +} + +function normalize(params: string[]): string[] { + return noNulls(noDuplicates(params)); +} + +function compareArrays(lhs: string[], rhs: string[]): boolean { + const isEqualLength = lhs && rhs && lhs.length === rhs.length; + if (!isEqualLength) { + return false; + } + + return lhs.reduce((acc: boolean, next: string): boolean => acc && rhs.includes(next), true); +} + +function reduce(items: string[], next: (item: string) => any): any { + return items.reduce((acc, current) => ({...acc, ...next(current)}), {}); +} diff --git a/processor/rk-kit/src/service/style/style.spec.config.ts b/processor/rk-kit/src/service/style/style.spec.config.ts new file mode 100644 index 0000000..55c7f77 --- /dev/null +++ b/processor/rk-kit/src/service/style/style.spec.config.ts @@ -0,0 +1,120 @@ +export const mapping = { + Test: { + meta: { + variants: { + status: [ + 'success', + 'info', + ], + size: [ + 'small', + 'big', + ] + }, + states: [ + 'checked', + 'disabled', + 'active', + ] + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + borderWidth: 2, + borderColor: 'grayPrimary', + selectColor: 'transparent', + state: { + active: { + borderColor: 'grayDark', + }, + checked: { + borderColor: 'bluePrimary', + selectColor: 'bluePrimary', + }, + disabled: { + borderColor: 'grayLight', + }, + 'checked.active': { + borderColor: 'blueDark', + }, + 'checked.disabled': { + selectColor: 'grayPrimary', + }, + }, + }, + variant: { + status: { + info: { + mapping: { + state: { + checked: { + borderColor: 'orangePrimary', + selectColor: 'orangePrimary', + }, + 'checked.active': { + borderColor: 'orangeDark', + }, + }, + }, + }, + success: { + mapping: { + state: { + checked: { + borderColor: 'tealPrimary', + selectColor: 'tealPrimary', + }, + 'checked.active': { + borderColor: 'tealDark', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + }, + }, + }, + }, + }, + custom: { + mapping: { + borderWidth: 4, + state: { + active: { + borderColor: 'grayLight', + }, + }, + }, + variant: { + status: { + success: { + mapping: { + borderColor: 'tealPrimary', + }, + }, + }, + }, + }, + }, + }, + Empty: { + meta: { + variants: {}, + states: [], + }, + appearance: {}, + }, +}; diff --git a/processor/rk-kit/src/service/style/style.spec.ts b/processor/rk-kit/src/service/style/style.spec.ts new file mode 100644 index 0000000..a5ec0f0 --- /dev/null +++ b/processor/rk-kit/src/service/style/style.spec.ts @@ -0,0 +1,509 @@ +import { APPEARANCE_DEFAULT } from '../mapping'; +import { StyleMappingType } from './type'; +import * as Service from './style.service'; +import { mapping } from './style.spec.config'; + +describe('@style: service methods checks', () => { + + describe('* preprocess', () => { + + it('* normalizes appearance properly', () => { + const implicitDefault = Service.normalizeAppearance('default'); + const custom = Service.normalizeAppearance('custom'); + const empty = Service.normalizeAppearance(''); + const nullable = Service.normalizeAppearance(undefined); + + expect(implicitDefault).toEqual([ + 'default', + ]); + expect(custom).toEqual([ + 'default', + 'custom', + ]); + expect(empty).toEqual([ + 'default', + ]); + expect(nullable).toEqual([ + 'default', + ]); + }); + + it('* normalizes variants properly', () => { + const success = Service.normalizeVariants([ + 'success', + ]); + const successTiny = Service.normalizeVariants([ + 'success', + 'tiny', + ]); + const withDuplicates = Service.normalizeVariants([ + 'success', + 'success', + 'tiny', + ]); + const withNulls = Service.normalizeVariants([ + 'success', + undefined, + 'tiny', + null, + ]); + const empty = Service.normalizeVariants([ + '', + ]); + + expect(success).toEqual([ + 'success', + ]); + expect(successTiny).toEqual([ + 'success', + 'tiny', + ]); + expect(withDuplicates).toEqual([ + 'success', + 'tiny', + ]); + expect(withNulls).toEqual([ + 'success', + 'tiny', + ]); + expect(withNulls).toEqual([ + 'success', + 'tiny', + ]); + expect(empty).toEqual([]); + }); + + it('* normalizes states properly', () => { + const states = [ + 'active', + 'checked', + 'disabled', + ]; + + const calculateStateWeight = (state: string): number => { + switch (state) { + case 'active': + return 0; + case 'checked': + return 1; + case 'disabled': + return 2; + } + }; + + const regular = Service.normalizeStates(states, calculateStateWeight); + const withDuplicates = Service.normalizeStates([...states, 'active'], calculateStateWeight); + const withNulls = Service.normalizeStates([...states, undefined], calculateStateWeight); + const empty = Service.normalizeStates([], calculateStateWeight); + const customSeparator = Service.normalizeStates(states, calculateStateWeight, '-'); + + expect(regular).toEqual([ + 'active', + 'checked', + 'disabled', + 'active.checked', + 'active.disabled', + 'checked.disabled', + 'active.checked.disabled', + ]); + expect(withDuplicates).toEqual([ + 'active', + 'checked', + 'disabled', + 'active.checked', + 'active.disabled', + 'checked.disabled', + 'active.checked.disabled', + ]); + expect(withNulls).toEqual([ + 'active', + 'checked', + 'disabled', + 'active.checked', + 'active.disabled', + 'checked.disabled', + 'active.checked.disabled', + ]); + expect(empty).toEqual([]); + expect(customSeparator).toEqual([ + 'active', + 'checked', + 'disabled', + 'active-checked', + 'active-disabled', + 'checked-disabled', + 'active-checked-disabled', + ]); + }); + + describe('* keygen', () => { + + const source: string[] = [ + 'default', + 'default.checked', + 'default.success', + 'default.success.checked', + 'default.success.small.checked', + 'default.success.small.checked.active', + ]; + + it('* appearance only', () => { + const value = Service.findStyleKey(source, [ + 'default', + ]); + + expect(value).toEqual('default'); + }); + + it('* appearance and state', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'checked', + ]); + + expect(value).toEqual('default.checked'); + }); + + it('* appearance and variant', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'success', + ]); + + expect(value).toEqual('default.success'); + }); + + it('* appearance and variant and state', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'success', + 'checked', + ]); + + expect(value).toEqual('default.success.checked'); + }); + + it('* appearance and variants and state', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'success', + 'small', + 'checked', + ]); + + expect(value).toEqual('default.success.small.checked'); + }); + + it('* appearance and variants and states', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'success', + 'small', + 'checked', + 'active', + ]); + + expect(value).toEqual('default.success.small.checked.active'); + }); + + it('* unordered', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'checked', + 'small', + 'success', + 'active', + ]); + + expect(value).toEqual('default.success.small.checked.active'); + }); + + it('* with undefined in config', () => { + const value = Service.findStyleKey(source, [ + 'default', + 'error', + 'small', + 'checked', + 'active', + ]); + + expect(value).toEqual(undefined); + }); + + }); + + }); + + describe('* styling', () => { + + describe('* default appearance', () => { + + const appearance = APPEARANCE_DEFAULT; + + it('* no variant and no state', () => { + const style = Service.createStyle(mapping, 'Test'); + expect(style).toMatchSnapshot(); + }); + + describe('* with state', () => { + + it('* single', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + [], + ['active'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* multiple', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + [], + ['checked', 'active'], + ); + + expect(style).toMatchSnapshot(); + }); + }); + + describe('* with variant', () => { + + describe('* single', () => { + + it('* no state', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success'], + ); + + expect(style).toMatchSnapshot(); + }); + + describe('* with state', () => { + + it('* single implicit (should apply from appearance)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success'], + ['active'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* single explicit (should apply own)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success'], + ['checked'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* multiple', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success'], + ['checked', 'active'], + ); + + expect(style).toMatchSnapshot(); + }); + + }); + + }); + + describe('* multiple', () => { + + it('* no state', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success', 'big'], + ); + + expect(style).toMatchSnapshot(); + }); + + describe('* with state', () => { + + it('* single', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success', 'big'], + ['active'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* multiple', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success', 'big'], + ['checked', 'active'], + ); + + expect(style).toMatchSnapshot(); + }); + + }); + + }); + + }); + + }); + + describe('* custom appearance', () => { + + const appearance = 'custom'; + + it('* no variant and no state', () => { + const style = Service.createStyle(mapping, 'Test', 'custom'); + + expect(style).toMatchSnapshot(); + }); + + describe('* with state', () => { + + it('* implicit (should apply from default appearance)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + [], + ['checked'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* explicit (should apply own)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + [], + ['active'], + ); + + expect(style).toMatchSnapshot(); + }); + + }); + + describe('* with variant', () => { + + it('* implicit (should apply from default appearance)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['big'], + ); + + expect(style).toMatchSnapshot(); + }); + + it('* explicit (should apply own)', () => { + const style = Service.createStyle( + mapping, + 'Test', + appearance, + ['success'], + ); + + expect(style).toMatchSnapshot(); + }); + + }); + + }); + + describe('* undefined appearance', () => { + + const appearance = 'undefined'; + + it('* no variant and no state (should apply default appearance)', () => { + const style = Service.createStyle(mapping, 'Test', appearance); + + expect(style).toMatchSnapshot(); + }); + + }); + + }); + + describe('* all styles', () => { + + it('* create all styles for Test component', () => { + const styles: StyleMappingType[] = Service.createAllStyles( + mapping, + 'Test', + 'custom', + ['success'], + ['active'], + ); + + expect(styles).toMatchSnapshot(); + }); + + it('* create all styles for Test w/o variants', () => { + const styles: StyleMappingType[] = Service.createAllStyles( + mapping, + 'Test', + 'custom', + [], + ['active'], + ); + + expect(styles).toMatchSnapshot(); + }); + + }); + + describe('* get style', () => { + const value: StyleMappingType = Service.getStyle( + mapping, + 'Test', + 'custom', + ['success'], + ['active'], + ); + expect(value).toMatchSnapshot(); + }); + + describe('* get style unexpected', () => { + const value: StyleMappingType = Service.getStyle( + mapping, + 'Test', + 'undefined', + ['success'], + ['active'], + ); + expect(value).toBeUndefined(); + }); + +}); diff --git a/processor/rk-kit/src/service/style/style.spec.ts.snap b/processor/rk-kit/src/service/style/style.spec.ts.snap new file mode 100644 index 0000000..e7a9cf7 --- /dev/null +++ b/processor/rk-kit/src/service/style/style.spec.ts.snap @@ -0,0 +1,233 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` 1`] = `undefined`; + +exports[`@style: service methods checks * all styles * create all styles for Test component 1`] = ` +Array [ + Array [ + "custom", + Object { + "borderColor": "grayPrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], + Array [ + "custom.active", + Object { + "borderColor": "grayLight", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], + Array [ + "custom.success", + Object { + "borderColor": "tealPrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], + Array [ + "custom.success.active", + Object { + "borderColor": "grayLight", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], +] +`; + +exports[`@style: service methods checks * all styles * create all styles for Test w/o variants 1`] = ` +Array [ + Array [ + "custom", + Object { + "borderColor": "grayPrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], + Array [ + "custom.active", + Object { + "borderColor": "grayLight", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, + }, + ], +] +`; + +exports[`@style: service methods checks * styling * custom appearance * no variant and no state 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * custom appearance * with state * explicit (should apply own) 1`] = ` +Object { + "borderColor": "grayLight", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * custom appearance * with state * implicit (should apply from default appearance) 1`] = ` +Object { + "borderColor": "bluePrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "bluePrimary", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * custom appearance * with variant * explicit (should apply own) 1`] = ` +Object { + "borderColor": "tealPrimary", + "borderWidth": 4, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * custom appearance * with variant * implicit (should apply from default appearance) 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 4, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, +} +`; + +exports[`@style: service methods checks * styling * default appearance * no variant and no state 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with state * multiple 1`] = ` +Object { + "borderColor": "blueDark", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "bluePrimary", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with state * single 1`] = ` +Object { + "borderColor": "grayDark", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * multiple * no state 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 2, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * multiple * with state * multiple 1`] = ` +Object { + "borderColor": "tealDark", + "borderWidth": 2, + "innerSize": 28, + "selectColor": "tealPrimary", + "size": 42, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * multiple * with state * single 1`] = ` +Object { + "borderColor": "grayDark", + "borderWidth": 2, + "innerSize": 28, + "selectColor": "transparent", + "size": 42, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * single * no state 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * single * with state * multiple 1`] = ` +Object { + "borderColor": "tealDark", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "tealPrimary", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * single * with state * single explicit (should apply own) 1`] = ` +Object { + "borderColor": "tealPrimary", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "tealPrimary", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * default appearance * with variant * single * with state * single implicit (should apply from appearance) 1`] = ` +Object { + "borderColor": "grayDark", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; + +exports[`@style: service methods checks * styling * undefined appearance * no variant and no state (should apply default appearance) 1`] = ` +Object { + "borderColor": "grayPrimary", + "borderWidth": 2, + "innerSize": 24, + "selectColor": "transparent", + "size": 36, +} +`; diff --git a/processor/rk-kit/src/service/style/type.ts b/processor/rk-kit/src/service/style/type.ts new file mode 100644 index 0000000..9a42040 --- /dev/null +++ b/processor/rk-kit/src/service/style/type.ts @@ -0,0 +1,3 @@ +import { IndexSignatureBase } from '../common'; + +export type StyleMappingType = IndexSignatureBase & any; diff --git a/processor/rk-kit/src/service/test/index.ts b/processor/rk-kit/src/service/test/index.ts new file mode 100644 index 0000000..1a25029 --- /dev/null +++ b/processor/rk-kit/src/service/test/index.ts @@ -0,0 +1,2 @@ +export * from './type'; +export * from './test.service'; \ No newline at end of file diff --git a/processor/rk-kit/src/service/test/test.service.ts b/processor/rk-kit/src/service/test/test.service.ts new file mode 100644 index 0000000..705591d --- /dev/null +++ b/processor/rk-kit/src/service/test/test.service.ts @@ -0,0 +1,39 @@ +import { TestProcessedComponentMappingMeta, TestComponentMappingType } from './'; +import { ThemeMappingType } from '../mapping'; + +/** + * Test Service: service for testing of count of possible component's styles from mapping + */ + +export function getComponentStyleCount(component: TestProcessedComponentMappingMeta): number { + const possibleStatesCombinationsLength: number = Math.pow(2, component.states.length) - 1; + + const variantsCombinationsLengths: number[] = component.variantGroups + .map((item: string[]) => item.length); + const varCombLenSum: number = variantsCombinationsLengths.length ? variantsCombinationsLengths + .reduce((acc, curr) => acc + curr) : 0; + const varCombLenMult: number = variantsCombinationsLengths.length ? variantsCombinationsLengths + .reduce((acc, curr) => acc * curr) : 0; + const variantsPossibleCombinations: number = varCombLenSum + varCombLenMult; + + return (possibleStatesCombinationsLength * variantsPossibleCombinations + + variantsPossibleCombinations + possibleStatesCombinationsLength + 1) * + component.appearances.length; +} + +export function getAllStylesCount(mapping: ThemeMappingType): number { + const mappingMetaCombsCounts: number[] = Object.keys(mapping) + .map((component: string) => + getComponentStyleCount(createTestComponentMeta(mapping[component]))); + + return mappingMetaCombsCounts.reduce((acc, curr) => acc + curr); +} + +export function createTestComponentMeta(component: TestComponentMappingType): TestProcessedComponentMappingMeta { + return component && { + appearances: Object.keys(component.appearance), + states: component.meta.states, + variantGroups: Object.keys(component.meta.variants) + .map(varGroup => component.meta.variants[varGroup]), + } +} \ No newline at end of file diff --git a/processor/rk-kit/src/service/test/test.spec.config.ts b/processor/rk-kit/src/service/test/test.spec.config.ts new file mode 100644 index 0000000..52f7592 --- /dev/null +++ b/processor/rk-kit/src/service/test/test.spec.config.ts @@ -0,0 +1,120 @@ +export const mapping = { + Test: { + meta: { + variants: { + status: [ + 'success', + 'info', + ], + size: [ + 'small', + 'big', + ] + }, + states: [ + 'checked', + 'disabled', + 'active', + ] + }, + appearance: { + default: { + mapping: { + size: 36, + innerSize: 24, + borderWidth: 2, + borderColor: 'grayPrimary', + selectColor: 'transparent', + state: { + active: { + borderColor: 'grayDark', + }, + checked: { + borderColor: 'bluePrimary', + selectColor: 'bluePrimary', + }, + disabled: { + borderColor: 'grayLight', + }, + 'checked.active': { + borderColor: 'blueDark', + }, + 'checked.disabled': { + selectColor: 'grayPrimary', + }, + }, + }, + variant: { + status: { + info: { + mapping: { + state: { + checked: { + borderColor: 'orangePrimary', + selectColor: 'orangePrimary', + }, + 'checked.active': { + borderColor: 'orangeDark', + }, + }, + }, + }, + success: { + mapping: { + state: { + checked: { + borderColor: 'tealPrimary', + selectColor: 'tealPrimary', + }, + 'checked.active': { + borderColor: 'tealDark', + }, + }, + }, + }, + }, + size: { + big: { + mapping: { + size: 42, + innerSize: 28, + }, + }, + small: { + mapping: { + size: 30, + innerSize: 20, + }, + }, + }, + }, + }, + custom: { + mapping: { + borderWidth: 4, + state: { + active: { + borderColor: 'grayLight', + }, + }, + }, + variant: { + status: { + success: { + mapping: { + borderColor: 'tealPrimary', + }, + }, + }, + }, + }, + }, + }, + Empty: { + meta: { + variants: {}, + states: [], + }, + appearance: {}, + }, +}; \ No newline at end of file diff --git a/processor/rk-kit/src/service/test/test.spec.ts b/processor/rk-kit/src/service/test/test.spec.ts new file mode 100644 index 0000000..69deb9f --- /dev/null +++ b/processor/rk-kit/src/service/test/test.spec.ts @@ -0,0 +1,41 @@ +import { mapping } from './test.spec.config'; +import * as Service from './test.service'; +import { TestProcessedComponentMappingMeta, TestComponentMappingType } from './'; + +describe('@test: service methods checks', () => { + + describe('* create test component meta', () => { + + it('* expected component', () => { + const component: TestComponentMappingType = mapping.Test; + expect(Service.createTestComponentMeta(component)).toMatchSnapshot(); + }); + + it('* unexpected component', () => { + const component: TestComponentMappingType = mapping.Empty; + expect(Service.createTestComponentMeta(component)).toMatchSnapshot(); + }); + + }); + + describe('* get component possible styles count', () => { + + it('* expected component', () => { + const component: TestProcessedComponentMappingMeta = Service.createTestComponentMeta(mapping.Test); + expect(Service.getComponentStyleCount(component)).toBe(144); + }); + + it('* unexpected component', () => { + const component: TestProcessedComponentMappingMeta = Service.createTestComponentMeta(mapping.Empty); + expect(Service.getComponentStyleCount(component)).toBe(0); + }); + + }); + + describe('* get all components styles count', () => { + it('* whole mapping', () => { + expect(Service.getAllStylesCount(mapping)).toBe(144); + }); + }); + +}); \ No newline at end of file diff --git a/processor/rk-kit/src/service/test/test.spec.ts.snap b/processor/rk-kit/src/service/test/test.spec.ts.snap new file mode 100644 index 0000000..17ea2a3 --- /dev/null +++ b/processor/rk-kit/src/service/test/test.spec.ts.snap @@ -0,0 +1,33 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`@test: service methods checks * create test component meta * expected component 1`] = ` +Object { + "appearances": Array [ + "default", + "custom", + ], + "states": Array [ + "checked", + "disabled", + "active", + ], + "variantGroups": Array [ + Array [ + "success", + "info", + ], + Array [ + "small", + "big", + ], + ], +} +`; + +exports[`@test: service methods checks * create test component meta * unexpected component 1`] = ` +Object { + "appearances": Array [], + "states": Array [], + "variantGroups": Array [], +} +`; diff --git a/processor/rk-kit/src/service/test/type.ts b/processor/rk-kit/src/service/test/type.ts new file mode 100644 index 0000000..9a7cba5 --- /dev/null +++ b/processor/rk-kit/src/service/test/type.ts @@ -0,0 +1,12 @@ +import { IndexSignatureBase } from '../common'; + +export interface TestProcessedComponentMappingMeta { + variantGroups: string[][]; + appearances: string[]; + states: string[] +} + +export interface TestComponentMappingType { + meta: IndexSignatureBase & any; + appearance: IndexSignatureBase & any; +} \ No newline at end of file diff --git a/rk-kit/generated.ts b/rk-kit/generated.ts new file mode 100644 index 0000000..ee3cc86 --- /dev/null +++ b/rk-kit/generated.ts @@ -0,0 +1,436 @@ +export default { + "Radio": { + "default": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.checked": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "blue-primary", + "selectColor": "blue-primary", + "highlightColor": "transparent" + }, + "default.checked.disabled": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.checked.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "blue-primary", + "highlightColor": "gray-light" + }, + "default.checked.disabled.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.disabled": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.disabled.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.small": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.big": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.small": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.big": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-primary", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.checked": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "transparent" + }, + "default.error.checked.disabled": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.error.checked.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "gray-light" + }, + "default.error.checked.disabled.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.error.disabled": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.disabled.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error.active": { + "size": 36, + "innerSize": 24, + "highlightSize": 60, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error.small.checked": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "transparent" + }, + "default.error.small.checked.disabled": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.error.small.checked.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "gray-light" + }, + "default.error.small.checked.disabled.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.error.small.disabled": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.small.disabled.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error.small.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error.big.checked": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "transparent" + }, + "default.error.big.checked.disabled": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.error.big.checked.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "pink-primary", + "highlightColor": "gray-light" + }, + "default.error.big.checked.disabled.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "pink-primary", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.error.big.disabled": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.error.big.disabled.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.error.big.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.small.checked": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "blue-primary", + "selectColor": "blue-primary", + "highlightColor": "transparent" + }, + "default.small.checked.disabled": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.small.checked.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "blue-primary", + "highlightColor": "gray-light" + }, + "default.small.checked.disabled.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.small.disabled": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.small.disabled.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.small.active": { + "size": 30, + "innerSize": 20, + "highlightSize": 50, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.big.checked": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "blue-primary", + "selectColor": "blue-primary", + "highlightColor": "transparent" + }, + "default.big.checked.disabled": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "gray-primary", + "highlightColor": "transparent" + }, + "default.big.checked.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "blue-primary", + "highlightColor": "gray-light" + }, + "default.big.checked.disabled.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "blue-dark", + "selectColor": "gray-primary", + "highlightColor": "gray-light" + }, + "default.big.disabled": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-light", + "selectColor": "transparent", + "highlightColor": "transparent" + }, + "default.big.disabled.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + }, + "default.big.active": { + "size": 42, + "innerSize": 28, + "highlightSize": 70, + "borderWidth": 2, + "borderColor": "gray-dark", + "selectColor": "transparent", + "highlightColor": "gray-light" + } + } +}; \ No newline at end of file diff --git a/rk-kit/index.ts b/rk-kit/index.ts new file mode 100644 index 0000000..9b67529 --- /dev/null +++ b/rk-kit/index.ts @@ -0,0 +1,24 @@ +import { default as mapping } from './generated'; +import { + getStyle as getGeneratedStyle, + StyleMappingType, +} from '../processor/rk-kit'; + +export function getStyle(component: string, + appearance: string, + variants: string[], + states: string[]): StyleMappingType { + + return getGeneratedStyle(mapping, component, appearance, variants, states); +} + +export { + getComponentVariantGroups, + getComponentStates, + createStyle, + + APPEARANCE_DEFAULT, + + ThemeMappingType, + StyleMappingType, +} from '../processor/rk-kit'; diff --git a/rk-kit/package.json b/rk-kit/package.json new file mode 100644 index 0000000..a5d3744 --- /dev/null +++ b/rk-kit/package.json @@ -0,0 +1,34 @@ + +{ + "name": "@eva/rk-kit", + "description": "Processing tool for react-native-ui-kitten", + "version": "0.0.1", + "license": "MIT", + "author": "akveo ", + "homepage": "https://github.com/akveo/eva#readme", + "repository": "git+https://github.com/akveo/eva.git", + "bugs": { + "url": "https://github.com/akveo/eva/issues" + }, + "scripts": { + "start": "npm run build -- --watch", + "build": "tsc", + "generate": "( cd ./scripts && ts-node generate-index )", + "clean": "rimraf ./dist", + "lint": "tslint --project tsconfig.json ./src/*.ts", + "lint:fix": "npm run lint -- --fix", + "ci:test": "npm test -- --coverage && cat ./dist/jest/coverage/lcov.info | coveralls", + "test": "jest" + }, + "devDependencies": { + "@types/jest": "^23.3.11", + "@types/node": "^10.12.18", + "husky": "^1.1.2", + "jest": "^24.0.0-alpha.9", + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "ts-node": "^7.0.1", + "tslint": "^5.12.0", + "typescript": "^3.2.2" + } +} \ No newline at end of file diff --git a/rk-kit/scripts/generate.ts b/rk-kit/scripts/generate.ts new file mode 100644 index 0000000..0a9fb3e --- /dev/null +++ b/rk-kit/scripts/generate.ts @@ -0,0 +1,21 @@ +import { default as mapping } from '../../mapping/default'; +import { + MappingProcessor, + MetaProcessor, + ThemeMappingType, +} from '../../processor/rk-kit'; +import * as fs from 'fs'; + +const mappingProcessor: MappingProcessor = new MappingProcessor(); +const metaProcessor: MetaProcessor = new MetaProcessor(); + +const themeMapping: ThemeMappingType = metaProcessor.process({ + mapping: mapping, + meta: mappingProcessor.process(mapping), +}); + +const output = (mapping: ThemeMappingType): string => { + return `export default ${JSON.stringify(mapping, null, 2)};`; +}; + +fs.writeFileSync('../generated.ts', output(themeMapping)); diff --git a/theme/default/index.ts b/theme/default/index.ts new file mode 100644 index 0000000..9fee7a5 --- /dev/null +++ b/theme/default/index.ts @@ -0,0 +1,3 @@ +import { default as theme } from './theme.json'; + +export default theme; diff --git a/theme/default/package.json b/theme/default/package.json new file mode 100644 index 0000000..c1f8d35 --- /dev/null +++ b/theme/default/package.json @@ -0,0 +1,12 @@ +{ + "name": "@eva/theme-default", + "description": "Eva design system default theme", + "version": "0.0.1", + "license": "MIT", + "author": "akveo ", + "homepage": "https://github.com/akveo/eva#readme", + "repository": "git+https://github.com/akveo/eva.git", + "bugs": { + "url": "https://github.com/akveo/eva/issues" + } +} diff --git a/theme/default/theme.json b/theme/default/theme.json new file mode 100644 index 0000000..aef2226 --- /dev/null +++ b/theme/default/theme.json @@ -0,0 +1,9 @@ +{ + "blue-primary": "#3366FF", + "blue-dark": "#2541CC", + "gray-light": "#DDE1EB", + "gray-primary": "#A6AEBD", + "gray-dark": "#8992A3", + "gray-highlight": "#EDF0F5", + "pink-primary": "#FF3D71" +} diff --git a/tsconfig.jest.json b/tsconfig.jest.json new file mode 100644 index 0000000..fc8520e --- /dev/null +++ b/tsconfig.jest.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.json" +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3686692 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "outDir": "./dist/tsc-out", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "sourceMap": true, + "target": "es2015", + "module": "commonjs", + "declaration": true, + "downlevelIteration": true, + "lib": [ + "es2015", + "es2016", + "es2017" + ] + } +} diff --git a/eva-kitten/kitten-preprocessor/tslint.json b/tslint.json similarity index 100% rename from eva-kitten/kitten-preprocessor/tslint.json rename to tslint.json