diff --git a/LICENSE b/LICENSE index 0bb340d..d702c5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,7 @@ -The MIT License (MIT) +Copyright 2015-2017 Jos de Jong -Copyright (c) 2011-2016 Jos de Jong +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 4b809d5..3e18a8b 100644 --- a/README.md +++ b/README.md @@ -164,3 +164,8 @@ jsoneditor: ``` npm run watch:test ``` + + +## License + +MIT \ No newline at end of file diff --git a/examples/react_demo/package-lock.json b/examples/react_demo/package-lock.json index 8f0d01f..9dc085f 100644 --- a/examples/react_demo/package-lock.json +++ b/examples/react_demo/package-lock.json @@ -5,15 +5,9 @@ "requires": true, "dependencies": { "abab": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", - "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", - "dev": true - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", "dev": true }, "accepts": { @@ -27,11 +21,28 @@ } }, "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", @@ -66,20 +77,28 @@ } } }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", + "dev": true + }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "align-text": { @@ -105,16 +124,47 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "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.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, "ansi-html": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.5.tgz", - "integrity": "sha1-DcqloIEgaGa8JAo7dzoYTqO4i2Q=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, "ansi-regex": { @@ -124,16 +174,13 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansicolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", - "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "anymatch": { "version": "1.3.2", @@ -163,6 +210,15 @@ "sprintf-js": "1.0.3" } }, + "aria-query": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.0.tgz", + "integrity": "sha512-/r2lHl09V3o74+2MLKEdewoj37YZqiQZnfen1O4iNlrOjUgeKuu1U2yF3iKh6HJxqF+OXkLMfQv65Z/cvxD6vA==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -178,22 +234,50 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "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-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, "array-union": { @@ -234,6 +318,17 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", @@ -244,16 +339,25 @@ } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", "dev": true }, "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "async-each": { "version": "1.0.1", @@ -268,23 +372,23 @@ "dev": true }, "autoprefixer": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.1.tgz", - "integrity": "sha1-rnWaUiHnCfPaF8LWViMOZ8Q8u3U=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", + "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", "dev": true, "requires": { - "browserslist": "1.4.0", - "caniuse-db": "1.0.30000721", + "browserslist": "2.10.0", + "caniuse-lite": "1.0.30000784", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "5.2.17", + "postcss": "6.0.14", "postcss-value-parser": "3.3.0" } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "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": { @@ -293,6 +397,15 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "axobject-query": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-0.1.0.tgz", + "integrity": "sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -305,9 +418,9 @@ } }, "babel-core": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.17.0.tgz", - "integrity": "sha1-bEV2RH30eeJB5YyAfkvH2k239CU=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -320,38 +433,35 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.4.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", "lodash": "4.17.4", "minimatch": "3.0.4", - "path-exists": "1.0.0", "path-is-absolute": "1.0.1", - "private": "0.1.7", - "shebang-regex": "1.0.0", + "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" }, "dependencies": { - "path-exists": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", - "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "babel-eslint": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.1.1.tgz", - "integrity": "sha1-imqITwhapwYK9pz8dzQcL5k3D7I=", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash.pickby": "4.6.0" + "babylon": "6.18.0" } }, "babel-generator": { @@ -368,6 +478,14 @@ "lodash": "4.17.4", "source-map": "0.5.7", "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -519,26 +637,25 @@ } }, "babel-jest": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-17.0.2.tgz", - "integrity": "sha1-jVHg0DdZcTwzHxCOsLLqpMbv/3Q=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", "dev": true, "requires": { - "babel-core": "6.17.0", - "babel-plugin-istanbul": "2.0.3", - "babel-preset-jest": "17.0.2" + "babel-core": "6.26.0", + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "20.0.3" } }, "babel-loader": { - "version": "6.2.7", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.7.tgz", - "integrity": "sha1-Fv2/ZDKAMNxaYGgn04nIuSoqgDI=", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", "dev": true, "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" } }, "babel-messages": { @@ -559,22 +676,32 @@ "babel-runtime": "6.26.0" } }, - "babel-plugin-istanbul": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-2.0.3.tgz", - "integrity": "sha1-JmswS5EJYH1gdIR0OUZ2mC9mDfQ=", + "babel-plugin-dynamic-import-node": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", + "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", "dev": true, "requires": { - "find-up": "1.1.2", - "istanbul-lib-instrument": "1.7.5", - "object-assign": "4.1.1", - "test-exclude": "2.1.3" + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" } }, "babel-plugin-jest-hoist": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-17.0.2.tgz", - "integrity": "sha1-ITSIzoJZkKzUww+IfcoJ//60UjU=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", "dev": true }, "babel-plugin-syntax-async-functions": { @@ -589,6 +716,12 @@ "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", "dev": true }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", @@ -631,9 +764,9 @@ } }, "babel-plugin-transform-class-properties": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.22.0.tgz", - "integrity": "sha1-qnj4E0SVx94GwJcRi6BhhE4dwdg=", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { "babel-helper-function-name": "6.24.1", @@ -898,9 +1031,9 @@ } }, "babel-plugin-transform-object-rest-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.22.0.tgz", - "integrity": "sha1-HUGbVeaNLk9kpf8zc71n1zyOg7w=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "6.13.0", @@ -908,9 +1041,9 @@ } }, "babel-plugin-transform-react-constant-elements": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.22.0.tgz", - "integrity": "sha1-SvRW+A0oPovgDwDxKFI1Te+gjuE=", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", + "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -926,9 +1059,9 @@ } }, "babel-plugin-transform-react-jsx": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.22.0.tgz", - "integrity": "sha1-SFVrfdTD/pfRyUO81U/D8lYcGBc=", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { "babel-helper-builder-react-jsx": "6.26.0", @@ -957,18 +1090,18 @@ } }, "babel-plugin-transform-regenerator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz", - "integrity": "sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.9.8" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-runtime": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.22.0.tgz", - "integrity": "sha1-EJaNdgu/ZRckMIHux3jhD6goVRw=", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -985,9 +1118,9 @@ } }, "babel-preset-env": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.2.1.tgz", - "integrity": "sha1-ZZF49U33SnR2X3lr5NKQtb7rP18=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", @@ -1016,77 +1149,62 @@ "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.22.0", - "browserslist": "1.4.0", - "electron-to-chromium": "1.3.20", - "invariant": "2.2.2" + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.10.0", + "invariant": "2.2.2", + "semver": "5.4.1" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" } }, "babel-preset-jest": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-17.0.2.tgz", - "integrity": "sha1-FB6TXevhZKqgNkwiDTHMshdkk7I=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", "dev": true, "requires": { - "babel-plugin-jest-hoist": "17.0.2" + "babel-plugin-jest-hoist": "20.0.3" } }, "babel-preset-react": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.22.0.tgz", - "integrity": "sha1-e8l+LXPuxLmA+2tOTgiE6BzNwWU=", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "6.18.0", "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-transform-flow-strip-types": "6.22.0", "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.22.0", + "babel-plugin-transform-react-jsx": "6.24.1", "babel-plugin-transform-react-jsx-self": "6.22.0", - "babel-plugin-transform-react-jsx-source": "6.22.0" + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" } }, "babel-preset-react-app": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-2.2.0.tgz", - "integrity": "sha1-MUO88xYEn3i1+dBCL9eCLKRxXKQ=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.0.tgz", + "integrity": "sha512-jEAeVozxLzftLl0iDZ0d5jrmfbo3yogON/eI4AsEDIs8p6WW+t9mDRUsj5l12bqPOLSiVOElCQ3QyGjMcyBiwA==", "dev": true, "requires": { - "babel-plugin-transform-class-properties": "6.22.0", - "babel-plugin-transform-object-rest-spread": "6.22.0", - "babel-plugin-transform-react-constant-elements": "6.22.0", - "babel-plugin-transform-react-jsx": "6.22.0", + "babel-plugin-dynamic-import-node": "1.1.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-constant-elements": "6.23.0", + "babel-plugin-transform-react-jsx": "6.24.1", "babel-plugin-transform-react-jsx-self": "6.22.0", "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-plugin-transform-regenerator": "6.22.0", - "babel-plugin-transform-runtime": "6.22.0", - "babel-preset-env": "1.2.1", - "babel-preset-react": "6.22.0", - "babel-runtime": "6.22.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.22.0.tgz", - "integrity": "sha1-HPi0rGfHek3bDbKuH3TeUqxMphE=", - "dev": true, - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.10.5" - } - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } + "babel-plugin-transform-regenerator": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-react": "6.24.1" } }, "babel-register": { @@ -1097,50 +1215,17 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", "lodash": "4.17.4", "mkdirp": "0.5.1", - "source-map-support": "0.4.17" + "source-map-support": "0.4.18" }, "dependencies": { - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "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.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.7" - } - }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true } } @@ -1151,14 +1236,14 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" }, "dependencies": { "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true } } @@ -1187,7 +1272,7 @@ "babel-runtime": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "debug": "2.6.8", + "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" @@ -1240,23 +1325,61 @@ } }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1264,12 +1387,57 @@ "dev": true }, "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" + } + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "brace-expansion": { @@ -1293,6 +1461,12 @@ "repeat-element": "1.1.2" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-resolve": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", @@ -1311,36 +1485,89 @@ } }, "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", "inherits": "2.0.3" } }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "pako": "0.2.9" + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" } }, "browserslist": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz", - "integrity": "sha1-nP3PU4TZFY9bcNoqoAsw6P8BkEk=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", + "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", "dev": true, "requires": { - "caniuse-db": "1.0.30000721" + "caniuse-lite": "1.0.30000784", + "electron-to-chromium": "1.3.29" } }, "bser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", - "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "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" @@ -1357,6 +1584,18 @@ "isarray": "1.0.0" } }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1370,9 +1609,9 @@ "dev": true }, "bytes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz", - "integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, "caller-path": { @@ -1396,7 +1635,7 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "2.3.1", + "no-case": "2.3.2", "upper-case": "1.1.3" } }, @@ -1406,38 +1645,70 @@ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, "requires": { - "browserslist": "1.4.0", - "caniuse-db": "1.0.30000721", + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000784", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + } } }, "caniuse-db": { - "version": "1.0.30000721", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000721.tgz", - "integrity": "sha1-zcUu/o+C3RORZhW3job3BOzmGAI=", + "version": "1.0.30000784", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000784.tgz", + "integrity": "sha1-G+lQEtlInHcZB0+BruV9vf/mNhs=", "dev": true }, - "cardinal": { + "caniuse-lite": { + "version": "1.0.30000784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz", + "integrity": "sha1-EpztdOmhKApEGIC2zSvOMO9Z5sA=", + "dev": true + }, + "capture-stack-trace": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", - "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", - "dev": true, - "requires": { - "ansicolors": "0.2.1", - "redeyed": "1.0.1" - } + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true }, "case-sensitive-paths-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-1.1.4.tgz", - "integrity": "sha1-iq7dVpmobKwrNM9A2bQUV1iXhHI=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", + "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=", "dev": true }, "caseless": { @@ -1469,6 +1740,12 @@ "supports-color": "2.0.0" }, "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 + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -1477,6 +1754,12 @@ } } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -1485,6 +1768,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1494,11 +1778,21 @@ } }, "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -1506,57 +1800,44 @@ "dev": true }, "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { "chalk": "1.1.3" } }, "clean-css": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.8.tgz", - "integrity": "sha1-BhRVsklKdQrJj0bY1euxfGeeqdE=", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { "source-map": "0.5.7" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" }, "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, - "cli-usage": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.4.tgz", - "integrity": "sha1-fAHg3HBsI0s5yTODjI4gshdXduI=", + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "marked": "0.3.6", - "marked-terminal": "1.7.0" + "restore-cursor": "2.0.0" } }, "cli-width": { @@ -1585,9 +1866,9 @@ } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", "dev": true }, "co": { @@ -1602,7 +1883,7 @@ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "1.5.0" + "q": "1.5.1" } }, "code-point-at": { @@ -1617,15 +1898,15 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", + "clone": "1.0.3", + "color-convert": "1.9.1", "color-string": "0.3.0" } }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -1673,13 +1954,10 @@ } }, "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true }, "commondir": { "version": "1.0.1", @@ -1688,27 +1966,27 @@ "dev": true }, "compressible": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz", - "integrity": "sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo=", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", "dev": true, "requires": { "mime-db": "1.30.0" } }, "compression": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.0.tgz", - "integrity": "sha1-AwyfGY8WQ6BX13anOOki2kNzAS0=", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", "dev": true, "requires": { "accepts": "1.3.4", - "bytes": "2.5.0", - "compressible": "2.0.11", - "debug": "2.6.8", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", "on-headers": "1.0.1", "safe-buffer": "5.1.1", - "vary": "1.1.1" + "vary": "1.1.2" } }, "concat-map": { @@ -1728,10 +2006,35 @@ "typedarray": "0.0.6" } }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, "connect-history-api-fallback": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", - "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", "dev": true }, "console-browserify": { @@ -1762,21 +2065,21 @@ "dev": true }, "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "content-type-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", - "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", "dev": true }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "cookie": { @@ -1825,35 +2128,99 @@ } } }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "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.1.1", + "shebang-command": "1.2.0", "which": "1.3.0" } }, "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } } }, "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" } }, "css-color-names": { @@ -1863,23 +2230,60 @@ "dev": true }, "css-loader": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.26.0.tgz", - "integrity": "sha1-Fg03j1uOD9T/ba9PNYDiIZszAl8=", + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", "dev": true, "requires": { "babel-code-frame": "6.26.0", "css-selector-tokenizer": "0.7.0", "cssnano": "3.10.0", - "loader-utils": "0.2.17", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-modules-extract-imports": "1.1.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", - "source-list-map": "0.1.8" + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "css-select": { @@ -1911,7 +2315,7 @@ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -1936,12 +2340,12 @@ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "dev": true, "requires": { - "autoprefixer": "6.5.1", + "autoprefixer": "6.7.7", "decamelize": "1.2.0", "defined": "1.0.0", "has": "1.0.1", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-calc": "5.3.1", "postcss-colormin": "2.2.2", "postcss-convert-values": "2.6.1", @@ -1968,6 +2372,65 @@ "postcss-unique-selectors": "2.0.2", "postcss-value-parser": "3.3.0", "postcss-zindex": "2.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000784", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "csso": { @@ -1976,8 +2439,16 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "1.2.0", + "clap": "1.2.3", "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "cssom": { @@ -1995,13 +2466,22 @@ "cssom": "0.3.2" } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.30" + "es5-ext": "0.10.37" } }, "damerau-levenshtein": { @@ -2017,14 +2497,6 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "date-now": { @@ -2034,9 +2506,9 @@ "dev": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "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" @@ -2048,6 +2520,18 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -2063,6 +2547,16 @@ "strip-bom": "2.0.0" } }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -2081,7 +2575,7 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "delayed-stream": { @@ -2096,6 +2590,16 @@ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", "dev": true }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -2111,29 +2615,71 @@ "repeating": "2.0.1" } }, - "detect-port": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.0.1.tgz", - "integrity": "sha1-Phqmp/9md7tgiUspEXJSnYgMHoU=", + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "detect-port-alt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz", + "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=", "dev": true, "requires": { - "commander": "2.8.1" + "address": "1.0.3", + "debug": "2.6.9" } }, "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "dev": true }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" } }, "dom-converter": { @@ -2171,6 +2717,15 @@ } } }, + "dom-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", + "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", + "dev": true, + "requires": { + "urijs": "1.19.0" + } + }, "domain-browser": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", @@ -2202,10 +2757,19 @@ "domelementtype": "1.3.0" } }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, "dotenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz", - "integrity": "sha1-vXWcNXqqcDZeAclrewvsCKbg2Uk=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", "dev": true }, "duplexer": { @@ -2214,6 +2778,15 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2231,9 +2804,30 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.20.tgz", - "integrity": "sha1-Lu3VzLrn3cVX9orR/OnBcukV5OU=", + "version": "1.3.29", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.29.tgz", + "integrity": "sha1-elgja5VGjD52YAkTSFItZddzazY=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", "dev": true }, "emojis-list": { @@ -2253,26 +2847,19 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.18" + "iconv-lite": "0.4.19" } }, "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - } + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" } }, "entities": { @@ -2282,12 +2869,12 @@ "dev": true }, "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "1.0.1" } }, "error-ex": { @@ -2299,24 +2886,48 @@ "is-arrayish": "0.2.1" } }, - "es5-ext": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", - "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { - "es6-iterator": "2.0.1", + "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.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", + "es5-ext": "0.10.37", "es6-symbol": "3.1.1" } }, @@ -2327,13 +2938,19 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" } }, + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", + "dev": true + }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -2341,8 +2958,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" } @@ -2354,7 +2971,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.37" } }, "es6-weak-map": { @@ -2364,8 +2981,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, @@ -2382,33 +2999,30 @@ "dev": true }, "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", + "esprima": "3.1.3", + "estraverse": "4.2.0", "esutils": "2.0.2", "optionator": "0.8.2", - "source-map": "0.2.0" + "source-map": "0.5.7" }, "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "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.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } + "optional": true } } }, @@ -2425,46 +3039,251 @@ } }, "eslint": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.8.1.tgz", - "integrity": "sha1-fQLbRM1ar0+nqkieHwg7qkVDQro=", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", + "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", "dev": true, "requires": { - "chalk": "1.1.3", + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", "concat-stream": "1.6.0", - "debug": "2.6.8", - "doctrine": "1.5.0", - "escope": "3.6.0", - "espree": "3.5.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", "glob": "7.1.2", "globals": "9.18.0", - "ignore": "3.3.5", + "ignore": "3.3.7", "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.7.0", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", "json-stable-stringify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", "optionator": "0.8.2", "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", + "pluralize": "7.0.0", + "progress": "2.0.0", "require-uncached": "1.0.3", - "shelljs": "0.6.1", - "strip-bom": "3.0.0", - "strip-json-comments": "1.0.4", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.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 + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.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" + } + } + } + }, + "eslint-config-react-app": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-2.0.1.tgz", + "integrity": "sha512-gHtkzfEjKXhgZJ0Bf+EmztFSWwTiMDgoy85sFaTqrxU1BHSJ9i4i/JJtXJofVCU/SOKxYs46LO3ajvuzFQH5rw==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz", + "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -2473,128 +3292,61 @@ } } }, - "eslint-config-react-app": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-0.5.2.tgz", - "integrity": "sha1-FcVY0TZTI+CiPtLdp/vUye9lcGw=", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "dev": true, - "requires": { - "debug": "2.6.8", - "object-assign": "4.1.1", - "resolve": "1.4.0" - } - }, - "eslint-loader": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.6.0.tgz", - "integrity": "sha1-OPmh5sYCpPHz81FiiXJuXSbm4WU=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "object-assign": "4.1.1" - } - }, - "eslint-module-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-1.0.0.tgz", - "integrity": "sha1-xKV/06U+/YQmzC1VUKraubvQX9A=", - "dev": true, - "requires": { - "debug": "2.2.0", - "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "eslint-plugin-flowtype": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.21.0.tgz", - "integrity": "sha1-pH6Fq83RgdN6M2BUvVUhSa44fZw=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "eslint-plugin-import": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.0.1.tgz", - "integrity": "sha1-3P6WNX1Haz+CJXDULCm+xm9dnFw=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.8", - "doctrine": "1.3.0", - "eslint-import-resolver-node": "0.2.3", - "eslint-module-utils": "1.0.0", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "pkg-up": "1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz", - "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, "eslint-plugin-jsx-a11y": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz", - "integrity": "sha1-TjXLcbin23AqxBXIBuuOjZ6mxl0=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz", + "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", "dev": true, "requires": { + "aria-query": "0.7.0", + "array-includes": "3.0.3", + "ast-types-flow": "0.0.7", + "axobject-query": "0.1.0", "damerau-levenshtein": "1.0.4", - "jsx-ast-utils": "1.4.1", - "object-assign": "4.1.1" - } - }, - "eslint-plugin-react": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.4.1.tgz", - "integrity": "sha1-fRqt50fbFYkvce7h/qSt35e8+is=", - "dev": true, - "requires": { - "doctrine": "1.5.0", + "emoji-regex": "6.5.1", "jsx-ast-utils": "1.4.1" } }, - "espree": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", - "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "eslint-plugin-react": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", + "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", "dev": true, "requires": { - "acorn": "5.1.1", + "doctrine": "2.0.2", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", "acorn-jsx": "3.0.1" } }, @@ -2604,6 +3356,15 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, "esrecurse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", @@ -2627,9 +3388,9 @@ "dev": true }, "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, "event-emitter": { @@ -2639,7 +3400,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.37" } }, "eventemitter3": { @@ -2663,20 +3424,39 @@ "original": "1.0.0" } }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, "exec-sh": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", - "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", "dev": true, "requires": { "merge": "1.2.0" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "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.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "expand-brackets": { "version": "0.1.5", @@ -2696,46 +3476,63 @@ "fill-range": "2.2.3" } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, "express": { - "version": "4.15.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.4.tgz", - "integrity": "sha1-Ay4iU0ic+PzgJma+yj0R7XotrtE=", + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "dev": true, "requires": { "accepts": "1.3.4", "array-flatten": "1.1.1", + "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.2", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", - "debug": "2.6.8", + "debug": "2.6.9", "depd": "1.1.1", "encodeurl": "1.0.1", "escape-html": "1.0.3", - "etag": "1.8.0", - "finalhandler": "1.0.4", - "fresh": "0.5.0", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "1.1.2", "on-finished": "2.3.0", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.5", - "qs": "6.5.0", + "proxy-addr": "2.0.2", + "qs": "6.5.1", "range-parser": "1.2.0", - "send": "0.15.4", - "serve-static": "1.12.4", - "setprototypeof": "1.0.3", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", "statuses": "1.3.1", "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" + "utils-merge": "1.0.1", + "vary": "1.1.2" }, "dependencies": { - "qs": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", - "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==", + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true } } @@ -2746,6 +3543,17 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -2756,14 +3564,15 @@ } }, "extract-text-webpack-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.0.1.tgz", - "integrity": "sha1-yVvzy6rEnclvHcbgclSfu2VMzSw=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", "dev": true, "requires": { - "async": "1.5.2", - "loader-utils": "0.2.17", - "webpack-sources": "0.1.5" + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" } }, "extsprintf": { @@ -2772,6 +3581,18 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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", @@ -2785,27 +3606,27 @@ "dev": true }, "faye-websocket": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz", - "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "dev": true, "requires": { - "websocket-driver": "0.6.5" + "websocket-driver": "0.7.0" } }, "fb-watchman": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", - "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "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": "1.0.2" + "bser": "2.0.0" } }, "fbjs": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.14.tgz", - "integrity": "sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { "core-js": "1.2.7", "isomorphic-fetch": "2.2.1", @@ -2813,17 +3634,16 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" + "ua-parser-js": "0.7.17" } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "1.0.5" } }, "file-entry-cache": { @@ -2832,17 +3652,18 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", + "flat-cache": "1.3.0", "object-assign": "4.1.1" } }, "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", "dev": true, "requires": { - "loader-utils": "0.2.17" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } }, "filename-regex": { @@ -2862,9 +3683,9 @@ } }, "filesize": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.3.0.tgz", - "integrity": "sha1-UxSeo0YOOy4CSWKlFkiqVyz5gSI=", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", "dev": true }, "fill-range": { @@ -2880,46 +3701,51 @@ "repeat-string": "1.6.1" } }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, "finalhandler": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz", - "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "encodeurl": "1.0.1", "escape-html": "1.0.3", "on-finished": "2.3.0", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" } }, "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "locate-path": "2.0.0" } }, "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { "circular-json": "0.3.3", @@ -2949,6 +3775,12 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2956,9 +3788,9 @@ "dev": true }, "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { "asynckit": "0.4.0", @@ -2967,28 +3799,26 @@ } }, "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.1" + "jsonfile": "3.0.1", + "universalify": "0.1.1" } }, "fs.realpath": { @@ -2997,33 +3827,935 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "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.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "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, + "requires": { + "wrappy": "1.0.2" + } + }, + "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.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "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.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.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 + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "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 + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3031,14 +4763,6 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "glob": { @@ -3074,6 +4798,30 @@ "is-glob": "2.0.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.1", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.1", + "which": "1.3.0" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -3094,18 +4842,35 @@ "pinkie-promise": "2.0.1" } }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -3121,10 +4886,16 @@ "duplexer": "0.1.1" } }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -3133,6 +4904,12 @@ "uglify-js": "2.8.29" }, "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", @@ -3179,19 +4956,19 @@ } }, "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "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": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has": { @@ -3213,21 +4990,40 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" } }, "he": { @@ -3236,10 +5032,21 @@ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", "dev": true }, "home-or-tmp": { @@ -3252,12 +5059,33 @@ "os-tmpdir": "1.0.2" } }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, "html-comment-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", @@ -3265,56 +5093,62 @@ "dev": true }, "html-encoding-sniffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", - "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "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" + "whatwg-encoding": "1.0.3" } }, "html-entities": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.0.tgz", - "integrity": "sha1-QZSMr4XOgv7Tbk5qDtNxpmZDeeI=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, "html-minifier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.3.tgz", - "integrity": "sha512-iKRzQQDuTCsq0Ultbi/mfJJnR0D3AdZKTq966Gsp92xkmAPCV4Xi08qhJ0Dl3ZAWemSgJ7qZK+UsZc0gFqK6wg==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", "dev": true, "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.8", - "commander": "2.11.0", + "clean-css": "4.1.9", + "commander": "2.12.2", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.0.28" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - } + "uglify-js": "3.2.2" } }, "html-webpack-plugin": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.24.0.tgz", - "integrity": "sha1-U2l86nmp880fjCOaxx+UnVZzyss=", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", "dev": true, "requires": { - "bluebird": "3.5.0", - "html-minifier": "3.5.3", + "bluebird": "3.5.1", + "html-minifier": "3.5.7", "loader-utils": "0.2.17", "lodash": "4.17.4", "pretty-error": "2.1.1", - "toposort": "1.0.3" + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "htmlparser2": { @@ -3364,6 +5198,12 @@ } } }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", @@ -3374,8 +5214,22 @@ "inherits": "2.0.3", "setprototypeof": "1.0.3", "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } } }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", @@ -3387,9 +5241,9 @@ } }, "http-proxy-middleware": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.2.tgz", - "integrity": "sha1-Vy1Rem0vsQY6Rp3ilO7ZYGY1IAc=", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, "requires": { "http-proxy": "1.16.2", @@ -3416,26 +5270,26 @@ } }, "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "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": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", "sshpk": "1.13.1" } }, "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "icss-replace-symbols": { "version": "1.1.0", @@ -3443,6 +5297,15 @@ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", "dev": true }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, "ieee754": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", @@ -3450,17 +5313,36 @@ "dev": true }, "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "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 }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -3489,31 +5371,75 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "figures": "1.7.0", + "external-editor": "2.1.0", + "figures": "2.0.0", "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", "through": "2.3.8" + }, + "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 + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.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" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" } }, "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "invariant": { @@ -3531,10 +5457,16 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, "ipaddr.js": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", - "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", "dev": true }, "is-absolute-url": { @@ -3555,13 +5487,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "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": { @@ -3573,15 +5505,27 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", "dev": true, "requires": { - "ci-info": "1.0.0" + "ci-info": "1.1.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-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -3625,13 +5569,10 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-glob": { "version": "2.0.1", @@ -3642,17 +5583,11 @@ "is-extglob": "1.0.0" } }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true }, "is-number": { "version": "2.1.0", @@ -3663,6 +5598,12 @@ "kind-of": "3.2.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -3675,13 +5616,13 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -3705,21 +5646,45 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-resolvable": { + "is-redirect": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "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": { - "tryit": "1.0.3" + "has": "1.0.1" } }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -3734,6 +5699,12 @@ "html-comment-regex": "1.1.1" } }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3746,6 +5717,18 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3772,7 +5755,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.2", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.3" } }, @@ -3782,77 +5765,23 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.10", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.3.0", - "wordwrap": "1.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "istanbul-api": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.13.tgz", - "integrity": "sha1-cZf2RBNgDr3+xjR6LcPU4D+X7Vo=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "fileset": "2.0.3", "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.0.7", - "istanbul-lib-instrument": "1.7.5", - "istanbul-lib-report": "1.1.1", - "istanbul-lib-source-maps": "1.2.1", - "istanbul-reports": "1.1.2", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", "js-yaml": "3.7.0", "mkdirp": "0.5.1", "once": "1.4.0" - }, - "dependencies": { - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - } } }, "istanbul-lib-coverage": { @@ -3862,18 +5791,18 @@ "dev": true }, "istanbul-lib-hook": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", - "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.5.tgz", - "integrity": "sha1-rbWW+PDLi5XnOSBjUaOKWGryGx4=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -3886,48 +5815,88 @@ } }, "istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", "path-parse": "1.0.5", "supports-color": "3.2.3" + }, + "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.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", - "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "3.1.0", "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", - "rimraf": "2.6.1", + "rimraf": "2.6.2", "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.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 + } } }, "istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { - "handlebars": "4.0.10" + "handlebars": "4.0.11" } }, "jest": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-17.0.2.tgz", - "integrity": "sha1-oJXhnwso8/mSXsFrW9Z9UnbSdWs=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", "dev": true, "requires": { - "jest-cli": "17.0.3" + "jest-cli": "20.0.4" }, "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -3935,9 +5904,9 @@ "dev": true }, "jest-cli": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-17.0.3.tgz", - "integrity": "sha1-cAuMAqnqDsnqsM1an9QtioWM4UY=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", "dev": true, "requires": { "ansi-escapes": "1.4.0", @@ -3945,224 +5914,270 @@ "chalk": "1.1.3", "graceful-fs": "4.1.11", "is-ci": "1.0.10", - "istanbul-api": "1.1.13", + "istanbul-api": "1.2.1", "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-instrument": "1.7.5", - "jest-changed-files": "17.0.2", - "jest-config": "17.0.3", - "jest-environment-jsdom": "17.0.2", - "jest-file-exists": "17.0.0", - "jest-haste-map": "17.0.3", - "jest-jasmine2": "17.0.3", - "jest-mock": "17.0.2", - "jest-resolve": "17.0.3", - "jest-resolve-dependencies": "17.0.3", - "jest-runtime": "17.0.3", - "jest-snapshot": "17.0.3", - "jest-util": "17.0.2", - "json-stable-stringify": "1.0.1", - "node-notifier": "4.6.1", - "sane": "1.4.1", - "strip-ansi": "3.0.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.5", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", "throat": "3.2.0", "which": "1.3.0", - "worker-farm": "1.5.0", - "yargs": "6.6.0" + "worker-farm": "1.5.2", + "yargs": "7.1.0" } } } }, "jest-changed-files": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-17.0.2.tgz", - "integrity": "sha1-9WV3WHNplvWQpRuH5ck2nZBLp7c=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", "dev": true }, "jest-config": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-17.0.3.tgz", - "integrity": "sha1-tu112Q0JC3Mf2JQjGQTK231aXfI=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", "dev": true, "requires": { "chalk": "1.1.3", - "istanbul": "0.4.5", - "jest-environment-jsdom": "17.0.2", - "jest-environment-node": "17.0.2", - "jest-jasmine2": "17.0.3", - "jest-mock": "17.0.2", - "jest-resolve": "17.0.3", - "jest-util": "17.0.2", - "json-stable-stringify": "1.0.1" + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" } }, "jest-diff": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-17.0.3.tgz", - "integrity": "sha1-j7Me+rOzFNe2G3tmsL3qYX7xwC8=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", "dev": true, "requires": { "chalk": "1.1.3", - "diff": "3.3.0", - "jest-matcher-utils": "17.0.3", - "pretty-format": "4.2.3" + "diff": "3.4.0", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" } }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "dev": true + }, "jest-environment-jsdom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-17.0.2.tgz", - "integrity": "sha1-owmNwpgG1AgCxStiuEiraqAP26A=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", "dev": true, "requires": { - "jest-mock": "17.0.2", - "jest-util": "17.0.2", + "jest-mock": "20.0.3", + "jest-util": "20.0.3", "jsdom": "9.12.0" } }, "jest-environment-node": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-17.0.2.tgz", - "integrity": "sha1-r/YTP0yi+t3MWwzn0lzsg+FthGM=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", "dev": true, "requires": { - "jest-mock": "17.0.2", - "jest-util": "17.0.2" + "jest-mock": "20.0.3", + "jest-util": "20.0.3" } }, - "jest-file-exists": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-17.0.0.tgz", - "integrity": "sha1-f2Prc6HEOhP0Yb4mF2i0WvLN0Wk=", - "dev": true - }, "jest-haste-map": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-17.0.3.tgz", - "integrity": "sha1-UjJ4PnBXche2sX0qHBdmY3odL70=", + "version": "20.0.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", + "integrity": "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", "dev": true, "requires": { - "fb-watchman": "1.9.2", + "fb-watchman": "2.0.0", "graceful-fs": "4.1.11", - "multimatch": "2.1.0", - "sane": "1.4.1", - "worker-farm": "1.5.0" + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.5.2" } }, "jest-jasmine2": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-17.0.3.tgz", - "integrity": "sha1-1DNrifOtKIJpocjiv8GA3PicatE=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", "dev": true, "requires": { + "chalk": "1.1.3", "graceful-fs": "4.1.11", - "jest-matchers": "17.0.3", - "jest-snapshot": "17.0.3", - "jest-util": "17.0.2" + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.2.0" } }, "jest-matcher-utils": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-17.0.3.tgz", - "integrity": "sha1-8Qjkm5VuFSxmJtzAq6hk9Zq3sNM=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", "dev": true, "requires": { "chalk": "1.1.3", - "pretty-format": "4.2.3" + "pretty-format": "20.0.3" } }, "jest-matchers": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-17.0.3.tgz", - "integrity": "sha1-iLlTSMkZND24bQjxI1SoZQrn7d8=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", "dev": true, "requires": { - "jest-diff": "17.0.3", - "jest-matcher-utils": "17.0.3", - "jest-util": "17.0.2" + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" } }, "jest-mock": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-17.0.2.tgz", - "integrity": "sha1-Pf6SIa/ZqmGz2ZkoQIE6NYuy9Ck=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", + "dev": true + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", "dev": true }, "jest-resolve": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-17.0.3.tgz", - "integrity": "sha1-dpKnneKDGHQ3Xp1mS8eCwp5NomI=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", "dev": true, "requires": { "browser-resolve": "1.11.2", - "jest-file-exists": "17.0.0", - "jest-haste-map": "17.0.3", - "resolve": "1.4.0" + "is-builtin-module": "1.0.0", + "resolve": "1.5.0" } }, "jest-resolve-dependencies": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-17.0.3.tgz", - "integrity": "sha1-u9N/RkNwS5epgJJyEvOrErBuiJQ=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", "dev": true, "requires": { - "jest-file-exists": "17.0.0", - "jest-resolve": "17.0.3" + "jest-regex-util": "20.0.3" } }, "jest-runtime": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-17.0.3.tgz", - "integrity": "sha1-7/QFX+jD4XyV7Rqq9fcZxCC4ax8=", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", "dev": true, "requires": { - "babel-core": "6.17.0", - "babel-jest": "17.0.2", - "babel-plugin-istanbul": "2.0.3", + "babel-core": "6.26.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.5", "chalk": "1.1.3", + "convert-source-map": "1.5.1", "graceful-fs": "4.1.11", - "jest-config": "17.0.3", - "jest-file-exists": "17.0.0", - "jest-haste-map": "17.0.3", - "jest-mock": "17.0.2", - "jest-resolve": "17.0.3", - "jest-snapshot": "17.0.3", - "jest-util": "17.0.2", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.5", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", "json-stable-stringify": "1.0.1", - "multimatch": "2.1.0", - "yargs": "6.6.0" + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.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-snapshot": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-17.0.3.tgz", - "integrity": "sha1-yBmdtMy9VRXP7MjoAKsHa92nq8A=", - "dev": true, - "requires": { - "jest-diff": "17.0.3", - "jest-file-exists": "17.0.0", - "jest-matcher-utils": "17.0.3", - "jest-util": "17.0.2", - "natural-compare": "1.4.0", - "pretty-format": "4.2.3" - } - }, - "jest-util": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-17.0.2.tgz", - "integrity": "sha1-n9nagJHpkE+5dtp+TYkSyiaWhjg=", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", "dev": true, "requires": { "chalk": "1.1.3", - "diff": "3.3.0", "graceful-fs": "4.1.11", - "jest-file-exists": "17.0.0", - "jest-mock": "17.0.2", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", "mkdirp": "0.5.1" } }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } + }, "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", "dev": true }, "js-tokens": { @@ -4193,23 +6208,23 @@ "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", "dev": true, "requires": { - "abab": "1.0.3", + "abab": "1.0.4", "acorn": "4.0.13", "acorn-globals": "3.1.0", "array-equal": "1.0.0", - "content-type-parser": "1.0.1", + "content-type-parser": "1.0.2", "cssom": "0.3.2", "cssstyle": "0.2.37", - "escodegen": "1.8.1", - "html-encoding-sniffer": "1.0.1", - "nwmatcher": "1.4.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", "parse5": "1.5.1", - "request": "2.81.0", + "request": "2.83.0", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.2", + "tough-cookie": "2.3.3", "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.1", + "whatwg-encoding": "1.0.3", "whatwg-url": "4.8.0", "xml-name-validator": "2.0.1" }, @@ -4229,9 +6244,9 @@ "dev": true }, "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, "json-schema": { @@ -4240,6 +6255,12 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -4262,15 +6283,9035 @@ "dev": true }, "json5": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", - "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsoneditor": { + "version": "file:../..", + "requires": { + "ajv": "5.5.2", + "brace": "0.11.0", + "javascript-natural-sort": "0.7.1", + "lodash": "4.17.4", + "prop-types": "15.6.0", + "react-hammerjs": "1.0.1" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "bundled": true + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "accepts": { + "version": "1.3.4", + "bundled": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.2.1", + "bundled": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "bundled": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "bundled": true + } + } + }, + "acorn-globals": { + "version": "3.1.0", + "bundled": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "bundled": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "bundled": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "bundled": true + } + } + }, + "address": { + "version": "1.0.3", + "bundled": true + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "bundled": true + }, + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "bundled": true + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-align": { + "version": "1.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "ansi-escapes": { + "version": "3.0.0", + "bundled": true + }, + "ansi-html": { + "version": "0.0.7", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.0", + "bundled": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "bundled": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "argparse": { + "version": "1.0.9", + "bundled": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "aria-query": { + "version": "0.7.0", + "bundled": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "array-equal": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "0.0.1", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-flatten": { + "version": "2.1.1", + "bundled": true + }, + "array-includes": { + "version": "3.0.3", + "bundled": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "bundled": true + }, + "array-reduce": { + "version": "0.0.0", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "asn1.js": { + "version": "4.9.2", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "bundled": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "ast-types-flow": { + "version": "0.0.7", + "bundled": true + }, + "async": { + "version": "2.6.0", + "bundled": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "async-foreach": { + "version": "0.1.3", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "autoprefixer": { + "version": "7.1.6", + "bundled": true, + "requires": { + "browserslist": "2.10.0", + "caniuse-lite": "1.0.30000784", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.14", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "axobject-query": { + "version": "0.1.0", + "bundled": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-cli": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.12.2", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "bundled": 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" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-eslint": { + "version": "7.2.3", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": 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" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "20.0.3", + "bundled": true, + "requires": { + "babel-core": "6.26.0", + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "20.0.3" + } + }, + "babel-loader": { + "version": "7.1.2", + "bundled": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "1.1.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "bundled": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-constant-elements": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.10.0", + "invariant": "2.2.2", + "semver": "5.4.1" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" + } + }, + "babel-preset-jest": { + "version": "20.0.3", + "bundled": true, + "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" + } + }, + "babel-preset-react-app": { + "version": "3.1.0", + "bundled": true, + "requires": { + "babel-plugin-dynamic-import-node": "1.1.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-constant-elements": "6.23.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-react": "6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "bundled": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "bundled": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": 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", + "bundled": 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.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": 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", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base64-js": { + "version": "1.2.1", + "bundled": true + }, + "batch": { + "version": "0.6.1", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "bundled": true + }, + "binary-extensions": { + "version": "1.11.0", + "bundled": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true + }, + "body-parser": { + "version": "1.18.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "bonjour": { + "version": "3.5.0", + "bundled": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "bundled": true + }, + "boom": { + "version": "4.3.1", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + }, + "boxen": { + "version": "0.6.0", + "bundled": true, + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "brace": { + "version": "0.11.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browser-resolve": { + "version": "1.11.2", + "bundled": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "bundled": true + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "bundled": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "bundled": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "bundled": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.10.0", + "bundled": true, + "requires": { + "caniuse-lite": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + }, + "bser": { + "version": "2.0.0", + "bundled": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "bundled": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-indexof": { + "version": "1.1.1", + "bundled": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true + }, + "bytes": { + "version": "3.0.0", + "bundled": true + }, + "caller-path": { + "version": "0.1.0", + "bundled": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "bundled": true + }, + "camel-case": { + "version": "3.0.0", + "bundled": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "bundled": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "bundled": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "bundled": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000784", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "bundled": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000784", + "bundled": true + }, + "caniuse-lite": { + "version": "1.0.30000784", + "bundled": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.1.1", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "chardet": { + "version": "0.4.2", + "bundled": true + }, + "chokidar": { + "version": "1.7.0", + "bundled": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "ci-info": { + "version": "1.1.2", + "bundled": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "bundled": true + }, + "clap": { + "version": "1.2.3", + "bundled": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "bundled": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + } + } + }, + "clone": { + "version": "1.0.3", + "bundled": true + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "coa": { + "version": "1.0.4", + "bundled": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color": { + "version": "0.11.4", + "bundled": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "color-string": { + "version": "0.3.0", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "bundled": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "compressible": { + "version": "2.0.12", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "bundled": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "2.1.0", + "bundled": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "bundled": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "bundled": true + }, + "console-browserify": { + "version": "1.1.0", + "bundled": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "console.table": { + "version": "0.9.1", + "bundled": true, + "requires": { + "easy-table": "1.1.0" + } + }, + "constants-browserify": { + "version": "1.0.0", + "bundled": true + }, + "contains-path": { + "version": "0.1.0", + "bundled": true + }, + "content-disposition": { + "version": "0.5.2", + "bundled": true + }, + "content-type": { + "version": "1.0.4", + "bundled": true + }, + "content-type-parser": { + "version": "1.0.2", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "cookie": { + "version": "0.3.1", + "bundled": true + }, + "cookie-signature": { + "version": "1.0.6", + "bundled": true + }, + "core-js": { + "version": "1.2.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cosmiconfig": { + "version": "2.2.2", + "bundled": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "cp-file": { + "version": "3.2.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, + "cpy": { + "version": "4.0.1", + "bundled": true, + "requires": { + "cp-file": "3.2.0", + "globby": "4.1.0", + "meow": "3.7.0", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "4.1.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "6.0.4", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "cpy-cli": { + "version": "1.0.1", + "bundled": true, + "requires": { + "cpy": "4.0.1", + "meow": "3.7.0" + } + }, + "create-ecdh": { + "version": "4.0.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "bundled": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "bundled": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "bundled": true + }, + "css-loader": { + "version": "0.28.7", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "bundled": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "bundled": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "bundled": true + }, + "cssesc": { + "version": "0.1.0", + "bundled": true + }, + "cssnano": { + "version": "3.10.0", + "bundled": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "bundled": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000784", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "bundled": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "bundled": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "cssom": { + "version": "0.3.2", + "bundled": true + }, + "cssstyle": { + "version": "0.2.37", + "bundled": true, + "requires": { + "cssom": "0.3.2" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "0.10.37" + } + }, + "damerau-levenshtein": { + "version": "1.0.4", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "bundled": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "deep-equal": { + "version": "1.0.1", + "bundled": true + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "deep-is": { + "version": "0.1.3", + "bundled": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "optional": true, + "requires": { + "clone": "1.0.3" + } + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "defined": { + "version": "1.0.0", + "bundled": true + }, + "del": { + "version": "2.2.2", + "bundled": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.1", + "bundled": true + }, + "des.js": { + "version": "1.0.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "bundled": true + }, + "detect-port-alt": { + "version": "1.1.3", + "bundled": true, + "requires": { + "address": "1.0.3", + "debug": "2.6.9" + } + }, + "diff": { + "version": "3.4.0", + "bundled": true + }, + "diffie-hellman": { + "version": "5.0.2", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "dns-equal": { + "version": "1.0.0", + "bundled": true + }, + "dns-packet": { + "version": "1.2.2", + "bundled": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "bundled": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.0.2", + "bundled": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "bundled": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "bundled": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "bundled": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "bundled": true + } + } + }, + "dom-urls": { + "version": "1.1.0", + "bundled": true, + "requires": { + "urijs": "1.19.0" + } + }, + "domain-browser": { + "version": "1.1.7", + "bundled": true + }, + "domelementtype": { + "version": "1.3.0", + "bundled": true + }, + "domhandler": { + "version": "2.1.0", + "bundled": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "bundled": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "3.0.0", + "bundled": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "dotenv": { + "version": "4.0.0", + "bundled": true + }, + "duplexer": { + "version": "0.1.1", + "bundled": true + }, + "duplexer2": { + "version": "0.1.4", + "bundled": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "easy-table": { + "version": "1.1.0", + "bundled": true, + "requires": { + "wcwidth": "1.0.1" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "bundled": true + }, + "electron-to-chromium": { + "version": "1.3.29", + "bundled": true + }, + "elliptic": { + "version": "6.4.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emoji-regex": { + "version": "6.5.1", + "bundled": true + }, + "emojis-list": { + "version": "2.1.0", + "bundled": true + }, + "encodeurl": { + "version": "1.0.1", + "bundled": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "bundled": true + }, + "errno": { + "version": "0.1.6", + "bundled": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "bundled": 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.1.1", + "bundled": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.37", + "bundled": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.1.1", + "bundled": true + }, + "es6-set": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "escodegen": { + "version": "1.9.0", + "bundled": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "bundled": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.10.0", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "bundled": true + }, + "js-yaml": { + "version": "3.10.0", + "bundled": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-react-app": { + "version": "2.0.1", + "bundled": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "bundled": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "2.39.1", + "bundled": true, + "requires": { + "lodash": "4.17.4" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "bundled": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "5.1.1", + "bundled": true, + "requires": { + "aria-query": "0.7.0", + "array-includes": "3.0.3", + "ast-types-flow": "0.0.7", + "axobject-query": "0.1.0", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "1.4.1" + } + }, + "eslint-plugin-react": { + "version": "7.4.0", + "bundled": true, + "requires": { + "doctrine": "2.0.2", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "jsx-ast-utils": { + "version": "2.0.1", + "bundled": true, + "requires": { + "array-includes": "3.0.3" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "bundled": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "bundled": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "2.7.3", + "bundled": true + }, + "esquery": { + "version": "1.0.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "etag": { + "version": "1.8.1", + "bundled": true + }, + "event-emitter": { + "version": "0.3.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "event-stream": { + "version": "3.3.4", + "bundled": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "eventemitter3": { + "version": "1.2.0", + "bundled": true + }, + "events": { + "version": "1.1.1", + "bundled": true + }, + "eventsource": { + "version": "0.1.6", + "bundled": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "exec-sh": { + "version": "0.2.1", + "bundled": true, + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "2.0.2", + "bundled": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "express": { + "version": "4.16.2", + "bundled": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "bundled": true + }, + "path-to-regexp": { + "version": "0.1.7", + "bundled": true + } + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "external-editor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "bundled": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "bundled": true + }, + "fastparse": { + "version": "1.1.1", + "bundled": true + }, + "faye-websocket": { + "version": "0.11.1", + "bundled": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fb-watchman": { + "version": "2.0.0", + "bundled": true, + "requires": { + "bser": "2.0.0" + } + }, + "fbjs": { + "version": "0.8.16", + "bundled": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + } + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "bundled": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-loader": { + "version": "1.1.5", + "bundled": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fileset": { + "version": "2.0.3", + "bundled": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "filesize": { + "version": "3.5.11", + "bundled": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "filled-array": { + "version": "1.1.0", + "bundled": true + }, + "finalhandler": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "bundled": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "bundled": true + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.1", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "forwarded": { + "version": "0.1.2", + "bundled": true + }, + "fresh": { + "version": "0.5.2", + "bundled": true + }, + "from": { + "version": "0.1.7", + "bundled": true + }, + "fs-extra": { + "version": "3.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "bundled": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "gaze": { + "version": "1.1.2", + "bundled": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "bundled": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stdin": { + "version": "4.0.1", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-modules": { + "version": "1.0.0", + "bundled": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.1", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "bundled": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.1", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "5.0.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "globule": { + "version": "1.2.0", + "bundled": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + } + }, + "got": { + "version": "5.7.1", + "bundled": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "growly": { + "version": "1.3.0", + "bundled": true + }, + "gzip-size": { + "version": "3.0.0", + "bundled": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "hammerjs": { + "version": "2.0.8", + "bundled": true + }, + "handle-thing": { + "version": "1.2.5", + "bundled": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "bundled": true + }, + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true, + "optional": true + } + } + }, + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "bundled": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hash-base": { + "version": "2.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "bundled": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.0", + "bundled": true + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "bundled": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "hpack.js": { + "version": "2.1.6", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, + "html-comment-regex": { + "version": "1.1.1", + "bundled": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "bundled": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "html-entities": { + "version": "1.2.1", + "bundled": true + }, + "html-minifier": { + "version": "3.5.7", + "bundled": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.2" + } + }, + "html-webpack-plugin": { + "version": "2.29.0", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.7", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "bundled": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "bundled": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "bundled": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "readable-stream": { + "version": "1.0.34", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "bundled": true + }, + "http-errors": { + "version": "1.6.2", + "bundled": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "bundled": true + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "bundled": true + }, + "http-proxy": { + "version": "1.16.2", + "bundled": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "bundled": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "bundled": true + }, + "icss-utils": { + "version": "2.1.0", + "bundled": true, + "requires": { + "postcss": "6.0.14" + } + }, + "ieee754": { + "version": "1.1.8", + "bundled": true + }, + "ignore": { + "version": "3.3.7", + "bundled": true + }, + "import-local": { + "version": "0.1.1", + "bundled": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "in-publish": { + "version": "2.0.0", + "bundled": true + }, + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "inquirer": { + "version": "3.3.0", + "bundled": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "bundled": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "bundled": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ipaddr.js": { + "version": "1.5.2", + "bundled": true + }, + "is-absolute-url": { + "version": "2.1.0", + "bundled": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "bundled": true + }, + "is-ci": { + "version": "1.0.10", + "bundled": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true + }, + "is-directory": { + "version": "0.3.1", + "bundled": true + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "2.17.1", + "bundled": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-path-cwd": { + "version": "1.0.0", + "bundled": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-property": { + "version": "1.0.2", + "bundled": true + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.0.1", + "bundled": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-root": { + "version": "1.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-svg": { + "version": "2.1.0", + "bundled": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.1", + "bundled": true + }, + "is-wsl": { + "version": "1.1.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "bundled": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "istanbul-api": { + "version": "1.2.1", + "bundled": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "javascript-natural-sort": { + "version": "0.7.1", + "bundled": true + }, + "jest": { + "version": "20.0.4", + "bundled": true, + "requires": { + "jest-cli": "20.0.4" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "bundled": true + }, + "callsites": { + "version": "2.0.0", + "bundled": true + }, + "jest-cli": { + "version": "20.0.4", + "bundled": true, + "requires": { + "ansi-escapes": "1.4.0", + "callsites": "2.0.0", + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.5", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", + "throat": "3.2.0", + "which": "1.3.0", + "worker-farm": "1.5.2", + "yargs": "7.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "20.0.3", + "bundled": true + }, + "jest-config": { + "version": "20.0.4", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-diff": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "diff": "3.4.0", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-docblock": { + "version": "20.0.3", + "bundled": true + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "bundled": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "20.0.3", + "bundled": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3" + } + }, + "jest-haste-map": { + "version": "20.0.5", + "bundled": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.5.2" + } + }, + "jest-jasmine2": { + "version": "20.0.4", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.2.0" + } + }, + "jest-matcher-utils": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + } + }, + "jest-matchers": { + "version": "20.0.3", + "bundled": true, + "requires": { + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "20.0.3", + "bundled": true + }, + "jest-regex-util": { + "version": "20.0.3", + "bundled": true + }, + "jest-resolve": { + "version": "20.0.4", + "bundled": true, + "requires": { + "browser-resolve": "1.11.2", + "is-builtin-module": "1.0.0", + "resolve": "1.5.0" + } + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "bundled": true, + "requires": { + "jest-regex-util": "20.0.3" + } + }, + "jest-runtime": { + "version": "20.0.4", + "bundled": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.5", + "chalk": "1.1.3", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.5", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "bundled": true + } + } + }, + "jest-snapshot": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "20.0.3", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } + }, + "js-base64": { + "version": "2.4.0", + "bundled": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.7.0", + "bundled": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "bundled": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "bundled": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "json-loader": { + "version": "0.5.7", + "bundled": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "json3": { + "version": "3.3.2", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonfile": { + "version": "3.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "jsonpointer": { + "version": "4.0.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "1.4.1", + "bundled": true + }, + "killable": { + "version": "1.0.0", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "2.0.0", + "bundled": true, + "requires": { + "package-json": "2.4.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true + }, + "lazy-req": { + "version": "1.1.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "2.1.0", + "bundled": true + }, + "levn": { + "version": "0.3.0", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "loader-runner": { + "version": "2.3.0", + "bundled": true + }, + "loader-utils": { + "version": "1.1.0", + "bundled": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "bundled": true + }, + "lodash.assign": { + "version": "4.2.0", + "bundled": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.cond": { + "version": "4.5.2", + "bundled": true + }, + "lodash.defaults": { + "version": "4.2.0", + "bundled": true + }, + "lodash.memoize": { + "version": "4.1.2", + "bundled": true + }, + "lodash.mergewith": { + "version": "4.6.0", + "bundled": true + }, + "lodash.template": { + "version": "4.4.0", + "bundled": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "bundled": true, + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true + }, + "loglevel": { + "version": "1.6.0", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "bundled": true + }, + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "bundled": true + }, + "make-dir": { + "version": "1.1.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "bundled": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "map-obj": { + "version": "1.0.1", + "bundled": true + }, + "map-stream": { + "version": "0.1.0", + "bundled": true + }, + "math-expression-evaluator": { + "version": "1.2.17", + "bundled": true + }, + "md5.js": { + "version": "1.3.4", + "bundled": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "bundled": true, + "requires": { + "errno": "0.1.6", + "readable-stream": "2.3.3" + } + }, + "memorystream": { + "version": "0.3.1", + "bundled": true + }, + "meow": { + "version": "3.7.0", + "bundled": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "merge": { + "version": "1.2.0", + "bundled": true + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "bundled": true + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multicast-dns": { + "version": "6.2.1", + "bundled": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "bundled": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nan": { + "version": "2.8.0", + "bundled": true + }, + "natural-compare": { + "version": "1.4.0", + "bundled": true + }, + "ncname": { + "version": "1.0.0", + "bundled": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "bundled": true + }, + "nested-error-stacks": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "no-case": { + "version": "2.3.2", + "bundled": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fetch": { + "version": "1.7.3", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-forge": { + "version": "0.6.33", + "bundled": true + }, + "node-gyp": { + "version": "3.6.2", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "bundled": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "bundled": true + }, + "node-libs-browser": { + "version": "2.1.0", + "bundled": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.1.2", + "bundled": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "node-sass": { + "version": "4.7.2", + "bundled": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "bundled": true + }, + "cross-spawn": { + "version": "3.0.1", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-validator": { + "version": "2.0.6", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "qs": { + "version": "6.3.2", + "bundled": true + }, + "request": { + "version": "2.79.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true + } + } + }, + "node-sass-chokidar": { + "version": "0.0.3", + "bundled": true, + "requires": { + "async-foreach": "0.1.3", + "chokidar": "1.7.0", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "meow": "3.7.0", + "node-sass": "4.7.2", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + } + }, + "node-status-codes": { + "version": "1.0.0", + "bundled": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "bundled": true + }, + "normalize-url": { + "version": "1.9.1", + "bundled": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-all": { + "version": "4.1.2", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "chalk": "2.3.0", + "cross-spawn": "5.1.0", + "memorystream": "0.3.1", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "read-pkg": "3.0.0", + "shell-quote": "1.6.1", + "string.prototype.padend": "3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "bundled": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "bundled": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "nwmatcher": { + "version": "1.4.3", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-hash": { + "version": "1.2.0", + "bundled": true + }, + "object-keys": { + "version": "1.0.11", + "bundled": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "obuf": { + "version": "1.1.1", + "bundled": true + }, + "on-finished": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "opn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "bundled": true + } + } + }, + "optionator": { + "version": "0.8.2", + "bundled": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "original": { + "version": "1.0.0", + "bundled": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "bundled": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "output-file-sync": { + "version": "1.1.2", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "bundled": true + }, + "package-json": { + "version": "2.4.0", + "bundled": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + } + }, + "pako": { + "version": "1.0.6", + "bundled": true + }, + "param-case": { + "version": "2.1.1", + "bundled": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "bundled": true, + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "bundled": true + }, + "parse5": { + "version": "1.5.1", + "bundled": true + }, + "parseurl": { + "version": "1.3.2", + "bundled": true + }, + "path-browserify": { + "version": "0.0.0", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "1.7.0", + "bundled": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "bundled": true + } + } + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pause-stream": { + "version": "0.0.11", + "bundled": true, + "requires": { + "through": "2.3.8" + } + }, + "pbkdf2": { + "version": "3.0.14", + "bundled": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "bundled": true + }, + "portfinder": { + "version": "1.0.13", + "bundled": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "bundled": true + } + } + }, + "postcss": { + "version": "6.0.14", + "bundled": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "bundled": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-flexbugs-fixes": { + "version": "3.2.0", + "bundled": true, + "requires": { + "postcss": "6.0.14" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "bundled": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.8", + "bundled": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.14", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "bundled": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "bundled": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "bundled": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "bundled": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "bundled": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "bundled": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "bundled": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "bundled": true, + "requires": { + "postcss": "6.0.14" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "bundled": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.14" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "bundled": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.14" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "bundled": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.14" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "bundled": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "bundled": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "bundled": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "bundled": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "bundled": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "bundled": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "bundled": true + }, + "postcss-zindex": { + "version": "2.2.0", + "bundled": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "postcss": { + "version": "5.2.18", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "pretty-bytes": { + "version": "4.0.2", + "bundled": true + }, + "pretty-error": { + "version": "2.1.1", + "bundled": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "pretty-format": { + "version": "20.0.3", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.0" + } + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process": { + "version": "0.11.10", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "progress": { + "version": "2.0.0", + "bundled": true + }, + "promise": { + "version": "7.3.1", + "bundled": true, + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.6.0", + "bundled": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.2", + "bundled": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "ps-tree": { + "version": "1.1.0", + "bundled": true, + "requires": { + "event-stream": "3.3.4" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "public-encrypt": { + "version": "4.0.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "q": { + "version": "1.5.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "query-string": { + "version": "4.3.4", + "bundled": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "bundled": true + }, + "querystring-es3": { + "version": "0.2.1", + "bundled": true + }, + "querystringify": { + "version": "0.0.4", + "bundled": true + }, + "raf": { + "version": "3.4.0", + "bundled": true, + "requires": { + "performance-now": "2.1.0" + } + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "bundled": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "bundled": true + }, + "raw-body": { + "version": "2.3.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.2", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "react": { + "version": "16.2.0", + "bundled": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "prop-types": { + "version": "15.6.0", + "bundled": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + } + } + }, + "react-dev-utils": { + "version": "4.2.1", + "bundled": true, + "requires": { + "address": "1.0.3", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.3", + "escape-string-regexp": "1.0.5", + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.1.0", + "react-error-overlay": "3.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "0.2.0" + } + }, + "react-dom": { + "version": "16.2.0", + "bundled": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "prop-types": { + "version": "15.6.0", + "bundled": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + } + } + }, + "react-error-overlay": { + "version": "3.0.0", + "bundled": true + }, + "react-hammerjs": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hammerjs": "2.0.8" + } + }, + "react-scripts": { + "version": "1.0.17", + "bundled": true, + "requires": { + "autoprefixer": "7.1.6", + "babel-core": "6.26.0", + "babel-eslint": "7.2.3", + "babel-jest": "20.0.3", + "babel-loader": "7.1.2", + "babel-preset-react-app": "3.1.0", + "babel-runtime": "6.26.0", + "case-sensitive-paths-webpack-plugin": "2.1.1", + "chalk": "1.1.3", + "css-loader": "0.28.7", + "dotenv": "4.0.0", + "eslint": "4.10.0", + "eslint-config-react-app": "2.0.1", + "eslint-loader": "1.9.0", + "eslint-plugin-flowtype": "2.39.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-jsx-a11y": "5.1.1", + "eslint-plugin-react": "7.4.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.5", + "fs-extra": "3.0.1", + "html-webpack-plugin": "2.29.0", + "jest": "20.0.4", + "object-assign": "4.1.1", + "postcss-flexbugs-fixes": "3.2.0", + "postcss-loader": "2.0.8", + "promise": "8.0.1", + "raf": "3.4.0", + "react-dev-utils": "4.2.1", + "style-loader": "0.19.0", + "sw-precache-webpack-plugin": "0.11.4", + "url-loader": "0.6.2", + "webpack": "3.8.1", + "webpack-dev-server": "2.9.4", + "webpack-manifest-plugin": "1.3.2", + "whatwg-fetch": "2.0.3" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + } + }, + "promise": { + "version": "8.0.1", + "bundled": true, + "requires": { + "asap": "2.0.6" + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "bundled": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "yargs": { + "version": "3.10.0", + "bundled": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "webpack": { + "version": "3.8.1", + "bundled": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "bundled": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "wordwrap": { + "version": "0.0.2", + "bundled": true + }, + "yargs": { + "version": "8.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "recursive-readdir": { + "version": "2.2.1", + "bundled": true, + "requires": { + "minimatch": "3.0.3" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "redent": { + "version": "1.0.0", + "bundled": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "bundled": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true + } + } + }, + "regenerate": { + "version": "1.3.3", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regenerator-transform": { + "version": "0.10.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "bundled": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "1.2.2" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "bundled": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "bundled": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "renderkid": { + "version": "2.0.1", + "bundled": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "bundled": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-from-string": { + "version": "1.2.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "require-uncached": { + "version": "1.0.3", + "bundled": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requires-port": { + "version": "1.0.0", + "bundled": true + }, + "resolve": { + "version": "1.5.0", + "bundled": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "bundled": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "bundled": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "bundled": true + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "bundled": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "bundled": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "bundled": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "sane": { + "version": "1.6.0", + "bundled": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "1.9.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.10.0" + }, + "dependencies": { + "bser": { + "version": "1.0.2", + "bundled": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "bundled": true, + "requires": { + "bser": "1.0.2" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "sass-graph": { + "version": "2.2.4", + "bundled": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "schema-utils": { + "version": "0.3.0", + "bundled": true, + "requires": { + "ajv": "5.5.2" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "bundled": true, + "requires": { + "js-base64": "2.4.0", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "bundled": true + }, + "selfsigned": { + "version": "1.10.1", + "bundled": true, + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "5.4.1" + } + }, + "send": { + "version": "0.16.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "bundled": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "bundled": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.1", + "bundled": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "serviceworker-cache-polyfill": { + "version": "4.0.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "setprototypeof": { + "version": "1.1.0", + "bundled": true + }, + "sha.js": { + "version": "2.4.9", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "shell-quote": { + "version": "1.6.1", + "bundled": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "shellwords": { + "version": "0.1.1", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slice-ansi": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "sntp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + }, + "sockjs": { + "version": "0.3.18", + "bundled": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + }, + "dependencies": { + "faye-websocket": { + "version": "0.10.0", + "bundled": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "uuid": { + "version": "2.0.3", + "bundled": true + } + } + }, + "sockjs-client": { + "version": "1.1.4", + "bundled": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "bundled": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + }, + "spdy": { + "version": "3.4.7", + "bundled": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "bundled": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } + }, + "split": { + "version": "0.3.3", + "bundled": true, + "requires": { + "through": "2.3.8" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.3.1", + "bundled": true + }, + "stdout-stream": { + "version": "1.4.0", + "bundled": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "stream-browserify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-combiner": { + "version": "0.0.4", + "bundled": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "stream-http": { + "version": "2.7.2", + "bundled": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string-length": { + "version": "1.0.1", + "bundled": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "bundled": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "1.0.1", + "bundled": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "style-loader": { + "version": "0.19.0", + "bundled": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "supports-color": { + "version": "4.5.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "bundled": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "sw-precache": { + "version": "5.2.0", + "bundled": true, + "requires": { + "dom-urls": "1.1.0", + "es6-promise": "4.1.1", + "glob": "7.1.2", + "lodash.defaults": "4.2.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "sw-toolbox": "3.6.0", + "update-notifier": "1.0.3" + } + }, + "sw-precache-webpack-plugin": { + "version": "0.11.4", + "bundled": true, + "requires": { + "del": "2.2.2", + "sw-precache": "5.2.0", + "uglify-js": "3.2.2" + } + }, + "sw-toolbox": { + "version": "3.6.0", + "bundled": true, + "requires": { + "path-to-regexp": "1.7.0", + "serviceworker-cache-polyfill": "4.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "bundled": true + }, + "table": { + "version": "4.0.2", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "tapable": { + "version": "0.2.8", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "throat": { + "version": "3.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "thunky": { + "version": "0.1.0", + "bundled": true + }, + "time-stamp": { + "version": "2.0.0", + "bundled": true + }, + "timed-out": { + "version": "3.1.3", + "bundled": true + }, + "timers-browserify": { + "version": "2.0.4", + "bundled": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.33", + "bundled": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "bundled": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "toposort": { + "version": "1.0.6", + "bundled": true + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "bundled": true + }, + "trim-newlines": { + "version": "1.0.0", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "true-case-path": { + "version": "1.0.2", + "bundled": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "tty-browserify": { + "version": "0.0.0", + "bundled": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "bundled": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "ua-parser-js": { + "version": "0.7.17", + "bundled": true + }, + "uglify-js": { + "version": "3.2.2", + "bundled": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "uniq": { + "version": "1.0.1", + "bundled": true + }, + "uniqid": { + "version": "4.1.1", + "bundled": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "bundled": true + }, + "universalify": { + "version": "0.1.1", + "bundled": true + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unzip-response": { + "version": "1.0.2", + "bundled": true + }, + "update-notifier": { + "version": "1.0.3", + "bundled": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + } + }, + "upper-case": { + "version": "1.1.3", + "bundled": true + }, + "urijs": { + "version": "1.19.0", + "bundled": true + }, + "url": { + "version": "0.11.0", + "bundled": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "bundled": true + } + } + }, + "url-loader": { + "version": "0.6.2", + "bundled": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + } + }, + "url-parse": { + "version": "1.2.0", + "bundled": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "bundled": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "user-home": { + "version": "1.1.1", + "bundled": true + }, + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "bundled": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "utila": { + "version": "0.4.0", + "bundled": true + }, + "utils-merge": { + "version": "1.0.1", + "bundled": true + }, + "uuid": { + "version": "3.1.0", + "bundled": true + }, + "v8flags": { + "version": "2.1.1", + "bundled": true, + "requires": { + "user-home": "1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.1.2", + "bundled": true + }, + "vendors": { + "version": "1.0.1", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "bundled": true, + "requires": { + "indexof": "0.0.1" + } + }, + "walker": { + "version": "1.0.7", + "bundled": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.10.0", + "bundled": true + }, + "watchpack": { + "version": "1.4.0", + "bundled": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "wbuf": { + "version": "1.7.2", + "bundled": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "defaults": "1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "bundled": true + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "bundled": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.9.4", + "bundled": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "bundled": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "6.1.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "yargs": { + "version": "6.6.0", + "bundled": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "bundled": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-manifest-plugin": { + "version": "1.3.2", + "bundled": true, + "requires": { + "fs-extra": "0.30.0", + "lodash": "4.17.4" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + } + }, + "jsonfile": { + "version": "2.4.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "bundled": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "bundled": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "bundled": true + }, + "whatwg-url": { + "version": "4.8.0", + "bundled": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "bundled": true + } + } + }, + "whet.extend": { + "version": "0.9.9", + "bundled": true + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "bundled": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "widest-line": { + "version": "1.0.0", + "bundled": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "bundled": true + }, + "wordwrap": { + "version": "1.0.0", + "bundled": true + }, + "worker-farm": { + "version": "1.5.2", + "bundled": true, + "requires": { + "errno": "0.1.6", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write": { + "version": "0.2.1", + "bundled": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xml-char-classes": { + "version": "1.0.0", + "bundled": true + }, + "xml-name-validator": { + "version": "2.0.1", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "7.1.0", + "bundled": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "bundled": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true + } + } + } + } + }, "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", "dev": true, "requires": { "graceful-fs": "4.1.11" @@ -4282,12 +15323,6 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -4298,14 +15333,6 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "jsx-ast-utils": { @@ -4314,13 +15341,19 @@ "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", "dev": true }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, "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-buffer": "1.1.6" } }, "klaw": { @@ -4332,12 +15365,27 @@ "graceful-fs": "4.1.11" } }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true, + "requires": { + "package-json": "2.4.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -4347,6 +15395,12 @@ "invert-kv": "1.0.0" } }, + "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", @@ -4370,96 +15424,94 @@ "strip-bom": "2.0.0" } }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" }, "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } } } }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "lodash._arraycopy": { + "lodash._reinterpolate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", - "dev": true - }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", - "dev": true, - "requires": { - "lodash._arraycopy": "3.0.0", - "lodash._arrayeach": "3.0.0", - "lodash._baseassign": "3.2.0", - "lodash._basefor": "3.0.3", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "lodash.camelcase": { @@ -4468,62 +15520,42 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, - "lodash.clonedeep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", - "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", - "dev": true, - "requires": { - "lodash._baseclone": "3.3.0", - "lodash._bindcallback": "3.0.1" - } - }, "lodash.cond": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", "dev": true }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "lodash.toarray": { + "lodash.template": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0" + } }, "lodash.uniq": { "version": "4.5.0", @@ -4531,6 +15563,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -4545,12 +15583,28 @@ "js-tokens": "3.0.2" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -4567,6 +15621,23 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", "dev": true }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -4576,47 +15647,91 @@ "tmpl": "1.0.4" } }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "marked-terminal": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.7.0.tgz", - "integrity": "sha1-yMRgiBx3LHYEtkNnAH7l938SWQQ=", - "dev": true, - "requires": { - "cardinal": "1.0.0", - "chalk": "1.1.3", - "cli-table": "0.3.1", - "lodash.assign": "4.2.0", - "node-emoji": "1.8.1" - } - }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "errno": "0.1.4", + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.6", "readable-stream": "2.3.3" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "merge": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", @@ -4656,10 +15771,20 @@ "regex-cache": "0.4.4" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, "mime": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -4677,6 +15802,24 @@ "mime-db": "1.30.0" } }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4707,24 +15850,35 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "multicast-dns": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", + "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "dns-packet": "1.2.2", + "thunky": "0.1.0" } }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4747,32 +15901,29 @@ "dev": true }, "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { "lower-case": "1.1.4" } }, - "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", - "dev": true, - "requires": { - "lodash.toarray": "4.4.0" - } - }, "node-fetch": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.2.tgz", - "integrity": "sha512-xZZUq2yDhKMIn/UgG5q//IZSNLJIwW2QxS14CNH5spuiXkITM2pUitjdq58yLSaU7m4M0wBNaM2Gh/ggY4YJig==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" } }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -4780,21 +15931,21 @@ "dev": true }, "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.3.0", + "crypto-browserify": "3.12.0", "domain-browser": "1.1.7", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", @@ -4802,53 +15953,31 @@ "readable-stream": "2.3.3", "stream-browserify": "2.0.1", "stream-http": "2.7.2", - "string_decoder": "0.10.31", + "string_decoder": "1.0.3", "timers-browserify": "2.0.4", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } } }, "node-notifier": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", - "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", "dev": true, "requires": { - "cli-usage": "0.1.4", "growly": "1.3.0", - "lodash.clonedeep": "3.0.2", - "minimist": "1.2.0", "semver": "5.4.1", "shellwords": "0.1.1", "which": "1.3.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true }, "normalize-package-data": { "version": "2.4.0", @@ -4889,6 +16018,15 @@ "sort-keys": "1.1.2" } }, + "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.1" + } + }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -4911,9 +16049,9 @@ "dev": true }, "nwmatcher": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", - "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", "dev": true }, "oauth-sign": { @@ -4927,6 +16065,18 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -4937,6 +16087,12 @@ "is-extendable": "0.1.1" } }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -4962,25 +16118,21 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "mimic-fn": "1.1.0" + } + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" } }, "optimist": { @@ -5037,9 +16189,9 @@ } }, "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-homedir": { @@ -5063,10 +16215,59 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "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-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + } + }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, "param-case": { @@ -5075,7 +16276,20 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "2.3.1" + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" } }, "parse-glob": { @@ -5099,6 +16313,12 @@ "error-ex": "1.3.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", @@ -5106,9 +16326,9 @@ "dev": true }, "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, "path-browserify": { @@ -5118,13 +16338,10 @@ "dev": true }, "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.1" - } + "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", @@ -5138,6 +16355,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "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.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -5145,10 +16368,21 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } }, "path-type": { "version": "1.1.0", @@ -5161,16 +16395,23 @@ "pinkie-promise": "2.0.1" } }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", - "dev": true + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "pify": { @@ -5195,39 +16436,61 @@ } }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "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": "1.1.2" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "1.1.2" + "find-up": "2.1.0" } }, "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } } }, "postcss-calc": { @@ -5236,9 +16499,44 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-message-helpers": "2.0.0", "reduce-css-calc": "1.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-colormin": { @@ -5248,8 +16546,43 @@ "dev": true, "requires": { "colormin": "1.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-convert-values": { @@ -5258,8 +16591,43 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-discard-comments": { @@ -5268,7 +16636,42 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-discard-duplicates": { @@ -5277,7 +16680,42 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-discard-empty": { @@ -5286,7 +16724,42 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-discard-overridden": { @@ -5295,7 +16768,42 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-discard-unused": { @@ -5304,8 +16812,43 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-filter-plugins": { @@ -5314,8 +16857,52 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqid": "4.1.1" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } + } + }, + "postcss-flexbugs-fixes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz", + "integrity": "sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==", + "dev": true, + "requires": { + "postcss": "6.0.14" } }, "postcss-load-config": { @@ -5351,15 +16938,15 @@ } }, "postcss-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.0.0.tgz", - "integrity": "sha1-47ZdDIWWwWWPedfbLSkTEHSNXSo=", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.8.tgz", + "integrity": "sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==", "dev": true, "requires": { - "loader-utils": "0.2.17", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-load-config": "1.2.0" + "loader-utils": "1.1.0", + "postcss": "6.0.14", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" } }, "postcss-merge-idents": { @@ -5369,8 +16956,43 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-merge-longhand": { @@ -5379,7 +17001,42 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-merge-rules": { @@ -5390,7 +17047,7 @@ "requires": { "browserslist": "1.7.7", "caniuse-api": "1.6.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3", "vendors": "1.0.1" }, @@ -5401,8 +17058,41 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000721", - "electron-to-chromium": "1.3.20" + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.29" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" } } } @@ -5420,8 +17110,43 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-minify-gradients": { @@ -5430,8 +17155,43 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-minify-params": { @@ -5441,9 +17201,44 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-minify-selectors": { @@ -5454,8 +17249,43 @@ "requires": { "alphanum-sort": "1.0.2", "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-modules-extract-imports": { @@ -5464,55 +17294,7 @@ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, "requires": { - "postcss": "6.0.10" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.10.tgz", - "integrity": "sha512-7WOpqea/cQHH1XUXdN1mqoFFmhigW3KAXJ+ssMOk/f6mKmwqFgqqdwsnjLGH+wuY+kwaJvT4whHcfKt5kWga0A==", - "dev": true, - "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-local-by-default": { @@ -5522,55 +17304,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.10" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.10.tgz", - "integrity": "sha512-7WOpqea/cQHH1XUXdN1mqoFFmhigW3KAXJ+ssMOk/f6mKmwqFgqqdwsnjLGH+wuY+kwaJvT4whHcfKt5kWga0A==", - "dev": true, - "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-scope": { @@ -5580,55 +17314,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.10" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.10.tgz", - "integrity": "sha512-7WOpqea/cQHH1XUXdN1mqoFFmhigW3KAXJ+ssMOk/f6mKmwqFgqqdwsnjLGH+wuY+kwaJvT4whHcfKt5kWga0A==", - "dev": true, - "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-values": { @@ -5638,55 +17324,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.10" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.10.tgz", - "integrity": "sha512-7WOpqea/cQHH1XUXdN1mqoFFmhigW3KAXJ+ssMOk/f6mKmwqFgqqdwsnjLGH+wuY+kwaJvT4whHcfKt5kWga0A==", - "dev": true, - "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-normalize-charset": { @@ -5695,7 +17333,42 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-normalize-url": { @@ -5706,8 +17379,43 @@ "requires": { "is-absolute-url": "2.1.0", "normalize-url": "1.9.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-ordered-values": { @@ -5716,8 +17424,43 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-reduce-idents": { @@ -5726,8 +17469,43 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-reduce-initial": { @@ -5736,7 +17514,42 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-reduce-transforms": { @@ -5746,8 +17559,43 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-selector-parser": { @@ -5768,9 +17616,44 @@ "dev": true, "requires": { "is-svg": "2.1.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "svgo": "0.7.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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-unique-selectors": { @@ -5780,8 +17663,43 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "postcss-value-parser": { @@ -5797,8 +17715,43 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + } } }, "prelude-ls": { @@ -5819,6 +17772,12 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, "pretty-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", @@ -5830,15 +17789,19 @@ } }, "pretty-format": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-4.2.3.tgz", - "integrity": "sha1-iJTCrIFBnPgBYp2PZjIKJTgNiwU=", - "dev": true + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.0" + } }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "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": { @@ -5854,9 +17817,9 @@ "dev": true }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, "promise": { @@ -5867,20 +17830,30 @@ "asap": "2.0.6" } }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, "proxy-addr": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", - "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", "dev": true, "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.4.0" + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" } }, "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { @@ -5889,6 +17862,19 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -5896,15 +17882,15 @@ "dev": true }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, "query-string": { @@ -5935,6 +17921,15 @@ "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", "dev": true }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "dev": true, + "requires": { + "performance-now": "2.1.0" + } + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -5960,7 +17955,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -5971,125 +17966,188 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true }, - "react": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.4.1.tgz", - "integrity": "sha1-SY6RhgJnejmDzQ/SBt/nADiaDdY=", + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, "requires": { - "fbjs": "0.8.14", + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", + "requires": { + "fbjs": "0.8.16", "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-dev-utils": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-0.4.2.tgz", - "integrity": "sha1-um+uWB/pRaL8QC6bJ8cf2k9i9qE=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.1.tgz", + "integrity": "sha1-nydj57r6GhucUiVNKked7sKA8RE=", "dev": true, "requires": { - "ansi-html": "0.0.5", + "address": "1.0.3", + "babel-code-frame": "6.26.0", "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.3", "escape-string-regexp": "1.0.5", - "html-entities": "1.2.0", - "opn": "4.0.2", - "sockjs-client": "1.0.3", - "strip-ansi": "3.0.1" + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.1.0", + "react-error-overlay": "3.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "0.2.0" } }, "react-dom": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.4.1.tgz", - "integrity": "sha1-1UyRMmGq7bF63CBBDQKdzBihNEo=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, + "react-error-overlay": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", + "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==", + "dev": true + }, "react-scripts": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-0.8.4.tgz", - "integrity": "sha1-bEGg/7dphTWf7Dz2Qa5+eI2QWIM=", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-1.0.17.tgz", + "integrity": "sha512-tf2kBx230iUSxqJZxboYINlIOKryW+CC7oVgQ4rguNLmcPgWvnnCM8huAgCgL2yuqDd0qQvnI5sRCmc+0TQ5zw==", "dev": true, "requires": { - "autoprefixer": "6.5.1", - "babel-core": "6.17.0", - "babel-eslint": "7.1.1", - "babel-jest": "17.0.2", - "babel-loader": "6.2.7", - "babel-preset-react-app": "2.2.0", - "case-sensitive-paths-webpack-plugin": "1.1.4", + "autoprefixer": "7.1.6", + "babel-core": "6.26.0", + "babel-eslint": "7.2.3", + "babel-jest": "20.0.3", + "babel-loader": "7.1.2", + "babel-preset-react-app": "3.1.0", + "babel-runtime": "6.26.0", + "case-sensitive-paths-webpack-plugin": "2.1.1", "chalk": "1.1.3", - "connect-history-api-fallback": "1.3.0", - "cross-spawn": "4.0.2", - "css-loader": "0.26.0", - "detect-port": "1.0.1", - "dotenv": "2.0.0", - "eslint": "3.8.1", - "eslint-config-react-app": "0.5.2", - "eslint-loader": "1.6.0", - "eslint-plugin-flowtype": "2.21.0", - "eslint-plugin-import": "2.0.1", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.4.1", - "extract-text-webpack-plugin": "1.0.1", - "file-loader": "0.9.0", - "filesize": "3.3.0", - "fs-extra": "0.30.0", - "gzip-size": "3.0.0", - "html-webpack-plugin": "2.24.0", - "http-proxy-middleware": "0.17.2", - "jest": "17.0.2", - "json-loader": "0.5.4", - "object-assign": "4.1.0", - "path-exists": "2.1.0", - "postcss-loader": "1.0.0", - "promise": "7.1.1", - "react-dev-utils": "0.4.2", - "recursive-readdir": "2.1.0", - "strip-ansi": "3.0.1", - "style-loader": "0.13.1", - "url-loader": "0.5.7", - "webpack": "1.14.0", - "webpack-dev-server": "1.16.2", - "webpack-manifest-plugin": "1.1.0", - "whatwg-fetch": "1.0.0" + "css-loader": "0.28.7", + "dotenv": "4.0.0", + "eslint": "4.10.0", + "eslint-config-react-app": "2.0.1", + "eslint-loader": "1.9.0", + "eslint-plugin-flowtype": "2.39.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-jsx-a11y": "5.1.1", + "eslint-plugin-react": "7.4.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.5", + "fs-extra": "3.0.1", + "fsevents": "1.1.2", + "html-webpack-plugin": "2.29.0", + "jest": "20.0.4", + "object-assign": "4.1.1", + "postcss-flexbugs-fixes": "3.2.0", + "postcss-loader": "2.0.8", + "promise": "8.0.1", + "raf": "3.4.0", + "react-dev-utils": "4.2.1", + "style-loader": "0.19.0", + "sw-precache-webpack-plugin": "0.11.4", + "url-loader": "0.6.2", + "webpack": "3.8.1", + "webpack-dev-server": "2.9.4", + "webpack-manifest-plugin": "1.3.2", + "whatwg-fetch": "2.0.3" }, "dependencies": { - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - }, "promise": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", - "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", + "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", "dev": true, "requires": { "asap": "2.0.6" } - }, - "whatwg-fetch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.0.0.tgz", - "integrity": "sha1-AcKsTfQOI2qqGEgOO+dL1cjreY4=", - "dev": true } } }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -6109,6 +18167,27 @@ "requires": { "find-up": "1.1.2", "read-pkg": "1.1.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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + } } }, "readable-stream": { @@ -6138,30 +18217,19 @@ "set-immediate-shim": "1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, "recursive-readdir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.1.0.tgz", - "integrity": "sha1-eLe/15WC09dZa4/xvSn71QIp9qo=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", "dev": true, "requires": { - "minimatch": "3.0.2" + "minimatch": "3.0.3" }, "dependencies": { "minimatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -6169,21 +18237,14 @@ } } }, - "redeyed": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", - "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "esprima": "3.0.0" - }, - "dependencies": { - "esprima": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", - "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=", - "dev": true - } + "indent-string": "2.1.0", + "strip-indent": "1.0.1" } }, "reduce-css-calc": { @@ -6223,26 +18284,26 @@ } }, "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regenerator-transform": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz", - "integrity": "sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "private": "0.1.7" + "private": "0.1.8" } }, "regex-cache": { @@ -6260,11 +18321,30 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -6343,31 +18423,31 @@ } }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "dev": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.2", + "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", "uuid": "3.1.0" } @@ -6407,14 +18487,41 @@ "dev": true }, "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, + "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" + }, + "dependencies": { + "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-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -6422,13 +18529,13 @@ "dev": true }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "right-align": { @@ -6441,35 +18548,48 @@ } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "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.1.2" } }, "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", - "dev": true - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { - "once": "1.4.0" + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" } }, "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -6477,12 +18597,13 @@ "dev": true }, "sane": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sane/-/sane-1.4.1.tgz", - "integrity": "sha1-iPdj10BA9fDCVrYWPbOZvxEKxxU=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", "dev": true, "requires": { - "exec-sh": "0.2.0", + "anymatch": "1.3.2", + "exec-sh": "0.2.1", "fb-watchman": "1.9.2", "minimatch": "3.0.4", "minimist": "1.2.0", @@ -6490,6 +18611,24 @@ "watch": "0.10.0" }, "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true, + "requires": { + "bser": "1.0.2" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -6504,27 +18643,60 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, - "send": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz", - "integrity": "sha1-mF+qPihLAnPHkzZKNcZze9k5Bbk=", + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "debug": "2.6.8", + "semver": "5.4.1" + } + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", "depd": "1.1.1", "destroy": "1.0.4", "encodeurl": "1.0.1", "escape-html": "1.0.3", - "etag": "1.8.0", - "fresh": "0.5.0", + "etag": "1.8.1", + "fresh": "0.5.2", "http-errors": "1.6.2", - "mime": "1.3.4", + "mime": "1.4.1", "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", @@ -6532,40 +18704,46 @@ }, "dependencies": { "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true } } }, "serve-index": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", - "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { "accepts": "1.3.4", "batch": "0.6.1", - "debug": "2.6.8", + "debug": "2.6.9", "escape-html": "1.0.3", "http-errors": "1.6.2", "mime-types": "2.1.17", - "parseurl": "1.3.1" + "parseurl": "1.3.2" } }, "serve-static": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.4.tgz", - "integrity": "sha1-m2qpjutyU8Tu3Ewfb9vKYJkBqWE=", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { "encodeurl": "1.0.1", "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.15.4" + "parseurl": "1.3.2", + "send": "0.16.1" } }, + "serviceworker-cache-polyfill": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", + "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -6584,16 +18762,29 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", - "dev": true + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -6601,11 +18792,17 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", - "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", - "dev": true + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } }, "shellwords": { "version": "0.1.1", @@ -6613,6 +18810,12 @@ "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 + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -6620,18 +18823,27 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "sockjs": { @@ -6650,7 +18862,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": "0.6.5" + "websocket-driver": "0.7.0" } }, "uuid": { @@ -6662,17 +18874,17 @@ } }, "sockjs-client": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.0.3.tgz", - "integrity": "sha1-sNgoCZhGDrJWTF151+PXz9ijU60=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "eventsource": "0.1.6", - "faye-websocket": "0.7.3", + "faye-websocket": "0.11.1", "inherits": "2.0.3", "json3": "3.3.2", - "url-parse": "1.1.9" + "url-parse": "1.2.0" } }, "sort-keys": { @@ -6685,24 +18897,32 @@ } }, "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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.4.17", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.17.tgz", - "integrity": "sha512-30c1Ch8FSjV0FwC253iftbbj0dU/OXoSg1LAEGZJUlGgjTNj6cu+DVqJWWIZJY5RXLWV4eFtR+4ouo0VIOYOTg==", + "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.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "spdx-correct": { @@ -6726,6 +18946,35 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -6746,14 +18995,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "statuses": { @@ -6772,12 +19013,6 @@ "readable-stream": "2.3.3" } }, - "stream-cache": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", - "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", - "dev": true - }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", @@ -6797,6 +19032,42 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "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" + }, + "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-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" + } + } + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -6806,17 +19077,6 @@ "safe-buffer": "5.1.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -6841,28 +19101,44 @@ "is-utf8": "0.2.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "style-loader": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.1.tgz", - "integrity": "sha1-RoKA77wEcwI806bNVuM7Wh1/w6k=", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.0.tgz", + "integrity": "sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==", "dev": true, "requires": { - "loader-utils": "0.2.17" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "2.0.0" } }, "svgo": { @@ -6880,6 +19156,45 @@ "whet.extend": "0.9.9" } }, + "sw-precache": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.0.tgz", + "integrity": "sha512-sKctdX+5hUxkqJ/1DM88ubQ+QRvyw7CnxWdk909N2DgvxMqc1gcQFrwL7zpVc87wFmCA/OvRQd0iMC2XdFopYg==", + "dev": true, + "requires": { + "dom-urls": "1.1.0", + "es6-promise": "4.1.1", + "glob": "7.1.2", + "lodash.defaults": "4.2.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "sw-toolbox": "3.6.0", + "update-notifier": "1.0.3" + } + }, + "sw-precache-webpack-plugin": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz", + "integrity": "sha1-ppUBflTu1XVVFJOlGdwdqNotxeA=", + "dev": true, + "requires": { + "del": "2.2.2", + "sw-precache": "5.2.0", + "uglify-js": "3.2.2" + } + }, + "sw-toolbox": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz", + "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=", + "dev": true, + "requires": { + "path-to-regexp": "1.7.0", + "serviceworker-cache-polyfill": "4.0.0" + } + }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", @@ -6887,62 +19202,42 @@ "dev": true }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", "lodash": "4.17.4", - "slice-ansi": "0.0.4", + "slice-ansi": "1.0.0", "string-width": "2.1.1" }, "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 - }, - "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 - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.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" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" } } } }, "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, "test-exclude": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-2.1.3.tgz", - "integrity": "sha1-qNiWjh2oMmb5hk8oUsVeIg8GQ0o=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "1.0.1", @@ -6970,12 +19265,24 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true + }, "time-stamp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", "dev": true }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, "timers-browserify": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", @@ -6985,6 +19292,15 @@ "setimmediate": "1.0.5" } }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -7004,15 +19320,15 @@ "dev": true }, "toposort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", - "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", "dev": true }, "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { "punycode": "1.4.1" @@ -7024,18 +19340,18 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, "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 }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -7084,33 +19400,68 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", - "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=" + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { - "version": "3.0.28", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.28.tgz", - "integrity": "sha512-0h/qGay016GG2lVav3Kz174F3T2Vjlz2v6HCt+WDQpoXfco0hWwF5gHK9yh88mUYvIC+N7Z8NT8WpjSp1yoqGA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.2.tgz", + "integrity": "sha512-++1NO/zZIEdWf6cDIGceSJQPX31SqIpbVAHwFG5+240MtZqPG/NIPoinj8zlXQtAfMBqEt1Jyv2FiLP3n9gVhQ==", "dev": true, "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - } + "commander": "2.12.2", + "source-map": "0.6.1" } }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } }, "uniq": { "version": "1.0.1", @@ -7133,18 +19484,52 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + } + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, + "urijs": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.0.tgz", + "integrity": "sha512-Qs2odXn0hST5VSPVjpi73CMqtbAoanahaqWBujGU+IyMrMqpWcIhDewxQRhCkmqYxuyvICDcSuLdv2O7ncWBGw==", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -7164,19 +19549,20 @@ } }, "url-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.7.tgz", - "integrity": "sha1-Z+h3l1n4AA2nSZSQZoDJQ6mwkl0=", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", "dev": true, "requires": { - "loader-utils": "0.2.17", - "mime": "1.2.11" + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" } }, "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, "requires": { "querystringify": "1.0.0", @@ -7191,13 +19577,13 @@ } } }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "prepend-http": "1.0.4" } }, "util": { @@ -7230,9 +19616,9 @@ "dev": true }, "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, "uuid": { @@ -7252,9 +19638,9 @@ } }, "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, "vendors": { @@ -7272,14 +19658,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "vm-browserify": { @@ -7307,22 +19685,23 @@ "dev": true }, "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "0.9.2", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" } }, "webidl-conversions": { @@ -7332,191 +19711,411 @@ "dev": true }, "webpack": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.14.0.tgz", - "integrity": "sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", + "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", "dev": true, "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" }, "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "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": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" + "number-is-nan": "1.0.1" } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "amdefine": "1.0.1" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "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" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "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 + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" } } } }, "webpack-dev-middleware": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", - "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", "dev": true, "requires": { "memory-fs": "0.4.1", - "mime": "1.4.0", + "mime": "1.6.0", "path-is-absolute": "1.0.1", "range-parser": "1.2.0", "time-stamp": "2.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "mime": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz", - "integrity": "sha512-n9ChLv77+QQEapYz8lV+rIZAW3HhAPW2CXnzb1GN5uMkuczshwvkW7XPsbzU0ZQN3sP47Er2KVkp2p3KyqZKSQ==", - "dev": true - } } }, "webpack-dev-server": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.2.tgz", - "integrity": "sha1-i+vCxM4cRaFcct12nZugjbMGp5M=", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", + "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", "dev": true, "requires": { - "compression": "1.7.0", - "connect-history-api-fallback": "1.3.0", - "express": "4.15.4", - "http-proxy-middleware": "0.17.2", - "open": "0.0.5", - "optimist": "0.6.1", - "serve-index": "1.9.0", + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", "sockjs": "0.3.18", - "sockjs-client": "1.0.3", - "stream-cache": "0.0.2", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", "strip-ansi": "3.0.1", - "supports-color": "3.2.3", - "webpack-dev-middleware": "1.12.0" + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } } }, "webpack-manifest-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.1.0.tgz", - "integrity": "sha1-a2xxiq3oolN5lXhLRr0umDYFfKo=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", + "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", "dev": true, "requires": { "fs-extra": "0.30.0", "lodash": "4.17.4" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + } } }, "webpack-sources": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", - "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.7" + "source-list-map": "2.0.0", + "source-map": "0.6.1" } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "websocket-extensions": "0.1.1" + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", - "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "whatwg-encoding": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", - "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", "dev": true, "requires": { - "iconv-lite": "0.4.13" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - } + "iconv-lite": "0.4.19" } }, "whatwg-fetch": { @@ -7563,6 +20162,37 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "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.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -7576,12 +20206,12 @@ "dev": true }, "worker-farm": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.0.tgz", - "integrity": "sha512-DHRiUggxtbruaTwnLDm2/BRDKZIoOYvrgYUj5Bam4fU6Gtvc0FaEyoswFPBjMXAweGW2H4BDNIpy//1yXXuaqQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "xtend": "4.0.1" } }, @@ -7593,6 +20223,28 @@ "requires": { "string-width": "1.0.2", "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.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "wrappy": { @@ -7610,6 +20262,26 @@ "mkdirp": "0.5.1" } }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, "xml-char-classes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", @@ -7641,9 +20313,9 @@ "dev": true }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", "dev": true, "requires": { "camelcase": "3.0.0", @@ -7658,7 +20330,7 @@ "string-width": "1.0.2", "which-module": "1.0.0", "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "yargs-parser": "5.0.0" }, "dependencies": { "camelcase": { @@ -7677,13 +20349,33 @@ "strip-ansi": "3.0.1", "wrap-ansi": "2.1.0" } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "requires": { "camelcase": "3.0.0" diff --git a/examples/react_demo/package.json b/examples/react_demo/package.json index bb18ccb..9411a36 100755 --- a/examples/react_demo/package.json +++ b/examples/react_demo/package.json @@ -3,11 +3,12 @@ "version": "0.1.0", "private": true, "devDependencies": { - "react-scripts": "0.8.4" + "react-scripts": "1.0.17" }, "dependencies": { - "react": "15.4.1", - "react-dom": "15.4.1" + "jsoneditor": "file:../..", + "react": "16.2.0", + "react-dom": "16.2.0" }, "scripts": { "start": "react-scripts start", diff --git a/examples/react_demo/src/App.js b/examples/react_demo/src/App.js index b500ef1..23df197 100755 --- a/examples/react_demo/src/App.js +++ b/examples/react_demo/src/App.js @@ -7,7 +7,7 @@ import './App.css' // // import JSONEditor from 'jsoneditor/react' // -import JSONEditor from '../../../react' +import JSONEditor from 'jsoneditor/lib/components/JSONEditor' const json = { @@ -21,7 +21,7 @@ const json = { class App extends Component { state = { - text: JSON.stringify(json) + json } render() { @@ -30,7 +30,7 @@ class App extends Component { diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 5516bd8..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,268 +0,0 @@ -const fs = require('fs') -const gulp = require('gulp') -const gulpMultiProcess = require('gulp-multi-process') -const gutil = require('gulp-util') -const shell = require('gulp-shell') -const mkdirp = require('mkdirp') -const babel = require('gulp-babel') -const webpack = require('webpack') -const browserSync = require('browser-sync').create() - -const WATCH = 'watch' -const WATCHING = process.argv[2] === WATCH - -if (WATCHING) { - gutil.log('Watching src/*.') - gutil.log('The bundle ./dist/jsoneditor.js will be updated automatically ') - gutil.log('on changes in the source code this bundle will not be minified.') - gutil.log('Also, ./dist/minimalist code is not updated on changes.') -} - -const NAME = 'jsoneditor.js' -const NAME_MINIMALIST = 'jsoneditor-minimalist.js' -const NAME_REACT = 'jsoneditor-react.js' -const NAME_REACT_MINIMALIST = 'jsoneditor-react-minimalist.js' -const ENTRY = './src/index.js' -const ENTRY_REACT = './src/components/JSONEditor.js' -const HEADER = './src/header.js' -const DIST = './dist' -const LIB = './lib' -const EMPTY = __dirname + '/src/utils/empty.js' - -// generate banner with today's date and correct version -function createBanner() { - const today = gutil.date(new Date(), 'yyyy-mm-dd') // today, formatted as yyyy-mm-dd - const version = require('./package.json').version // math.js version - - return String(fs.readFileSync(HEADER)) - .replace('@@date', today) - .replace('@@version', version) -} - -const bannerPlugin = new webpack.BannerPlugin(createBanner(), { - entryOnly: true, - raw: true -}) - -const minifyPlugin = new webpack.optimize.UglifyJsPlugin() - -const excludeAcePlugin = new webpack.NormalModuleReplacementPlugin(new RegExp('/assets/ace$'), EMPTY) - -const excludeAjvPlugin = new webpack.NormalModuleReplacementPlugin(new RegExp('^ajv$'), EMPTY) - -const productionEnvPlugin = new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: JSON.stringify('production') - } -}) - -const loaders = [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }, - { test: /\.json$/, loader: 'json' }, - { test: /\.less$/, loaders: '!style!css!less!' }, - { test: /\.svg$/, loader: 'svg-url-loader' } -] - -// TODO: see if preact can give the same sort of errors and warnings as react does, if so switch to preact for development too -const resolve = { - 'alias': { - 'react': 'preact-compat', - 'react-dom': 'preact-compat' - } -} - -// create a single instance of the compiler to allow caching -const compiler = webpack({ - entry: ENTRY, - devtool: 'source-map', - debug: true, - cache: true, - bail: true, - output: { - library: 'jsoneditor', - libraryTarget: 'umd', - path: DIST, - filename: NAME - }, - plugins: WATCHING - ? [bannerPlugin] - : [bannerPlugin, productionEnvPlugin, minifyPlugin], - module: { - loaders - }, - resolve: WATCHING ? null : resolve -}) - -// create a single instance of the compiler to allow caching -const compilerMinimalist = webpack({ - entry: ENTRY, - devtool: 'source-map', - debug: true, - cache: true, - output: { - library: 'jsoneditor', - libraryTarget: 'umd', - path: DIST, - filename: NAME_MINIMALIST - }, - plugins: [ - bannerPlugin, - productionEnvPlugin, - excludeAcePlugin, - excludeAjvPlugin, - minifyPlugin - ], - module: { - loaders - }, - resolve: WATCHING ? null : resolve -}) - -const externals = { - 'react': 'commonjs react' -} - -// FIXME: get the react bundles working -// create a single instance of the compiler to allow caching -const compilerReact = webpack({ - entry: ENTRY_REACT, - devtool: 'source-map', - debug: true, - cache: true, - bail: true, - output: { - library: 'JSONEditor', - libraryTarget: 'umd', - path: DIST, - filename: NAME_REACT - }, - plugins: [ - bannerPlugin, - productionEnvPlugin, - minifyPlugin - ], - module: { - loaders - }, - externals -}) - -// FIXME: get the react bundles working -// create a single instance of the compiler to allow caching -const compilerReactMinimalist = webpack({ - entry: ENTRY_REACT, - devtool: 'source-map', - debug: true, - cache: true, - bail: true, - output: { - path: DIST, - filename: NAME_REACT_MINIMALIST - }, - plugins: [ - bannerPlugin, - productionEnvPlugin, - excludeAcePlugin, - excludeAjvPlugin, - minifyPlugin - ], - module: { - loaders - }, - externals -}) - -function handleCompilerCallback (err, stats) { - if (err) { - gutil.log(err.toString()) - } - - if (stats && stats.compilation && stats.compilation.errors) { - // output soft errors - stats.compilation.errors.forEach(function (err) { - gutil.log(err.toString()) - }) - } -} - -function createBundleTask (compiler) { - return function (done) { - // update the banner contents (has a date in it which should stay up to date) - bannerPlugin.banner = createBanner() - - compiler.run(function (err, stats) { - handleCompilerCallback(err, stats) - - done() - }) - } -} - -// make dist folder -gulp.task('mkdir', function () { - mkdirp.sync(DIST) - mkdirp.sync(LIB) -}) - -// bundle javascript -gulp.task('bundle', ['mkdir'], createBundleTask(compiler)) - -// bundle minimalist version of javascript -gulp.task('bundle-minimalist', ['mkdir'], createBundleTask(compilerMinimalist)) - -// compile the source code into es5 code -gulp.task('compile-es5-lib', ['mkdir'], function () { - // TODO: compile *.less too - return gulp - .src([ - 'src/**/*.js', - '!src/flow/**/*.js', - '!src/resources/**/*.js' - ]) - .pipe(babel()) - .pipe(gulp.dest(LIB)); -}) - -// bundle react version -// TODO: remove bundle-react again? (use ./lib instead) -gulp.task('bundle-react', ['mkdir'], createBundleTask(compilerReact)) - -// bundle react minimalist version -// TODO: remove bundle-react-minimalist again? (use ./lib instead) -gulp.task('bundle-react-minimalist', ['mkdir'], createBundleTask(compilerReactMinimalist)) - -// TODO: zip file using archiver -const pkg = 'jsoneditor-' + require('./package.json').version + '.zip' -gulp.task('zip', shell.task([ - 'zip ' + pkg + ' ' + 'README.md LICENSE HISTORY.md index.html src dist docs examples -r ' -])) - -// execute all tasks and reload the browser afterwards -gulp.task('bundle-and-reload', ['bundle'], function (done) { - browserSync.reload(); - - done(); -}); - -// The watch task (to automatically rebuild when the source code changes) -// Does only generate jsoneditor.js and jsoneditor.css, and copy the image -// Does NOT minify the code and does NOT generate the minimalist version -gulp.task(WATCH, ['bundle'], function() { - browserSync.init({ - open: 'local', - server: '.', - startPath: '/src/develop.html', - minify: false - }) - - gulp.watch('src/**/*', ['bundle-and-reload']) -}) - -// The default task (called when you run `gulp`) -gulp.task('default', function(done) { - return gulpMultiProcess([ - 'bundle', - 'bundle-minimalist', - 'compile-es5-lib' - ], done); -}) diff --git a/index.js b/index.js deleted file mode 100644 index af2df48..0000000 --- a/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/jsoneditor') diff --git a/package-lock.json b/package-lock.json index 6d92c06..e0dd1ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,43 +4,108 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { - "mime-types": "2.1.15", + "mime-types": "2.1.17", "negotiator": "0.6.1" } }, "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true }, - "after": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", - "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic=", + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", "dev": true }, "ajv": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz", - "integrity": "sha1-wJdN0As0ZJhIktYBCqnCyUWTMlQ=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -73,6 +138,18 @@ "string-width": "1.0.2" } }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -86,21 +163,40 @@ "dev": true }, "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "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" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -110,6 +206,15 @@ "sprintf-js": "1.0.3" } }, + "aria-query": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.0.tgz", + "integrity": "sha512-/r2lHl09V3o74+2MLKEdewoj37YZqiQZnfen1O4iNlrOjUgeKuu1U2yF3iKh6HJxqF+OXkLMfQv65Z/cvxD6vA==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -119,28 +224,22 @@ "arr-flatten": "1.1.0" } }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-differ": { + "array-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", "dev": true }, "array-find-index": { @@ -149,10 +248,32 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, - "array-slice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", - "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, "array-union": { @@ -176,12 +297,6 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -199,6 +314,17 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", @@ -214,22 +340,31 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", "dev": true }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", "dev": true }, "asynckit": { @@ -238,138 +373,20 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "auto-bind": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-0.1.0.tgz", - "integrity": "sha1-einvyMI4jT1XjgL8LfUxyB/8HuE=", - "dev": true - }, "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", + "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000700", + "browserslist": "2.10.0", + "caniuse-lite": "1.0.30000784", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "5.2.17", + "postcss": "6.0.14", "postcss-value-parser": "3.3.0" } }, - "ava": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.17.0.tgz", - "integrity": "sha1-NZ4qiWFoAe8Dkpw88QqdT45FHQI=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "0.1.0", - "ava-files": "0.2.0", - "ava-init": "0.1.6", - "babel-code-frame": "6.22.0", - "babel-core": "6.23.1", - "babel-plugin-ava-throws-helper": "0.1.0", - "babel-plugin-detective": "2.0.0", - "babel-plugin-espower": "2.3.2", - "babel-plugin-transform-runtime": "6.23.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-es2015-node4": "2.1.1", - "babel-preset-stage-2": "6.18.0", - "babel-runtime": "6.23.0", - "bluebird": "3.5.0", - "caching-transform": "1.0.1", - "chalk": "1.1.3", - "chokidar": "1.7.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "cli-truncate": "0.2.1", - "co-with-promise": "4.6.0", - "common-path-prefix": "1.0.0", - "convert-source-map": "1.5.0", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "2.6.8", - "empower-core": "0.6.2", - "figures": "1.7.0", - "find-cache-dir": "0.1.1", - "fn-name": "2.0.1", - "get-port": "2.1.0", - "has-flag": "2.0.0", - "ignore-by-default": "1.0.1", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.isequal": "4.5.0", - "loud-rejection": "1.6.0", - "matcher": "0.1.2", - "max-timeout": "1.0.0", - "md5-hex": "1.3.0", - "meow": "3.7.0", - "ms": "0.7.3", - "object-assign": "4.1.1", - "observable-to-promise": "0.4.0", - "option-chain": "0.1.1", - "package-hash": "1.2.0", - "pkg-conf": "1.1.3", - "plur": "2.1.2", - "power-assert-context-formatter": "1.1.1", - "power-assert-renderer-assertion": "1.1.1", - "power-assert-renderer-succinct": "1.1.1", - "pretty-ms": "2.1.0", - "repeating": "2.0.1", - "require-precompiled": "0.1.0", - "resolve-cwd": "1.0.0", - "semver": "5.3.0", - "set-immediate-shim": "1.0.1", - "source-map-support": "0.4.15", - "stack-utils": "0.4.0", - "strip-ansi": "3.0.1", - "strip-bom": "2.0.0", - "time-require": "0.1.2", - "unique-temp-dir": "1.0.0", - "update-notifier": "1.0.3" - } - }, - "ava-files": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ava-files/-/ava-files-0.2.0.tgz", - "integrity": "sha1-x7i24uDOpjtXpuJ+DbFFx8Gc/iA=", - "dev": true, - "requires": { - "auto-bind": "0.1.0", - "bluebird": "3.5.0", - "globby": "6.1.0", - "ignore-by-default": "1.0.1", - "lodash.flatten": "4.4.0", - "multimatch": "2.1.0", - "slash": "1.0.0" - } - }, - "ava-init": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.1.6.tgz", - "integrity": "sha1-7xntCyS2vzWdrW+63xoF2DY5XJE=", - "dev": true, - "requires": { - "arr-exclude": "1.0.0", - "cross-spawn": "4.0.2", - "pinkie-promise": "2.0.1", - "read-pkg-up": "1.0.1", - "the-argv": "1.0.0", - "write-pkg": "1.0.0" - } - }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", @@ -382,10 +399,42 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "axobject-query": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-0.1.0.tgz", + "integrity": "sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.12.2", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } + }, "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "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", @@ -394,59 +443,60 @@ } }, "babel-core": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.23.1.tgz", - "integrity": "sha1-wUPLYhuy9iFxDCIMXVedFbikQt8=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.8", + "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.7", + "private": "0.1.8", "slash": "1.0.0", - "source-map": "0.5.6" + "source-map": "0.5.7" + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" } }, "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.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.6", + "source-map": "0.5.7", "trim-right": "1.0.1" } }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", @@ -454,8 +504,19 @@ "dev": true, "requires": { "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" } }, "babel-helper-call-delegate": { @@ -465,20 +526,20 @@ "dev": true, "requires": { "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "lodash": "4.17.4" } }, @@ -488,21 +549,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, - "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-function-name": { @@ -512,10 +561,10 @@ "dev": true, "requires": { "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -524,8 +573,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-hoist-variables": { @@ -534,8 +583,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-optimise-call-expression": { @@ -544,18 +593,18 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "lodash": "4.17.4" } }, @@ -566,10 +615,10 @@ "dev": true, "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-replace-supers": { @@ -580,10 +629,10 @@ "requires": { "babel-helper-optimise-call-expression": "6.24.1", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helpers": { @@ -592,20 +641,30 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "20.0.3" } }, "babel-loader": { - "version": "6.2.10", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.10.tgz", - "integrity": "sha1-re/CskIyDNXRXmWzHOoOixsC1LA=", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", "dev": true, "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" } }, "babel-messages": { @@ -614,17 +673,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-ava-throws-helper": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz", - "integrity": "sha1-lREHcIoSIIAmv4ykzvGKh7ybDP4=", - "dev": true, - "requires": { - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-check-es2015-constants": { @@ -633,62 +682,69 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, - "babel-plugin-detective": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz", - "integrity": "sha1-bmQug8IqM1J5dU6+LXVNJjX0nxM=", - "dev": true - }, - "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "babel-plugin-dynamic-import-node": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", + "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", "dev": true, "requires": { - "babel-generator": "6.25.0", - "babylon": "6.17.4", - "call-matcher": "1.0.1", - "core-js": "2.4.1", - "espower-location-detector": "1.0.0", - "espurify": "1.7.0", - "estraverse": "4.2.0" + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" }, "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true + "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" + } } } }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", + "dev": true + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", "dev": true }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", @@ -707,6 +763,12 @@ "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", "dev": true }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "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", @@ -719,17 +781,6 @@ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", "dev": true }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.23.0" - } - }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", @@ -738,7 +789,7 @@ "requires": { "babel-helper-remap-async-to-generator": "6.24.1", "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-class-properties": { @@ -749,21 +800,8 @@ "requires": { "babel-helper-function-name": "6.24.1", "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, - "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -772,7 +810,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -781,19 +819,19 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", "lodash": "4.17.4" } }, @@ -803,15 +841,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "6.24.1", + "babel-helper-define-map": "6.26.0", "babel-helper-function-name": "6.24.1", "babel-helper-optimise-call-expression": "6.24.1", "babel-helper-replace-supers": "6.24.1", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -820,8 +858,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -830,7 +868,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -839,8 +877,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -849,7 +887,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -859,8 +897,8 @@ "dev": true, "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-literals": { @@ -869,7 +907,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -878,21 +916,21 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -902,8 +940,8 @@ "dev": true, "requires": { "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -913,8 +951,8 @@ "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-object-super": { @@ -924,7 +962,7 @@ "dev": true, "requires": { "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -935,10 +973,10 @@ "requires": { "babel-helper-call-delegate": "6.24.1", "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -947,8 +985,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-spread": { @@ -957,7 +995,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -966,9 +1004,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -977,7 +1015,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -986,7 +1024,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -995,8 +1033,8 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", "regexpu-core": "2.0.0" } }, @@ -1008,36 +1046,85 @@ "requires": { "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-flow-strip-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.21.0.tgz", - "integrity": "sha1-Luo/i1uyNDObRyg/6sFVz7I3uUg=", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-object-rest-spread": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-constant-elements": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", + "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.9.11" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-runtime": { @@ -1046,7 +1133,7 @@ "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-strict-mode": { @@ -1055,20 +1142,47 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", "babel-plugin-transform-es2015-classes": "6.24.1", "babel-plugin-transform-es2015-computed-properties": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", @@ -1077,7 +1191,7 @@ "babel-plugin-transform-es2015-function-name": "6.24.1", "babel-plugin-transform-es2015-literals": "6.22.0", "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", "babel-plugin-transform-es2015-modules-umd": "6.24.1", "babel-plugin-transform-es2015-object-super": "6.24.1", @@ -1088,170 +1202,152 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.10.0", + "invariant": "2.2.2", + "semver": "5.4.1" } }, - "babel-preset-es2015-node4": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.1.tgz", - "integrity": "sha1-4x8pCFm1hhnIz6JB0bC8kA+UHNs=", + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, "requires": { - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1" + "babel-plugin-transform-flow-strip-types": "6.22.0" } }, - "babel-preset-stage-2": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz", - "integrity": "sha1-nre/mo6RxoJg1bp1AEk8qq2ktbU=", + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", "dev": true, "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" + } + }, + "babel-preset-react-app": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.0.tgz", + "integrity": "sha512-jEAeVozxLzftLl0iDZ0d5jrmfbo3yogON/eI4AsEDIs8p6WW+t9mDRUsj5l12bqPOLSiVOElCQ3QyGjMcyBiwA==", + "dev": true, + "requires": { + "babel-plugin-dynamic-import-node": "1.1.0", "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.17.0" - } - }, - "babel-preset-stage-3": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz", - "integrity": "sha1-tmOORttukeP4iQE9jOFDkXxoXjk=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.23.0" + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-constant-elements": "6.23.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-react": "6.24.1" } }, "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "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.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", "lodash": "4.17.4", "mkdirp": "0.5.1", - "source-map-support": "0.4.15" + "source-map-support": "0.4.18" }, "dependencies": { - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.8", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true } } }, "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "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.1", - "regenerator-runtime": "0.10.5" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" }, "dependencies": { "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true } } }, "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "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.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "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.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "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.22.0", + "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.8", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" } }, "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "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.23.0", + "babel-runtime": "6.26.0", "esutils": "2.0.2", "lodash": "4.17.4", "to-fast-properties": "1.0.3" } }, "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "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": { @@ -1260,28 +1356,16 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, - "base64id": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", - "dev": true - }, "batch": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", - "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, "bcrypt-pbkdf": { @@ -1294,43 +1378,83 @@ "tweetnacl": "0.14.5" } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, "boom": { @@ -1360,12 +1484,9 @@ } }, "brace": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/brace/-/brace-0.9.1.tgz", - "integrity": "sha1-Gdy64vrsmpkgoEUuxk2NhN9F57Y=", - "requires": { - "w3c-blob": "0.0.1" - } + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/brace/-/brace-0.11.0.tgz", + "integrity": "sha1-FVzYBgdofcjLkI8N+U5ioDPB1WM=" }, "brace-expansion": { "version": "1.1.8", @@ -1388,127 +1509,117 @@ "repeat-element": "1.1.2" } }, - "browser-sync": { - "version": "2.18.6", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.18.6.tgz", - "integrity": "sha1-ezA+qJBeqiBinmxdPoIMMq2WuyQ=", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", "dev": true, "requires": { - "browser-sync-client": "2.4.4", - "browser-sync-ui": "0.6.2", - "bs-recipes": "1.3.4", - "chokidar": "1.6.1", - "connect": "3.5.0", - "dev-ip": "1.0.1", - "easy-extender": "2.3.2", - "eazy-logger": "3.0.2", - "emitter-steward": "1.0.0", - "fs-extra": "1.0.0", - "http-proxy": "1.15.2", - "immutable": "3.8.1", - "localtunnel": "1.8.2", - "micromatch": "2.3.11", - "opn": "4.0.2", - "portscanner": "2.1.1", - "qs": "6.2.1", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "serve-index": "1.8.0", - "serve-static": "1.11.1", - "server-destroy": "1.0.1", - "socket.io": "1.6.0", - "socket.io-client": "1.6.0", - "ua-parser-js": "0.7.12", - "yargs": "6.4.0" + "resolve": "1.1.7" }, "dependencies": { - "chokidar": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", - "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "ua-parser-js": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.12.tgz", - "integrity": "sha1-BMgamb3V3FImPqKdJMa/jUgYpLs=", + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true } } }, - "browser-sync-client": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.4.4.tgz", - "integrity": "sha1-4qbCf3cOCtD/7XaWTftqlx/PVes=", - "dev": true, - "requires": { - "etag": "1.8.0", - "fresh": "0.3.0" - } - }, - "browser-sync-ui": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-0.6.2.tgz", - "integrity": "sha1-nnmUAE1GPlWgJL3RSVg7Ea2Ph/M=", - "dev": true, - "requires": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "1.3.0", - "immutable": "3.8.1", - "server-destroy": "1.0.1", - "stream-throttle": "0.1.3", - "weinre": "2.0.0-pre-I0Z7U9OV" - } - }, "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", "inherits": "2.0.3" } }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "pako": "0.2.9" + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" } }, "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", + "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", "dev": true, "requires": { - "caniuse-db": "1.0.30000700", - "electron-to-chromium": "1.3.15" + "caniuse-lite": "1.0.30000784", + "electron-to-chromium": "1.3.30" } }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true + "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": { "version": "4.9.1", @@ -1521,6 +1632,18 @@ "isarray": "1.0.0" } }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1533,49 +1656,37 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "deep-equal": "1.0.1", - "espurify": "1.7.0", - "estraverse": "4.2.0" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", @@ -1599,15 +1710,33 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000700", + "caniuse-db": "1.0.30000784", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.30" + } + } } }, "caniuse-db": { - "version": "1.0.30000700", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000700.tgz", - "integrity": "sha1-l8/Eg4Ze6oV33Ho2dJKbmr9VMJU=", + "version": "1.0.30000784", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000784.tgz", + "integrity": "sha1-G+lQEtlInHcZB0+BruV9vf/mNhs=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz", + "integrity": "sha1-EpztdOmhKApEGIC2zSvOMO9Z5sA=", "dev": true }, "capture-stack-trace": { @@ -1616,12 +1745,28 @@ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", + "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=", + "dev": true + }, "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1635,14 +1780,21 @@ "supports-color": "2.0.0" } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.0", + "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1652,25 +1804,44 @@ } }, "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { "chalk": "1.1.3" } }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } }, "cli-boxes": { "version": "1.0.0", @@ -1679,30 +1850,20 @@ "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "2.0.0" } }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "1.0.2" - } - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -1715,14 +1876,9 @@ } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", "dev": true }, "co": { @@ -1730,39 +1886,13 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "1.0.0" - }, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "1.0.0" - } - } - } - }, "coa": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "1.5.0" + "q": "1.5.1" } }, "code-point-at": { @@ -1777,24 +1907,24 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", + "clone": "1.0.3", + "color-convert": "1.9.1", "color-string": "0.3.0" } }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.2" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", - "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "color-string": { @@ -1803,7 +1933,7 @@ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { - "color-name": "1.1.2" + "color-name": "1.1.3" } }, "colormin": { @@ -1833,15 +1963,9 @@ } }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", "dev": true }, "commondir": { @@ -1850,23 +1974,29 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } }, "concat-map": { "version": "0.0.1", @@ -1874,6 +2004,26 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", + "integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "configstore": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", @@ -1889,41 +2039,20 @@ "uuid": "2.0.3", "write-file-atomic": "1.3.4", "xdg-basedir": "2.0.0" - } - }, - "connect": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.0.tgz", - "integrity": "sha1-s1dSWgtMH1BZnNmD4dnv7qlncZg=", - "dev": true, - "requires": { - "debug": "2.2.0", - "finalhandler": "0.5.0", - "parseurl": "1.3.1", - "utils-merge": "1.0.0" }, "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", "dev": true } } }, "connect-history-api-fallback": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", - "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", "dev": true }, "console-browserify": { @@ -1935,10 +2064,17 @@ "date-now": "0.1.4" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "console.table": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.9.1.tgz", "integrity": "sha1-SwH9CmtW//t5CSeD5WqbuQZ4cow=", + "dev": true, "requires": { "easy-table": "1.1.0" } @@ -1949,10 +2085,34 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "cookie": { @@ -1961,15 +2121,11 @@ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" - } + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true }, "core-js": { "version": "1.2.7", @@ -1982,6 +2138,78 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "cp-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-3.2.0.tgz", + "integrity": "sha1-b4NhYlRiTwrViqSqjQdvAmvn4Yg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, + "cpy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-4.0.1.tgz", + "integrity": "sha1-tnJn66LzlgugalphrJQDNCKDNCQ=", + "dev": true, + "requires": { + "cp-file": "3.2.0", + "globby": "4.1.0", + "meow": "3.7.0", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "cpy-cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-1.0.1.tgz", + "integrity": "sha1-Z/taSi3sKMqKv/N13kuecfanVhw=", + "dev": true, + "requires": { + "cpy": "4.0.1", + "meow": "3.7.0" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", @@ -1991,14 +2219,40 @@ "capture-stack-trace": "1.0.0" } }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, "requires": { "lru-cache": "4.1.1", - "which": "1.2.14" + "which": "1.3.0" } }, "cryptiles": { @@ -2011,15 +2265,22 @@ } }, "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" } }, "css-color-names": { @@ -2029,23 +2290,66 @@ "dev": true }, "css-loader": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.26.1.tgz", - "integrity": "sha1-K6fyATG5NZdJaz6btQB4WknNKeo=", + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", "dev": true, "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "css-selector-tokenizer": "0.7.0", "cssnano": "3.10.0", - "loader-utils": "0.2.17", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-modules-extract-imports": "1.1.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", - "source-list-map": "0.1.8" + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" } }, "css-selector-tokenizer": { @@ -2065,13 +2369,19 @@ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } } } }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, "cssesc": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", @@ -2089,7 +2399,7 @@ "defined": "1.0.0", "has": "1.0.1", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-calc": "5.3.1", "postcss-colormin": "2.2.2", "postcss-convert-values": "2.6.1", @@ -2116,6 +2426,59 @@ "postcss-unique-selectors": "2.0.2", "postcss-value-parser": "3.3.0", "postcss-zindex": "2.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000784", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.30" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "csso": { @@ -2124,8 +2487,23 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "1.2.0", - "source-map": "0.5.6" + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" } }, "currently-unhandled": { @@ -2146,6 +2524,12 @@ "es5-ext": "0.10.37" } }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2169,33 +2553,13 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "dateformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", - "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", - "dev": true - }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "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" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } } }, "decamelize": { @@ -2216,23 +2580,39 @@ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, - "deep-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/deep-map/-/deep-map-1.5.0.tgz", - "integrity": "sha1-6qWVy4F4PKKADyakLgnxbn1PuJA=", + "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": { - "es6-weak-map": "2.0.2", - "lodash": "4.17.4", - "tslib": "1.8.0" + "strip-bom": "2.0.0" } }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "optional": true, "requires": { - "clone": "1.0.2" + "clone": "1.0.3" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" } }, "defined": { @@ -2241,39 +2621,71 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } + } + }, "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 }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", "dev": true }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "dev": true, - "requires": { - "fs-exists-sync": "0.1.0" - } - }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -2283,18 +2695,148 @@ "repeating": "2.0.1" } }, - "dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", "dev": true }, + "detect-port-alt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz", + "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=", + "dev": true, + "requires": { + "address": "1.0.3", + "debug": "2.6.9" + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "dom-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", + "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", + "dev": true, + "requires": { + "urijs": "1.19.0" + } + }, "domain-browser": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -2304,6 +2846,18 @@ "is-obj": "1.0.1" } }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -2313,44 +2867,13 @@ "readable-stream": "2.3.3" } }, - "eastasianwidth": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", - "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=", - "dev": true - }, - "easy-extender": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", - "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", - "dev": true, - "requires": { - "lodash": "3.10.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, "easy-table": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=", - "requires": { - "wcwidth": "1.0.1" - } - }, - "eazy-logger": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", - "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", "dev": true, "requires": { - "tfunk": "3.1.0" + "wcwidth": "1.0.1" } }, "ecc-jsbn": { @@ -2369,16 +2892,40 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "electron-to-chromium": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz", - "integrity": "sha1-CDl5NIkcvPrrvRi4KpW1pIETg2k=", + "electron-releases": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz", + "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==", "dev": true }, - "emitter-steward": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emitter-steward/-/emitter-steward-1.0.0.tgz", - "integrity": "sha1-80Ea3pdYp1Zd+Eiy2gy70bRsvWQ=", + "electron-to-chromium": { + "version": "1.3.30", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", + "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", + "dev": true, + "requires": { + "electron-releases": "2.1.0" + } + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", "dev": true }, "emojis-list": { @@ -2387,24 +2934,6 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "2.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, "encodeurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", @@ -2416,160 +2945,34 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.18" - } - }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", - "dev": true, - "requires": { - "once": "1.3.3" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } - } - }, - "engine.io": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.0.tgz", - "integrity": "sha1-PutfJky3XbvsG6rqJtYfWk6s4qo=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "base64id": "0.1.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.1", - "ws": "1.1.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.0.tgz", - "integrity": "sha1-e3MOQSdBQIdZbZvjyI0rxf22z1w=", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "1.1.1", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "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 - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.1.tgz", - "integrity": "sha1-lVTxrjMQfW+9FwylRm0vgz9qB88=", - "dev": true, - "requires": { - "after": "0.8.1", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.6", - "wtf-8": "1.0.0" - }, - "dependencies": { - "has-binary": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "integrity": "sha1-JTJvOc+k9hath4eJTjryz7x7bhA=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } + "iconv-lite": "0.4.19" } }, "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - } + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" } }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "1.0.1" } }, "error-ex": { @@ -2581,6 +2984,30 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "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.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "es5-ext": { "version": "0.10.37", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", @@ -2602,6 +3029,39 @@ "es6-symbol": "3.1.1" } }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz", + "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==", + "dev": true + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -2636,16 +3096,368 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "is-url": "1.2.2", - "path-is-absolute": "1.0.1", - "source-map": "0.5.6", - "xtend": "4.0.1" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", + "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.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 + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.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" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "eslint-config-react-app": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-2.0.1.tgz", + "integrity": "sha512-gHtkzfEjKXhgZJ0Bf+EmztFSWwTiMDgoy85sFaTqrxU1BHSJ9i4i/JJtXJofVCU/SOKxYs46LO3ajvuzFQH5rw==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz", + "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz", + "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", + "dev": true, + "requires": { + "aria-query": "0.7.0", + "array-includes": "3.0.3", + "ast-types-flow": "0.0.7", + "axobject-query": "0.1.0", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "1.4.1" + } + }, + "eslint-plugin-react": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", + "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", + "dev": true, + "requires": { + "doctrine": "2.0.2", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" } }, "esprima": { @@ -2654,21 +3466,23 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, - "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "core-js": "2.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" } }, "estraverse": { @@ -2677,6 +3491,12 @@ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -2684,11 +3504,36 @@ "dev": true }, "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, "eventemitter3": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", @@ -2701,11 +3546,61 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "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.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "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.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } }, "expand-brackets": { "version": "0.1.5", @@ -2726,47 +3621,68 @@ } }, "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "homedir-polyfill": "1.0.1" } }, "express": { - "version": "2.5.11", - "resolved": "https://registry.npmjs.org/express/-/express-2.5.11.tgz", - "integrity": "sha1-TOjqHzY15p5J8Ou0l7aksKUc5vA=", + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "dev": true, "requires": { - "connect": "1.9.2", - "mime": "1.2.4", - "mkdirp": "0.3.0", - "qs": "0.4.2" + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" }, "dependencies": { - "connect": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-1.9.2.tgz", - "integrity": "sha1-QogKIulDiuWait105Df1iujlKAc=", - "dev": true, - "requires": { - "formidable": "1.0.17", - "mime": "1.2.4", - "qs": "0.4.2" - } + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, "qs": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.4.2.tgz", - "integrity": "sha1-PKxMhh43GoycR3CsI82o3mObjl8=", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true } } @@ -2777,6 +3693,17 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -2786,32 +3713,68 @@ "is-extglob": "1.0.0" } }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", "dev": true, "requires": { - "chalk": "1.1.3", - "time-stamp": "1.1.0" + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.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": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "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=" + }, + "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 + }, "fastparse": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", "dev": true }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "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" + } + }, "fbjs": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", - "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { "core-js": "1.2.7", "isomorphic-fetch": "2.2.1", @@ -2819,26 +3782,36 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" + "ua-parser-js": "0.7.17" } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", "object-assign": "4.1.1" } }, "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", "dev": true, "requires": { - "loader-utils": "0.2.17" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } }, "filename-regex": { @@ -2847,6 +3820,22 @@ "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.1.2", + "minimatch": "3.0.4" + } + }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", + "dev": true + }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", @@ -2867,52 +3856,31 @@ "dev": true }, "finalhandler": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", - "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, "requires": { - "debug": "2.2.0", + "debug": "2.6.9", + "encodeurl": "1.0.1", "escape-html": "1.0.3", "on-finished": "2.3.0", + "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } } }, "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -2923,72 +3891,24 @@ "pinkie-promise": "2.0.1" } }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" } }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.2.0", - "parse-filepath": "1.0.1" - }, - "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "dev": true - }, "flatten": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, - "flow-bin": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.37.4.tgz", - "integrity": "sha1-PY2i73RugOcw0WbgkED0GYlpt2s=", - "dev": true - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3004,6 +3924,12 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3018,57 +3944,1000 @@ "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "mime-types": "2.1.17" } }, - "formidable": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz", - "integrity": "sha1-71SRSQ+UM7cF+qdyScmQKa40hVk=", + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, "fresh": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" + "jsonfile": "3.0.1", + "universalify": "0.1.1" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", - "dev": true + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "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.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "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, + "requires": { + "wrappy": "1.0.2" + } + }, + "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.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "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.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.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 + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "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 + } + } }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "globule": "0.1.0" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" } }, "generate-function": { @@ -3092,21 +4961,18 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, - "get-port": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-2.1.0.tgz", - "integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3157,115 +5023,28 @@ "is-glob": "2.0.1" } }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" - }, - "dependencies": { - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "dev": true, - "requires": { - "gaze": "0.5.2" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "0.1.1" - } - }, "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" + "global-prefix": "1.0.2", + "is-windows": "1.0.1", + "resolve-dir": "1.0.1" } }, "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { + "expand-tilde": "2.0.2", "homedir-polyfill": "1.0.1", - "ini": "1.3.4", - "is-windows": "0.2.0", - "which": "1.2.14" + "ini": "1.3.5", + "is-windows": "1.0.1", + "which": "1.3.0" } }, "globals": { @@ -3275,83 +5054,43 @@ "dev": true }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", "dev": true, "requires": { "array-union": "1.0.2", - "glob": "7.1.2", + "arrify": "1.0.1", + "glob": "6.0.4", "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1" - } - }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "dev": true, - "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" }, "dependencies": { "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } }, - "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "dev": true, "requires": { - "sparkles": "1.0.0" + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" } }, "got": { @@ -3383,120 +5122,19 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", - "dev": true, - "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.0.3", - "liftoff": "2.3.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "gulp-babel": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-6.1.2.tgz", - "integrity": "sha1-fAF25Lo/JExgWIoMSzIKRdGt784=", - "dev": true, - "requires": { - "babel-core": "6.23.1", - "gulp-util": "3.0.8", - "object-assign": "4.1.1", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl-sourcemaps-apply": "0.2.1" - } - }, - "gulp-multi-process": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/gulp-multi-process/-/gulp-multi-process-0.0.4.tgz", - "integrity": "sha1-9dSFXAEZ3msyZD950CJimUjBx8g=", + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, - "gulp-shell": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.5.2.tgz", - "integrity": "sha1-pJWcoGUa0ce7/nCy0K27tOGuqY0=", + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", "dev": true, "requires": { - "async": "1.5.2", - "gulp-util": "3.0.8", - "lodash": "4.17.4", - "through2": "2.0.3" - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.0.0", - "fancy-log": "1.3.0", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "1.0.0" + "duplexer": "0.1.1" } }, "hammerjs": { @@ -3504,6 +5142,101 @@ "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -3511,8 +5244,8 @@ "dev": true, "requires": { "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.0", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", "pinkie-promise": "2.0.1" } }, @@ -3522,7 +5255,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.0" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -3534,48 +5267,35 @@ "ansi-regex": "2.1.1" } }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "sparkles": "1.0.0" + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" } }, "hawk": { @@ -3590,6 +5310,23 @@ "sntp": "1.0.9" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", @@ -3621,33 +5358,201 @@ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, "html-comment-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", "dev": true }, - "http-errors": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", - "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", + "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": { - "inherits": "2.0.3", - "setprototypeof": "1.0.2", - "statuses": "1.3.1" + "whatwg-encoding": "1.0.3" } }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", + "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.2" + } + }, + "html-webpack-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.8", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, "http-proxy": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", - "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", "dev": true, "requires": { "eventemitter3": "1.2.0", "requires-port": "1.0.0" } }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", @@ -3655,20 +5560,20 @@ "dev": true, "requires": { "assert-plus": "0.2.0", - "jsprim": "1.4.0", + "jsprim": "1.4.1", "sshpk": "1.13.1" } }, "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "icss-replace-symbols": { "version": "1.1.0", @@ -3676,30 +5581,45 @@ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", "dev": true }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, "ieee754": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", "dev": true }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "immutability-helper": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.6.2.tgz", + "integrity": "sha512-2boGYtiA++szFIXl9tlTJ7f2emec+3UCaRjv8Ixnw62G43rz2n+vZ5kfs6fUmCORKuhJHFR2oSuAxBgrMxt95g==", "dev": true, - "optional": true + "requires": { + "invariant": "2.2.2" + } }, - "immutable": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.1.tgz", - "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=", - "dev": true + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } }, "imurmurhash": { "version": "0.1.4", @@ -3707,6 +5627,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -3745,15 +5671,108 @@ "dev": true }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "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 + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.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 + }, + "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" + } + }, + "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" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "invariant": { @@ -3771,21 +5790,17 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "dev": true, - "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" - } + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "dev": true }, "is-absolute-url": { "version": "2.1.0", @@ -3805,13 +5820,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.8.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "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": { @@ -3823,15 +5838,33 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", "dev": true, "requires": { - "ci-info": "1.0.0" + "ci-info": "1.1.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-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -3847,12 +5880,6 @@ "is-primitive": "2.0.0" } }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", - "dev": true - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -3883,12 +5910,6 @@ "number-is-nan": "1.0.1" } }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://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", @@ -3898,10 +5919,16 @@ "is-extglob": "1.0.0" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", "dev": true, "requires": { "generate-function": "2.0.0", @@ -3925,28 +5952,34 @@ "kind-of": "3.2.2" } }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "requires": { - "lodash.isfinite": "3.3.2" - } - }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" } }, "is-plain-obj": { @@ -3955,23 +5988,6 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "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", @@ -4002,21 +6018,33 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "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": { - "is-unc-path": "0.1.2" + "has": "1.0.1" } }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4031,27 +6059,18 @@ "html-comment-regex": "1.1.1" } }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, "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-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, - "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -4059,9 +6078,15 @@ "dev": true }, "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -4090,7 +6115,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.1", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.3" } }, @@ -4100,15 +6125,418 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "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.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, "javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "dev": true, + "requires": { + "jest-cli": "20.0.4" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "callsites": "2.0.0", + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.5", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", + "throat": "3.2.0", + "which": "1.3.0", + "worker-farm": "1.5.2", + "yargs": "7.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", + "dev": true + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "diff": "3.4.0", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "dev": true + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3" + } + }, + "jest-haste-map": { + "version": "20.0.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", + "integrity": "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.5.2" + } + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.2.0" + } + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + } + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", + "dev": true, + "requires": { + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", + "dev": true + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", + "dev": true + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "is-builtin-module": "1.0.0", + "resolve": "1.5.0" + } + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", + "dev": true, + "requires": { + "jest-regex-util": "20.0.3" + } + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.5", + "chalk": "1.1.3", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.5", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.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-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } + }, "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", "dev": true }, "js-tokens": { @@ -4133,6 +6561,41 @@ "dev": true, "optional": true }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.79.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -4140,9 +6603,15 @@ "dev": true }, "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", "dev": true }, "json-schema": { @@ -4151,10 +6620,16 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, "requires": { "jsonify": "0.0.0" } @@ -4178,9 +6653,9 @@ "dev": true }, "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", "dev": true, "requires": { "graceful-fs": "4.1.11" @@ -4189,7 +6664,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonpointer": { "version": "4.0.1", @@ -4198,15 +6674,15 @@ "dev": true }, "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "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.0.2", + "extsprintf": "1.3.0", "json-schema": "0.2.3", - "verror": "1.3.6" + "verror": "1.10.0" }, "dependencies": { "assert-plus": { @@ -4217,13 +6693,25 @@ } } }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "dev": true + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, "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-buffer": "1.1.6" } }, "klaw": { @@ -4235,15 +6723,6 @@ "graceful-fs": "4.1.11" } }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "dev": true, - "requires": { - "through2": "2.0.3" - } - }, "latest-version": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", @@ -4274,63 +6753,22 @@ "invert-kv": "1.0.0" } }, - "less": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", - "integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=", - "dev": true, - "requires": { - "errno": "0.1.4", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.3.6", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.78.0", - "source-map": "0.5.6" - }, - "dependencies": { - "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", - "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-2.2.3.tgz", - "integrity": "sha1-ttj4E5yEk98J2ZKpOgBzSwj4RSg=", - "dev": true, - "requires": { - "loader-utils": "0.2.17" - } - }, - "liftoff": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", - "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", - "dev": true, - "requires": { - "extend": "3.0.1", - "findup-sync": "0.4.3", - "fined": "1.1.0", - "flagged-respawn": "0.3.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mapvalues": "4.6.0", - "rechoir": "0.6.2", - "resolve": "1.3.3" - } - }, - "limiter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.2.tgz", - "integrity": "sha512-JIKZ0xb6fZZYa3deZ0BgXCgX6HgV8Nx3mFGeFHmFWW8Fb2c08e0CyE+G3nalpD0xGvGssjGb1UdFr+PprxZEbw==", + "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": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -4344,124 +6782,88 @@ "strip-bom": "2.0.0" } }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "localtunnel": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.8.2.tgz", - "integrity": "sha1-kTBR6DKLUfda2KIq0fXFuMWZo1k=", - "dev": true, - "requires": { - "debug": "2.2.0", - "openurl": "1.1.0", - "request": "2.78.0", - "yargs": "3.29.0" + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" }, "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { - "ms": "0.7.1" + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" } }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "yargs": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz", - "integrity": "sha1-GquWYOrnnYuPZ1vK7qtu40ws9pw=", + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "window-size": "0.1.4", - "y18n": "3.2.1" + "find-up": "1.1.2" } } } }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", "dev": true }, "lodash.camelcase": { @@ -4470,84 +6872,22 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.difference": { + "lodash.clonedeep": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", "dev": true }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, "lodash.memoize": { @@ -4556,37 +6896,29 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", "dev": true }, "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "lodash.templatesettings": "4.1.0" } }, "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "lodash._reinterpolate": "3.0.0" } }, "lodash.uniq": { @@ -4595,6 +6927,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -4619,6 +6957,12 @@ "signal-exit": "3.0.2" } }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", @@ -4641,11 +6985,40 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "magic-string": { + "version": "0.22.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", + "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "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.4" + } }, "map-obj": { "version": "1.0.1", @@ -4653,14 +7026,11 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "matcher": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", - "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true }, "math-expression-evaluator": { "version": "1.2.17", @@ -4668,37 +7038,59 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, - "max-timeout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/max-timeout/-/max-timeout-1.0.0.tgz", - "integrity": "sha1-to9povmeC0dv1Msj4gWcp1BxXh8=", - "dev": true - }, - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } } }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "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.1.0" + } + }, "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "readable-stream": "2.3.3" } }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -4725,6 +7117,24 @@ } } }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", @@ -4743,30 +7153,58 @@ "normalize-path": "2.1.1", "object.omit": "2.0.1", "parse-glob": "3.0.4", - "regex-cache": "0.4.3" + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" } }, "mime": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.4.tgz", - "integrity": "sha1-EbX9rynCUJJVF2uArVIClPXekrc=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "1.30.0" } }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4792,104 +7230,144 @@ } }, "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "multicast-dns": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", + "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "dns-packet": "1.2.2", + "thunky": "0.1.0" } }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "natives": { + "multicast-dns-service-types": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", - "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "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 + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "nested-error-stacks": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", + "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" } }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.79.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "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-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.3.0", + "crypto-browserify": "3.12.0", "domain-browser": "1.1.7", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", @@ -4897,20 +7375,67 @@ "readable-stream": "2.3.3", "stream-browserify": "2.0.1", "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + } + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "node-sass": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + } + }, + "node-sass-chokidar": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/node-sass-chokidar/-/node-sass-chokidar-0.0.3.tgz", + "integrity": "sha1-ukYO/kHI8UzoAKqjYGp6y7HmMNE=", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chokidar": "1.7.0", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "meow": "3.7.0", + "node-sass": "4.7.2", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" } }, "node-status-codes": { @@ -4919,19 +7444,13 @@ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", "dev": true }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.0" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -4942,7 +7461,7 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, @@ -4952,7 +7471,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.0.2" + "remove-trailing-separator": "1.1.0" } }, "normalize-range": { @@ -4973,6 +7492,149 @@ "sort-keys": "1.1.2" } }, + "npm-run-all": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", + "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "chalk": "2.3.0", + "cross-spawn": "5.1.0", + "memorystream": "0.3.1", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "read-pkg": "3.0.0", + "shell-quote": "1.6.1", + "string.prototype.padend": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "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.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -4985,6 +7647,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -4996,47 +7664,18 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "object-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", "dev": true }, - "object-path": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", - "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "1.0.1", - "array-slice": "1.0.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -5047,24 +7686,11 @@ "is-extendable": "0.1.1" } }, - "object.pick": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", - "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", - "dev": true, - "requires": { - "isobject": "2.1.0" - } - }, - "observable-to-promise": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.4.0.tgz", - "integrity": "sha1-KK/nFkUwjy1B1x9HrT/s4aN35Ss=", - "dev": true, - "requires": { - "is-observable": "0.2.0", - "symbol-observable": "0.2.4" - } + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true }, "on-finished": { "version": "2.3.0", @@ -5075,6 +7701,12 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5085,25 +7717,21 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "openurl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.0.tgz", - "integrity": "sha1-4vIYnZmcBIIyAfCD8PGnzYkDGHo=", - "dev": true - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "mimic-fn": "1.1.0" + } + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" } }, "optimist": { @@ -5114,44 +7742,55 @@ "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } } }, - "option-chain": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", - "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "object-assign": "4.1.1" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" } }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.0" + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } } }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-homedir": { @@ -5185,15 +7824,44 @@ "os-tmpdir": "1.0.2" } }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { - "md5-hex": "1.3.0" + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" } }, + "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.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "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-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "package-json": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", @@ -5203,24 +7871,35 @@ "got": "5.7.1", "registry-auth-token": "3.3.1", "registry-url": "3.1.0", - "semver": "5.3.0" + "semver": "5.4.1" } }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, - "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "is-absolute": "0.2.6", - "map-cache": "0.2.2", - "path-root": "0.1.1" + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" } }, "parse-glob": { @@ -5244,49 +7923,22 @@ "error-ex": "1.3.1" } }, - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true - }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true }, "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, "path-browserify": { @@ -5310,27 +7962,41 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "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.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, "requires": { - "path-root-regex": "0.1.2" + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } } }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -5342,10 +8008,32 @@ "pinkie-promise": "2.0.1" } }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "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": { @@ -5369,56 +8057,108 @@ "pinkie": "2.0.4" } }, - "pkg-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz", - "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "load-json-file": "1.1.0", - "object-assign": "4.1.1", - "symbol": "0.2.3" - } - }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "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": "1.1.2" + "find-up": "2.1.0" + }, + "dependencies": { + "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" + } + } } }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "1.3.0" - } + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true }, - "portscanner": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", - "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, "requires": { "async": "1.5.2", - "is-number-like": "1.0.8" + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } } }, "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.6", - "supports-color": "3.2.3" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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 + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" }, "dependencies": { "has-flag": { @@ -5427,6 +8167,18 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -5438,17 +8190,6 @@ } } }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } - }, "postcss-colormin": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", @@ -5456,8 +8197,37 @@ "dev": true, "requires": { "colormin": "1.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-convert-values": { @@ -5466,8 +8236,37 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-discard-comments": { @@ -5476,7 +8275,36 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-discard-duplicates": { @@ -5485,7 +8313,36 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-discard-empty": { @@ -5494,7 +8351,36 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-discard-overridden": { @@ -5503,7 +8389,36 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-discard-unused": { @@ -5512,8 +8427,37 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-filter-plugins": { @@ -5522,8 +8466,90 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqid": "4.1.1" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } + } + }, + "postcss-flexbugs-fixes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz", + "integrity": "sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.8.tgz", + "integrity": "sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.14", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" } }, "postcss-merge-idents": { @@ -5533,8 +8559,37 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-merge-longhand": { @@ -5543,7 +8598,36 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-merge-rules": { @@ -5554,9 +8638,48 @@ "requires": { "browserslist": "1.7.7", "caniuse-api": "1.6.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3", "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000784", + "electron-to-chromium": "1.3.30" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-message-helpers": { @@ -5572,8 +8695,37 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-minify-gradients": { @@ -5582,8 +8734,37 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-minify-params": { @@ -5593,9 +8774,38 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-minify-selectors": { @@ -5606,8 +8816,37 @@ "requires": { "alphanum-sort": "1.0.2", "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-modules-extract-imports": { @@ -5616,49 +8855,7 @@ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, "requires": { - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-local-by-default": { @@ -5668,49 +8865,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-scope": { @@ -5720,49 +8875,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-modules-values": { @@ -5772,49 +8885,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "postcss": "6.0.14" } }, "postcss-normalize-charset": { @@ -5823,7 +8894,36 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-normalize-url": { @@ -5834,8 +8934,37 @@ "requires": { "is-absolute-url": "2.1.0", "normalize-url": "1.9.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-ordered-values": { @@ -5844,8 +8973,37 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-reduce-idents": { @@ -5854,8 +9012,37 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-reduce-initial": { @@ -5864,7 +9051,36 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-reduce-transforms": { @@ -5874,8 +9090,37 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-selector-parser": { @@ -5896,9 +9141,38 @@ "dev": true, "requires": { "is-svg": "2.1.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "svgo": "0.7.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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-unique-selectors": { @@ -5908,8 +9182,37 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } + } } }, "postcss-value-parser": { @@ -5925,143 +9228,87 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" - } - }, - "power-assert-context-formatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", - "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "power-assert-context-traversal": "1.1.1" }, "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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" + } } } }, - "power-assert-context-traversal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", - "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "estraverse": "4.2.0" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, - "power-assert-renderer-assertion": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", - "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", - "dev": true, - "requires": { - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", - "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=", - "dev": true - }, - "power-assert-renderer-diagram": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", - "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1", - "stringifier": "1.3.0" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, - "power-assert-renderer-succinct": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz", - "integrity": "sha1-wqRosjgiq9b4Diq6UyI0ewnfR24=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "power-assert-renderer-diagram": "1.1.2" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, - "power-assert-util-string-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", - "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", - "dev": true, - "requires": { - "eastasianwidth": "0.1.1" - } - }, "preact": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/preact/-/preact-7.1.0.tgz", - "integrity": "sha1-EZz2WWOr/ygDiyMwYBrd6WmZCo0=", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.7.tgz", + "integrity": "sha512-m34Ke8U32HyKRVzUOCAcaiIBLR2ye6syiuRclU5DxyixDPDFqdLbIElhERBrF6gDbPKQR+Vpv5bZ9CCbvN6pdQ==", "dev": true }, "preact-compat": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/preact-compat/-/preact-compat-3.9.4.tgz", - "integrity": "sha1-VaXYHeY37cGMRJvuRYBLdL7xWzQ=", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/preact-compat/-/preact-compat-3.17.0.tgz", + "integrity": "sha1-Uoz9/DARkMGg9HVnM2vh9L4CZrM=", "dev": true, "requires": { + "immutability-helper": "2.6.2", "preact-render-to-string": "3.6.3", "preact-transition-group": "1.1.1", - "proptypes": "0.14.4" + "prop-types": "15.6.0", + "standalone-react-addons-pure-render-mixin": "0.1.1" + } + }, + "preact-render-to-string": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.6.3.tgz", + "integrity": "sha1-SB0NW9rJGS0zR1V0N9XNAKoxIEM=", + "dev": true, + "requires": { + "pretty-format": "3.8.0" }, "dependencies": { - "preact-render-to-string": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.6.3.tgz", - "integrity": "sha1-SB0NW9rJGS0zR1V0N9XNAKoxIEM=", - "dev": true, - "requires": { - "pretty-format": "3.8.0" - } - }, - "preact-transition-group": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/preact-transition-group/-/preact-transition-group-1.1.1.tgz", - "integrity": "sha1-8KSTJ+pRXs406ivoZMSn0p5dbhA=", + "pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", "dev": true } } }, + "preact-transition-group": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/preact-transition-group/-/preact-transition-group-1.1.1.tgz", + "integrity": "sha1-8KSTJ+pRXs406ivoZMSn0p5dbhA=", + "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 + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -6074,41 +9321,47 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "pretty-format": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", - "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", "dev": true }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", "dev": true, "requires": { - "is-finite": "1.0.2", - "parse-ms": "1.0.1", - "plur": "1.0.0" + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.0" }, "dependencies": { - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", - "dev": true + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } } } }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "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": { @@ -6123,6 +9376,12 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -6132,32 +9391,59 @@ } }, "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "0.8.12", - "loose-envify": "1.3.1" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, - "proptypes": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/proptypes/-/proptypes-0.14.4.tgz", - "integrity": "sha1-Hq12ANREcqYUqhzwxMzO59hnmX0=", - "dev": true + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } }, "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "dev": true, + "requires": { + "event-stream": "3.3.4" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -6165,15 +9451,15 @@ "dev": true }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, "qs": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "integrity": "sha1-zgPF/wk1vB2daanxTL0Y5WjWdiU=", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", "dev": true }, "query-string": { @@ -6198,6 +9484,21 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "dev": true, + "requires": { + "performance-now": "2.1.0" + } + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -6223,7 +9524,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -6234,25 +9535,56 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", "dev": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -6266,35 +9598,1217 @@ } }, "react": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.4.1.tgz", - "integrity": "sha1-SY6RhgJnejmDzQ/SBt/nADiaDdY=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "dev": true, "requires": { - "fbjs": "0.8.12", + "fbjs": "0.8.16", "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, + "react-dev-utils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.1.tgz", + "integrity": "sha1-nydj57r6GhucUiVNKked7sKA8RE=", + "dev": true, + "requires": { + "address": "1.0.3", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.3", + "escape-string-regexp": "1.0.5", + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.1.0", + "react-error-overlay": "3.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "0.2.0" + }, + "dependencies": { + "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.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } } }, "react-dom": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.4.1.tgz", - "integrity": "sha1-1UyRMmGq7bF63CBBDQKdzBihNEo=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", "dev": true, "requires": { - "fbjs": "0.8.12", + "fbjs": "0.8.16", "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, + "react-error-overlay": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", + "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==", + "dev": true + }, "react-hammerjs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/react-hammerjs/-/react-hammerjs-0.5.0.tgz", - "integrity": "sha1-qiDlxfRNZg8+joftESgvEhc+d64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-hammerjs/-/react-hammerjs-1.0.1.tgz", + "integrity": "sha1-vB7Z6e99oFcWP7FpzhKRe21sp9g=", "requires": { "hammerjs": "2.0.8" } }, + "react-scripts": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-1.0.17.tgz", + "integrity": "sha512-tf2kBx230iUSxqJZxboYINlIOKryW+CC7oVgQ4rguNLmcPgWvnnCM8huAgCgL2yuqDd0qQvnI5sRCmc+0TQ5zw==", + "dev": true, + "requires": { + "autoprefixer": "7.1.6", + "babel-core": "6.26.0", + "babel-eslint": "7.2.3", + "babel-jest": "20.0.3", + "babel-loader": "7.1.2", + "babel-preset-react-app": "3.1.0", + "babel-runtime": "6.26.0", + "case-sensitive-paths-webpack-plugin": "2.1.1", + "chalk": "1.1.3", + "css-loader": "0.28.7", + "dotenv": "4.0.0", + "eslint": "4.10.0", + "eslint-config-react-app": "2.0.1", + "eslint-loader": "1.9.0", + "eslint-plugin-flowtype": "2.39.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-jsx-a11y": "5.1.1", + "eslint-plugin-react": "7.4.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.5", + "fs-extra": "3.0.1", + "fsevents": "1.1.2", + "html-webpack-plugin": "2.29.0", + "jest": "20.0.4", + "object-assign": "4.1.1", + "postcss-flexbugs-fixes": "3.2.0", + "postcss-loader": "2.0.8", + "promise": "8.0.1", + "raf": "3.4.0", + "react-dev-utils": "4.2.1", + "style-loader": "0.19.0", + "sw-precache-webpack-plugin": "0.11.4", + "url-loader": "0.6.2", + "webpack": "3.8.1", + "webpack-dev-server": "2.9.4", + "webpack-manifest-plugin": "1.3.2", + "whatwg-fetch": "2.0.3" + }, + "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 + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "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" + } + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "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.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "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, + "requires": { + "wrappy": "1.0.2" + } + }, + "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.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "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.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.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 + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "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 + } + } + }, + "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 + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "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" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "promise": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", + "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "webpack": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", + "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + } + }, + "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 + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, "read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", @@ -6353,13 +10867,24 @@ "set-immediate-shim": "1.0.1" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", "dev": true, "requires": { - "resolve": "1.3.3" + "minimatch": "3.0.3" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } } }, "redent": { @@ -6409,36 +10934,35 @@ } }, "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "private": "0.1.7" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" } }, "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "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", - "is-primitive": "2.0.0" + "is-equal-shallow": "0.1.3" } }, "regexpu-core": { @@ -6447,7 +10971,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -6458,7 +10982,7 @@ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "dev": true, "requires": { - "rc": "1.2.1", + "rc": "1.2.2", "safe-buffer": "5.1.1" } }, @@ -6468,7 +10992,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.1" + "rc": "1.2.2" } }, "regjsgen": { @@ -6494,12 +11018,39 @@ } } }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, + "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 + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", @@ -6521,16 +11072,10 @@ "is-finite": "1.0.2" } }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, "request": { - "version": "2.78.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.78.0.tgz", - "integrity": "sha1-4cjew0bhyBkjskrNszfxHeyr6cw=", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { "aws-sign2": "0.6.0", @@ -6546,21 +11091,13 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "node-uuid": "1.4.8", + "mime-types": "2.1.17", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3" - }, - "dependencies": { - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - } + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" } }, "require-directory": { @@ -6569,17 +11106,27 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "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 }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", - "dev": true + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "requires-port": { "version": "1.0.0", @@ -6587,88 +11134,339 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", + "dev": true + }, "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, "resolve-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", - "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "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": "2.0.0" + "resolve-from": "3.0.0" + }, + "dependencies": { + "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-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "dev": true, "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" } }, "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "debug": "2.6.8", - "minimatch": "3.0.4" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "align-text": "0.1.4" + } + }, + "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.1.2" } }, "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "rollup": { + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.53.0.tgz", + "integrity": "sha512-bG5RzkF7wcOHmKoVAFtERZ5P9TNJP9/AF+ldwGm/Rx6pejura+Z9BDU0GJtzWu+lYXwjfINmgiCclhLJzP/OXA==", "dev": true }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "rollup-plugin-babel": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.3.tgz", + "integrity": "sha512-5kzM/Rr4jQSRPLc2eN5NuD+CI/6AAy7S1O18Ogu4U3nq1Q42VJn0C9EMtqnvxtfwf1XrezOtdA9ro1VZI5B0mA==", + "dev": true, + "requires": { + "rollup-pluginutils": "1.5.2" + } + }, + "rollup-plugin-commonjs": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz", + "integrity": "sha512-qK0+uhktmnAgZkHkqFuajNmPw93fjrO7+CysDaxWE5jrUR9XSlSvuao5ZJP+XizxA8weakhgYYBtbVz9SGBpjA==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "estree-walker": "0.5.1", + "magic-string": "0.22.4", + "resolve": "1.5.0", + "rollup-pluginutils": "2.0.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.1.tgz", + "integrity": "sha512-7HgCgz1axW7w5aOvgOQkoR1RMBkllygJrssU3BvymKQ95lxXYv6Pon17fBRDm9qhkvXZGijOULoSF9ShOk/ZLg==", + "dev": true + }, + "rollup-pluginutils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + }, + "dependencies": { + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + } + } + } + } + }, + "rollup-plugin-node-resolve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", + "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "builtin-modules": "1.1.1", + "is-module": "1.0.0", + "resolve": "1.5.0" + } + }, + "rollup-plugin-postcss": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-0.5.5.tgz", + "integrity": "sha512-lwqVOt+BM2vOy/LTuPpRjMumXlPmkKQxDA5ilsCvIJ2Gq4yhonGautp7kTHFUUx5AihtdfFOvn0BK953Cz70xA==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "concat-with-sourcemaps": "1.0.4", + "fs-extra": "3.0.1", + "postcss": "6.0.14", + "reserved-words": "0.1.2", + "rollup-pluginutils": "2.0.1", + "style-inject": "0.1.2" + }, + "dependencies": { + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + }, + "rollup-pluginutils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + } + } + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "1.9.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.10.0" + }, + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true, + "requires": { + "bser": "1.0.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.4.0", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "semver-diff": { @@ -6677,113 +11475,69 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "5.4.1" } }, "send": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "integrity": "sha1-qVSYQyU5L1FTKndgdg5FlZjIn3o=", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "dev": true, "requires": { - "debug": "2.2.0", - "depd": "1.1.0", + "debug": "2.6.9", + "depd": "1.1.1", "destroy": "1.0.4", "encodeurl": "1.0.1", "escape-html": "1.0.3", - "etag": "1.7.0", - "fresh": "0.3.0", - "http-errors": "1.5.1", - "mime": "1.3.4", - "ms": "0.7.1", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", "statuses": "1.3.1" }, "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "etag": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", - "dev": true - }, "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true } } }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", - "dev": true - }, "serve-index": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", - "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "1.3.3", - "batch": "0.5.3", - "debug": "2.2.0", + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", "escape-html": "1.0.3", - "http-errors": "1.5.1", - "mime-types": "2.1.15", - "parseurl": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" } }, "serve-static": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz", - "integrity": "sha1-1sznaTUF9zPHWd5Xvvwa92wPCAU=", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { "encodeurl": "1.0.1", "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.14.1" + "parseurl": "1.3.2", + "send": "0.16.1" } }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "serviceworker-cache-polyfill": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", + "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=", "dev": true }, "set-blocking": { @@ -6804,21 +11558,52 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", - "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "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": { @@ -6834,10 +11619,21 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "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 + } + } }, "slide": { "version": "1.1.6", @@ -6854,146 +11650,45 @@ "hoek": "2.16.3" } }, - "socket.io": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.6.0.tgz", - "integrity": "sha1-PkDZMmN+a9kjmBslyvfFPoO24uE=", + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", "dev": true, "requires": { - "debug": "2.3.3", - "engine.io": "1.8.0", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.6.0", - "socket.io-parser": "2.3.1" + "faye-websocket": "0.10.0", + "uuid": "2.0.3" }, "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "ms": "0.7.2" + "websocket-driver": "0.7.0" } }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", "dev": true } } }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.6.0.tgz", - "integrity": "sha1-W2aPT3cTBN/u0XkGRwg4b6ZxeFM=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.0", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "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 - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" } }, "sort-keys": { @@ -7006,32 +11701,26 @@ } }, "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true }, "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "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": "0.5.7" } }, - "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true - }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -7053,6 +11742,44 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7083,10 +11810,10 @@ } } }, - "stack-utils": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-0.4.0.tgz", - "integrity": "sha1-lAy4L8z6hOj/Lz/fKT/ngBa+zNE=", + "standalone-react-addons-pure-render-mixin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz", + "integrity": "sha1-PHQJ9MecQN6axyxhbPZ5qZTzdVE=", "dev": true }, "statuses": { @@ -7095,6 +11822,15 @@ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", "dev": true }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -7105,11 +11841,14 @@ "readable-stream": "2.3.3" } }, - "stream-consume": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", - "dev": true + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } }, "stream-http": { "version": "2.7.2", @@ -7124,22 +11863,21 @@ "xtend": "4.0.1" } }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", - "dev": true, - "requires": { - "commander": "2.11.0", - "limiter": "1.1.2" - } - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -7151,6 +11889,17 @@ "strip-ansi": "3.0.1" } }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1" + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -7160,25 +11909,6 @@ "safe-buffer": "5.1.1" } }, - "stringifier": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", - "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "traverse": "0.6.6", - "type-name": "2.0.2" - }, - "dependencies": { - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - } - } - }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -7203,6 +11933,12 @@ "is-utf8": "0.2.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -7218,13 +11954,20 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "style-inject": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.1.2.tgz", + "integrity": "sha512-EUa9T/9RfzoKf9m3K6/p+EFis0oS6lxDmDilLfu/kyxwoVEHZWTkBGNP8LczZXtqj/bxQzbWSJXN2BvLXhUHtQ==", + "dev": true + }, "style-loader": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.1.tgz", - "integrity": "sha1-RoKA77wEcwI806bNVuM7Wh1/w6k=", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.0.tgz", + "integrity": "sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==", "dev": true, "requires": { - "loader-utils": "0.2.17" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } }, "supports-color": { @@ -7234,25 +11977,23 @@ "dev": true }, "svg-url-loader": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-1.1.0.tgz", - "integrity": "sha1-nE7A85bS77AsIqXxwv5HKypariM=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-2.3.1.tgz", + "integrity": "sha1-KH7TEf/+SbhTzTuur8pWP6gDu/c=", "dev": true, "requires": { - "file-loader": "0.9.0", - "loader-utils": "0.2.15" + "file-loader": "1.1.6", + "loader-utils": "1.1.0" }, "dependencies": { - "loader-utils": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.15.tgz", - "integrity": "sha1-x98zQqnU4hA93cl9QGDazMJG1qw=", + "file-loader": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz", + "integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } } } @@ -7272,121 +12013,185 @@ "whet.extend": "0.9.9" } }, - "symbol": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz", - "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c=", + "sw-precache": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.0.tgz", + "integrity": "sha512-sKctdX+5hUxkqJ/1DM88ubQ+QRvyw7CnxWdk909N2DgvxMqc1gcQFrwL7zpVc87wFmCA/OvRQd0iMC2XdFopYg==", + "dev": true, + "requires": { + "dom-urls": "1.1.0", + "es6-promise": "4.2.2", + "glob": "7.1.2", + "lodash.defaults": "4.2.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "sw-toolbox": "3.6.0", + "update-notifier": "1.0.3" + } + }, + "sw-precache-webpack-plugin": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz", + "integrity": "sha1-ppUBflTu1XVVFJOlGdwdqNotxeA=", + "dev": true, + "requires": { + "del": "2.2.2", + "sw-precache": "5.2.0", + "uglify-js": "3.3.2" + } + }, + "sw-toolbox": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz", + "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=", + "dev": true, + "requires": { + "path-to-regexp": "1.7.0", + "serviceworker-cache-polyfill": "4.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 }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "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 + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.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 + }, + "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" + } + }, + "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" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } }, "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "tfunk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", - "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "object-path": "0.9.2" - } - }, - "the-argv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", - "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=", + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", "dev": true }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "time-require": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", - "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", - "dev": true, - "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "0.1.2" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true }, "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", "dev": true }, "timed-out": { @@ -7396,18 +12201,27 @@ "dev": true }, "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", "dev": true, "requires": { "setimmediate": "1.0.5" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, "to-arraybuffer": { @@ -7422,19 +12236,25 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { "punycode": "1.4.1" } }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, "trim-newlines": { @@ -7449,11 +12269,29 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", - "dev": true + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } }, "tty-browserify": { "version": "0.0.0", @@ -7474,35 +12312,72 @@ "dev": true, "optional": true }, - "type-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", - "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=", + "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" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "ua-parser-js": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.13.tgz", - "integrity": "sha1-zZ3S+GSTs/RNvu7zeA/adMXuFL4=" + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.2.tgz", + "integrity": "sha512-uZp2gduFfZDDfx0iIAmfKgRTANCooWcFjnFmJ2n8x/+RpBNk97lac1HU5wvZxWZCBbwHmTFDpWAsEhKnQpsM2A==", "dev": true, "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "commander": "2.12.2", + "source-map": "0.6.1" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "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 - }, + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + }, + "dependencies": { "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -7518,34 +12393,18 @@ "center-align": "0.1.3", "right-align": "0.1.3", "wordwrap": "0.0.2" - }, - "dependencies": { - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - } } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } }, "wordwrap": { "version": "0.0.2", @@ -7567,36 +12426,6 @@ } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", - "dev": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -7618,23 +12447,12 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, - "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "dev": true, - "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", - "uid2": "0.0.3" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7663,6 +12481,18 @@ "xdg-basedir": "2.0.0" } }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "urijs": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.0.tgz", + "integrity": "sha512-Qs2odXn0hST5VSPVjpi73CMqtbAoanahaqWBujGU+IyMrMqpWcIhDewxQRhCkmqYxuyvICDcSuLdv2O7ncWBGw==", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -7681,6 +12511,35 @@ } } }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -7719,16 +12578,22 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true }, "v8flags": { @@ -7750,6 +12615,12 @@ "spdx-expression-parse": "1.0.4" } }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, "vendors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", @@ -7757,120 +12628,29 @@ "dev": true }, "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "extsprintf": "1.0.2" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" }, "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "1.1.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "strip-bom": { + "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "is-utf8": "0.2.1" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true }, "vm-browserify": { "version": "0.0.4", @@ -7881,115 +12661,459 @@ "indexof": "0.0.1" } }, - "w3c-blob": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", - "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "async": "0.9.2", + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", + "dev": true + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" } }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, "optional": true, "requires": { "defaults": "1.0.3" } }, + "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 + }, "webpack": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.14.0.tgz", - "integrity": "sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", + "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", "dev": true, "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.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=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "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" + } + }, + "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 + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "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" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "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 + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" } } } }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", "dev": true, "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", + "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-manifest-plugin": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", + "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", + "dev": true, + "requires": { + "fs-extra": "0.30.0", + "lodash": "4.17.4" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" }, "dependencies": { "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "weinre": { - "version": "2.0.0-pre-I0Z7U9OV", - "resolved": "https://registry.npmjs.org/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz", - "integrity": "sha1-/viqIjkh97QLu71MPtQwL2/QqBM=", + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "express": "2.5.11", - "nopt": "3.0.6", - "underscore": "1.7.0" + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" } }, "whatwg-fetch": { @@ -7997,6 +13121,24 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, "whet.extend": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", @@ -8004,9 +13146,9 @@ "dev": true }, "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -8018,6 +13160,15 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, "widest-line": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", @@ -8028,17 +13179,27 @@ } }, "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.6", + "xtend": "4.0.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -8055,6 +13216,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, "write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", @@ -8066,46 +13236,6 @@ "slide": "1.1.6" } }, - "write-json-file": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-1.2.0.tgz", - "integrity": "sha1-LV3+lqvDyIkFfJOXGqQAXvtUgTQ=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "sort-keys": "1.1.2", - "write-file-atomic": "1.3.4" - } - }, - "write-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-1.0.0.tgz", - "integrity": "sha1-rriqnU14jh2JPfsIVJaLVDqRn1c=", - "dev": true, - "requires": { - "write-json-file": "1.2.0" - } - }, - "ws": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", - "integrity": "sha1-CC3bbGQehdS7RR8D1S8G6r2x8Bg=", - "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" - } - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, "xdg-basedir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", @@ -8115,10 +13245,16 @@ "os-homedir": "1.0.2" } }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "dev": true }, "xtend": { @@ -8140,9 +13276,9 @@ "dev": true }, "yargs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", - "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", "dev": true, "requires": { "camelcase": "3.0.0", @@ -8156,9 +13292,8 @@ "set-blocking": "2.0.0", "string-width": "1.0.2", "which-module": "1.0.0", - "window-size": "0.2.0", "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "yargs-parser": "5.0.0" }, "dependencies": { "camelcase": { @@ -8166,19 +13301,13 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "requires": { "camelcase": "3.0.0" @@ -8191,12 +13320,6 @@ "dev": true } } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true } } } diff --git a/package.json b/package.json index 74b35e0..c03eeae 100644 --- a/package.json +++ b/package.json @@ -17,66 +17,56 @@ "url": "https://github.com/josdejong/jsoneditor.git" }, "bugs": "https://github.com/josdejong/jsoneditor/issues", - "scripts": { - "start": "gulp watch", - "build": "gulp", - "flow": "flow; test $? -eq 0 -o $? -eq 2", - "test": "ava --verbose", - "test-eson": "ava --verbose test/eson.test.js", - "test-patch": "ava --verbose test/patchEson.test.js", - "test-actions": "ava --verbose test/actions.test.js", - "watch:test": "ava --verbose --watch" - }, + "private": false, "dependencies": { - "ajv": "4.10.4", - "brace": "0.9.1", - "console.table": "0.9.1", + "ajv": "5.5.2", + "brace": "0.11.0", "javascript-natural-sort": "0.7.1", "lodash": "4.17.4", - "prop-types": "15.5.10", - "react-hammerjs": "0.5.0" + "prop-types": "15.6.0", + "react-hammerjs": "1.0.1" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" }, "devDependencies": { - "ava": "0.17.0", - "babel-core": "6.23.1", - "babel-loader": "6.2.10", - "babel-plugin-transform-flow-strip-types": "6.21.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-2": "6.18.0", - "babel-preset-stage-3": "6.17.0", - "browser-sync": "2.18.6", - "css-loader": "0.26.1", - "deep-map": "1.5.0", - "flow-bin": "0.37.4", - "graceful-fs": "4.1.11", - "gulp": "3.9.1", - "gulp-babel": "6.1.2", - "gulp-multi-process": "0.0.4", - "gulp-shell": "0.5.2", - "gulp-util": "3.0.8", - "json-loader": "0.5.4", - "less": "2.7.2", - "less-loader": "2.2.3", - "mkdirp": "0.5.1", - "preact": "7.1.0", - "preact-compat": "3.9.4", - "react": "15.4.1", - "react-dom": "15.4.1", - "style-loader": "0.13.1", - "svg-url-loader": "1.1.0", - "webpack": "1.14.0" + "babel-cli": "6.26.0", + "babel-plugin-external-helpers": "6.22.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-preset-env": "1.6.1", + "console.table": "0.9.1", + "cpy-cli": "1.0.1", + "css-loader": "0.28.7", + "node-sass-chokidar": "0.0.3", + "npm-run-all": "4.1.2", + "preact": "8.2.7", + "preact-compat": "3.17.0", + "react": "16.2.0", + "react-dom": "16.2.0", + "react-scripts": "1.0.17", + "rollup": "0.53.0", + "rollup-plugin-babel": "3.0.3", + "rollup-plugin-commonjs": "8.2.6", + "rollup-plugin-node-resolve": "3.0.0", + "rollup-plugin-postcss": "0.5.5", + "svg-url-loader": "2.3.1", + "webpack": "3.8.1" }, - "ava": { - "files": [ - "test/**/*.test.js" - ], - "source": [ - "./src/**/*" - ], - "require": [ - "babel-register" - ], - "concurrency": 4, - "babel": "inherit" + "scripts": { + "start": "npm-run-all -p watch-css start-js", + "build-css": "node-sass-chokidar src/ -o src/", + "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive", + "start-js": "react-scripts start", + "build-js": "react-scripts build", + "copy-css-lib": "cpy '**/*.css' '**/*.svg' '../../lib' --cwd='src/jsoneditor' --parents", + "build-js-lib": "babel src/jsoneditor --out-dir lib --ignore spec.js,test.js", + "build-js-bundle": "webpack --config webpack.config.js", + "build-js-minimalist": "webpack --config webpack.config.minimalist.js", + "build": "npm-run-all build-css copy-css-lib build-js-lib build-js-bundle build-js-minimalist", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" } } diff --git a/favicon.ico b/public/favicon.ico similarity index 100% rename from favicon.ico rename to public/favicon.ico diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..9fc77cb --- /dev/null +++ b/public/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + + JSONEditor demo + + + +
+ + + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..1273e74 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "JSONEditor", + "name": "JSONEditor demo", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#3883fa", + "background_color": "#ffffff" +} diff --git a/react.js b/react.js deleted file mode 100644 index 098e7ad..0000000 --- a/react.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/components/JSONEditor') diff --git a/src/assets/ace/theme-jsoneditor.js b/src/assets/ace/theme-jsoneditor.js deleted file mode 100644 index 6cec3a6..0000000 --- a/src/assets/ace/theme-jsoneditor.js +++ /dev/null @@ -1,144 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-jsoneditor"; -exports.cssText = ".ace-jsoneditor .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -\ -.ace-jsoneditor.ace_editor {\ -font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ -line-height: 1.3;\ -}\ -.ace-jsoneditor .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-jsoneditor .ace_scroller {\ -background-color: #FFFFFF\ -}\ -.ace-jsoneditor .ace_text-layer {\ -color: gray\ -}\ -.ace-jsoneditor .ace_variable {\ -color: #1a1a1a\ -}\ -.ace-jsoneditor .ace_cursor {\ -border-left: 2px solid #000000\ -}\ -.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\ -border-left: 0px;\ -border-bottom: 1px solid #000000\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_selection {\ -background: lightgray\ -}\ -.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -border-radius: 2px\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_active-line {\ -background: #FFFBD1\ -}\ -.ace-jsoneditor .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_selected-word {\ -border: 1px solid lightgray\ -}\ -.ace-jsoneditor .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-jsoneditor .ace_keyword,\ -.ace-jsoneditor .ace_meta,\ -.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ -color: #AF956F\ -}\ -.ace-jsoneditor .ace_keyword.ace_operator {\ -color: #484848\ -}\ -.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ -color: #96DC5F\ -}\ -.ace-jsoneditor .ace_constant.ace_language {\ -color: darkorange\ -}\ -.ace-jsoneditor .ace_constant.ace_numeric {\ -color: red\ -}\ -.ace-jsoneditor .ace_constant.ace_character.ace_entity {\ -color: #BF78CC\ -}\ -.ace-jsoneditor .ace_invalid {\ -color: #FFFFFF;\ -background-color: #FF002A;\ -}\ -.ace-jsoneditor .ace_fold {\ -background-color: #AF956F;\ -border-color: #000000\ -}\ -.ace-jsoneditor .ace_storage,\ -.ace-jsoneditor .ace_support.ace_class,\ -.ace-jsoneditor .ace_support.ace_function,\ -.ace-jsoneditor .ace_support.ace_other,\ -.ace-jsoneditor .ace_support.ace_type {\ -color: #C52727\ -}\ -.ace-jsoneditor .ace_string {\ -color: green\ -}\ -.ace-jsoneditor .ace_comment {\ -color: #BCC8BA\ -}\ -.ace-jsoneditor .ace_entity.ace_name.ace_tag,\ -.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-jsoneditor .ace_markup.ace_underline {\ -text-decoration: underline\ -}\ -.ace-jsoneditor .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ -}"; - -var dom = acequire("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/src/demo/Demo.css b/src/demo/Demo.css new file mode 100644 index 0000000..aaf992d --- /dev/null +++ b/src/demo/Demo.css @@ -0,0 +1,13 @@ +body, input, select { + font-family: sans-serif; + font-size: 11pt; } + +.demo .menu { + margin: 20px 0; } + .demo .menu button, .demo .menu label { + margin-right: 10px; } + +.demo .contents { + height: 400px; + width: 100%; + max-width: 800px; } diff --git a/src/demo/Demo.js b/src/demo/Demo.js new file mode 100644 index 0000000..8d9bb69 --- /dev/null +++ b/src/demo/Demo.js @@ -0,0 +1,191 @@ +import React, { Component } from 'react' +import JSONEditor from '../jsoneditor/index.react' +import { setIn } from '../jsoneditor/utils/immutabilityHelpers' +import { largeJson } from './resources/largeJson' + +import './Demo.css' + +const schema = { + "title": "Example Schema", + "type": "object", + "properties": { + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "gender": { + "enum": ["male", "female"] + }, + "age": { + "description": "Age in years", + "type": "integer", + "minimum": 0 + } + }, + "required": ["firstName", "lastName"] +} + +const json = { + 'array': [1, 2, 3], + 'emptyArray': [], + 'emptyObject': {}, + 'firstName': null, + 'boolean': true, + 'null': null, + 'number': 123, + 'object': {'a': 'b', 'c': 'd', 'e': [{"first": true}, {"second": true}]}, + 'string': 'Hello World', + 'unicode': 'A unicode character: \u260E', + 'url': 'http://jsoneditoronline.org' +} + +function expandAll (path) { + return true +} + +class App extends Component { + constructor (props) { + super(props) + + this.state = { + logging: false, + + options: { + json, + schema: null, + + name: 'myObject', + onPatch: this.handlePatch, + onPatchText: this.handlePatchText, + onChange: this.handleChange, + onChangeText: this.handleChangeText, + onChangeMode: this.handleChangeMode, + onError: this.handleError, + mode: 'tree', + modes: ['text', 'code', 'tree', 'form', 'view'], + keyBindings: { + compact: ['Ctrl+\\', 'Command+\\', 'Ctrl+Alt+1', 'Command+Option+1'], + format: ['Ctrl+Shift+\\', 'Command+Shift+\\', 'Ctrl+Alt+2', 'Command+Option+2'], + duplicate: ['Ctrl+D', 'Ctrl+Shift+D', 'Command+D', 'Command+Shift+D'] + }, + indentation: 4, + escapeUnicode: true, + history: true, + search: true, + + expand: expandAll + } + } + + } + render() { + return
+
+ + + + + + + + +
+
+ +
+
+ } + + handleSetJson = () => { + this.setState({ + options: setIn(this.state.options, ['json'], largeJson) + }) + } + + handleGetJson = () => { + // FIXME: get updating json in the state working + const json = this.state.options.json + alert(JSON.stringify(json, null, 2)) + } + + handleSetMode = (event) => { + const mode = event.target.value + this.setState({ + options: setIn(this.state.options, ['mode'], mode) + }) + } + + handleToggleLogging = (event) => { + const logging = event.target.checked + this.setState({ logging }) + } + + handleToggleJSONSchema = (event) => { + const s = event.target.checked ? schema : null + this.setState({ + options: setIn(this.state.options, ['schema'], s) + }) + } + + handleChange = (json) => { + this.log('onChange json=', json) + // FIXME: update the json in the state (after JSONEditor neatly updates it instead of generating new json every time + // this.setState({ + // options: setIn(this.state.options, ['json'], json) + // }) + } + + handleChangeText = (text) => { + this.log('onChangeText', text) + } + + handlePatch = (patch, revert) => { + this.log('onPatch patch=', patch, ', revert=', revert) + window.patch = patch + window.revert = revert + } + + handlePatchText = (patch, revert) => { + // FIXME: implement onPatchText + this.log('onPatchText patch=', patch, ', revert=', revert) + } + + handleChangeMode = (mode, prevMode) => { + this.log('switched mode from', prevMode, 'to', mode) + + this.setState({ + options: setIn(this.state.options, ['mode'], mode) + }) + } + + handleError = (err) => { + console.error(err) + alert(err) + } + + log (...args) { + if (this.state.logging) { + console.log(...args) + } + } +} + +export default App diff --git a/src/demo/Demo.scss b/src/demo/Demo.scss new file mode 100644 index 0000000..4a2388b --- /dev/null +++ b/src/demo/Demo.scss @@ -0,0 +1,22 @@ + +body, input, select { + font-family: sans-serif; + font-size: 11pt; +} + +.demo { + .menu { + margin: 20px 0; + + button, label { + margin-right: 10px; + } + } + + .contents { + height: 400px; + width: 100%; + max-width : 800px; + } +} + diff --git a/src/demo/Demo.test.js b/src/demo/Demo.test.js new file mode 100644 index 0000000..f588a62 --- /dev/null +++ b/src/demo/Demo.test.js @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Demo from './Demo'; + + + +test('renders without crashing', () => { + const div = document.createElement('div'); + ReactDOM.render(, div); +}); diff --git a/src/resources/largeJson.js b/src/demo/resources/largeJson.js similarity index 99% rename from src/resources/largeJson.js rename to src/demo/resources/largeJson.js index 9124c0f..144681b 100644 --- a/src/resources/largeJson.js +++ b/src/demo/resources/largeJson.js @@ -1,4 +1,4 @@ -const largeJson = { +export const largeJson = { "version": "1.0", "encoding": "UTF-8", "feed": { diff --git a/src/develop.html b/src/demo/vanilla_demo.html similarity index 95% rename from src/develop.html rename to src/demo/vanilla_demo.html index 55f8855..fb9b1c0 100644 --- a/src/develop.html +++ b/src/demo/vanilla_demo.html @@ -2,12 +2,12 @@ - Develop JSONEditor + JSONEditor vanilla demo - + @@ -16,7 +16,7 @@ font-family: sans-serif; font-size: 11pt; } - #container { + #editor { height: 400px; width: 100%; max-width : 800px; @@ -41,7 +41,7 @@

@@ -53,7 +53,7 @@ const error = console.error return function(exception) { - if ((exception + '').indexOf('Warning: A component is `contentEditable`') != 0) { + if ((exception + '').indexOf('Warning: A component is `contentEditable`') !== 0) { error.apply(console, arguments) } } diff --git a/src/flow/LessModule.js b/src/flow/LessModule.js deleted file mode 100644 index 37d49d3..0000000 --- a/src/flow/LessModule.js +++ /dev/null @@ -1,2 +0,0 @@ -// @flow -declare export default string diff --git a/src/index.js b/src/index.js index 4ca6164..37283c1 100644 --- a/src/index.js +++ b/src/index.js @@ -1,277 +1,6 @@ -import React, { createElement as h, Component } from 'react' -import ReactDOM, { render, unmountComponentAtNode} from 'react-dom' -import JSONEditor from './components/JSONEditor' -import CodeMode from './components/CodeMode' -import TextMode from './components/TextMode' -import TreeMode from './components/TreeMode' -import { compileJSONPointer, parseJSONPointer } from './eson' +import React from 'react'; +import ReactDOM from 'react-dom'; -import '!style!css!less!./jsoneditor.less' +import Demo from './demo/Demo'; -const modes = { - code: CodeMode, - form: TreeMode, - text: TextMode, - tree: TreeMode, - view: TreeMode -} - -/** - * Create a new json editor - * @param {HTMLElement} container - * @param {Options} options - * @return {Object} - * @constructor - */ -function jsoneditor (container, options = {}) { - if (arguments.length > 2) { - throw new Error ('Passing JSON via the constructor has been deprecated. ' + - 'Please pass JSON via editor.set(json).') - } - - const editor = { - isJSONEditor: true, - - _container: container, - _options: options, - _schema: null, - _modes: modes, - _mode: null, - _component: null - } - - /** - * Set JSON object in editor - * @param {Object | Array | string | number | boolean | null} json JSON data - * @param {SetOptions} [options] - */ - editor.set = function (json, options = {}) { - // TODO: remove options from editor.set, move them to global options instead - editor._component.set(json, options) - } - - /** - * Get JSON from the editor - * @returns {Object | Array | string | number | boolean | null} json - */ - editor.get = function () { - return editor._component.get() - } - - /** - * Set a string containing a JSON document - * @param {string} text - */ - editor.setText = function (text) { - editor._component.setText(text) - } - - /** - * Get the JSON document as text - * @return {string} text - */ - editor.getText = function () { - return editor._component.getText() - } - - /** - * Format the json. - * Only applicable for mode 'text' and 'code' (in other modes nothing will - * happen) - */ - editor.format = function () { - const formatted = TextMode.format(editor._component.getText(), TextMode.getIndentation(this.props)) - editor._component.setText(formatted) - - // TODO: test whether this doesn't destroy the current state - } - - /** - * Compact the json. - * Only applicable for mode 'text' and 'code' (in other modes nothing will - * happen) - */ - editor.compact = function () { - const compacted = TextMode.compact(editor._component.getText()) - editor._component.setText(compacted) - - // TODO: test whether this doesn't destroy the current state - } - - /** - * Set a JSON schema for validation of the JSON object. - * To remove the schema, call JSONEditor.setSchema(null) - * @param {Object | null} schema - */ - editor.setSchema = function (schema) { - editor._schema = schema || null - editor._component.setSchema(schema) - } - - /** - * Expand one or multiple objects or arrays. - * - * Example usage: - * - * // expand one item at a specific path - * editor.expand(['foo', 1, 'bar']) - * - * // expand all items nested at a maximum depth of 2 - * editor.expand(function (path) { - * return path.length <= 2 - * }) - * - * @param {Path | function (path: Path) : boolean} callback - */ - editor.expand = function (callback) { - editor._component.expand(callback) - } - - /** - * Collapse one or multiple objects or arrays - * - * Example usage: - * - * // collapse one item at a specific path - * editor.collapse(['foo', 1, 'bar']) - * - * // collapse all items nested deeper than 2 - * editor.collapse(function (path) { - * return path.length > 2 - * }) - * - * @param {Path | function (path: Path) : boolean} callback - */ - editor.collapse = function (callback) { - editor._component.collapse(callback) - } - - /** - * Apply a JSONPatch to the current JSON document - * @param {Array} actions JSONPatch actions - * @return {Array} Returns a JSONPatch to revert the applied patch - */ - editor.patch = function (actions) { - return editor._component.patch(actions) - } - - /** - * Change the mode of the editor - * @param {'tree' | 'text'} mode - */ - editor.setMode = function (mode) { - // TODO: strongly simplify .setMode, no error handling or logic here - - if (mode === editor._mode) { - // mode stays the same. do nothing - return - } - - let success = false - let initialChildCount = editor._container.children.length - let component = null - try { - // find the constructor for the selected mode - const constructor = editor._modes[mode] - if (!constructor) { - throw new Error('Unknown mode "' + mode + '". ' + - 'Choose from: ' + Object.keys(modes).join(', ')) - } - - function handleChangeMode (mode) { - // we execute editor.setMode on the next tick, after the click event - // has been finished. This is a workaround for preact which does not - // neatly replace a rendered app whilst the event is still being handled. - setTimeout(() => { - const prevMode = editor._mode - - editor.setMode(mode) - - if (editor._options.onChangeMode) { - editor._options.onChangeMode(mode, prevMode) - } - }) - } - - function handleError (err) { - if (editor._options && editor._options.onError) { - editor._options.onError(err) - } - else { - console.error(err) - } - } - - // create new component - component = render( - h(constructor, { - ...options, - mode, - onChangeMode: handleChangeMode, - onError: handleError - }), - editor._container) - - // apply JSON schema (if any) - try { - component.setSchema(editor._schema) - } - catch (err) { - handleError(err) - } - - // set JSON (this can throw an error) - const text = editor._component ? editor._component.getText() : '{}' - component.setText(text) - - // when setText didn't fail, we will reach this point - success = true - } - catch (err) { - console.error(err) - } - finally { - if (success) { - editor._mode = mode - editor._component = component - } - else { - // TODO: fall back to text mode when loading code mode failed? - - // remove the just created component if an error occurred during construction - // (for example when construction or setText failed) - const childCount = editor._container.children.length - if (childCount !== initialChildCount) { - editor._container.removeChild(editor._container.lastChild) - } - } - } - } - - /** - * Remove the editor from the DOM and clean up workers - */ - editor.destroy = function () { - unmountComponentAtNode(editor._container) - } - - const mode = options && options.mode || (options.modes && options.modes[0]) || 'tree'; - editor.setMode(mode) - - return editor -} - -// expose util functions -jsoneditor.utils = { - compileJSONPointer, - parseJSONPointer -} - -// expose React component -jsoneditor.JSONEditor = JSONEditor - -// expose React itself -jsoneditor.React = React -jsoneditor.ReactDOM = ReactDOM - -module.exports = jsoneditor +ReactDOM.render(, document.getElementById('root')); diff --git a/src/actions.js b/src/jsoneditor/actions.js similarity index 97% rename from src/actions.js rename to src/jsoneditor/actions.js index 84ca32e..4657c76 100644 --- a/src/actions.js +++ b/src/jsoneditor/actions.js @@ -6,10 +6,10 @@ import { compileJSONPointer, esonToJson, findNextProp, pathsFromSelection, findRootPath, findSelectionIndices } from './eson' -import { cloneWithSymbols, getIn, setIn } from './utils/immutabilityHelpers' +import { getIn } from './utils/immutabilityHelpers' import { findUniqueName } from './utils/stringUtils' import { isObject, stringConvert } from './utils/typeUtils' -import { compareAsc, compareDesc, strictShallowEqual } from './utils/arrayUtils' +import { compareAsc, compareDesc } from './utils/arrayUtils' /** @@ -138,7 +138,7 @@ export function duplicate (eson, selection) { * * @param {ESON} eson * @param {Path} path - * @param {Array.<{name?: string, value: JSONType, type?: ESONType}>} values + * @param {Array.<{name?: string, value: JSON, type?: ESONType}>} values * @return {Array} */ export function insertBefore (eson, path, values) { // TODO: find a better name and define datastructure for values @@ -146,7 +146,7 @@ export function insertBefore (eson, path, values) { // TODO: find a better name const parent = getIn(eson, parentPath) if (parent[META].type === 'Array') { - const startIndex = parseInt(last(path)) + const startIndex = parseInt(last(path), 10) return values.map((entry, offset) => ({ op: 'add', path: compileJSONPointer(parentPath.concat(startIndex + offset)), diff --git a/src/jsoneditor/actions.test.js b/src/jsoneditor/actions.test.js new file mode 100644 index 0000000..f82cfe2 --- /dev/null +++ b/src/jsoneditor/actions.test.js @@ -0,0 +1,81 @@ +'use strict' + +import { sort } from './actions' +import { assertDeepEqualEson } from './utils/assertDeepEqualEson' +import {esonToJson, expandOne, jsonToEson, META} from './eson' +import {patchEson} from './patchEson' + +// TODO: test changeValue +// TODO: test changeProperty +// TODO: test changeType (or cleanup the function) +// TODO: test duplicate +// TODO: test insertBefore +// TODO: test replace +// TODO: test append +// TODO: test remove +// TODO: test removeAll + +it('sort root Array', () => { + const eson = jsonToEson([1,3,2]) + + assertDeepEqualEson(patchEson(eson, sort(eson, [])).data, jsonToEson([1,2,3])) + assertDeepEqualEson(patchEson(eson, sort(eson, [], 'asc')).data, jsonToEson([1,2,3])) + assertDeepEqualEson(patchEson(eson, sort(eson, [], 'desc')).data, jsonToEson([3,2,1])) +}) + +it('sort nested Array', () => { + const eson = jsonToEson({arr: [4,1,8,5,3,9,2,7,6]}) + const actual = patchEson(eson, sort(eson, ['arr'])).data + const expected = jsonToEson({arr: [1,2,3,4,5,6,7,8,9]}) + assertDeepEqualEson(actual, expected) +}) + +it('sort nested Array reverse order', () => { + // no order provided -> order ascending, but if nothing changes, order descending + const eson = jsonToEson({arr: [1,2,3,4,5,6,7,8,9]}) + const actual = patchEson(eson, sort(eson, ['arr'])).data + const expected = jsonToEson({arr: [9,8,7,6,5,4,3,2,1]}) + assertDeepEqualEson(actual, expected) + + // id's and META should be the same + expect(actual.arr[META].id).toEqual(eson.arr[META].id) + expect(actual.arr[7][META].id).toEqual(eson.arr[1][META].id) +}) + + +it('sort root Object', () => { + const eson = jsonToEson({c: 2, b: 3, a:4}) + + expect(patchEson(eson, sort(eson, [])).data[META].props).toEqual(['a', 'b', 'c']) + expect(patchEson(eson, sort(eson, [], 'asc')).data[META].props).toEqual(['a', 'b', 'c']) + expect(patchEson(eson, sort(eson, [], 'desc')).data[META].props).toEqual(['c', 'b', 'a']) +}) + +it('sort nested Object', () => { + const eson = jsonToEson({obj: {c: 2, b: 3, a:4}}) + eson.obj[META].expanded = true + eson.obj.c[META].expanded = true + + const actual = patchEson(eson, sort(eson, ['obj'])).data + + // should keep META data + expect(actual.obj[META].props).toEqual(['a', 'b', 'c']) + expect(actual.obj[META].expanded).toEqual(true) + expect(actual.obj.c[META].expanded).toEqual(true) + expect(actual.obj[META].id).toEqual(eson.obj[META].id) + expect(actual.obj.a[META].id).toEqual(eson.obj.a[META].id) + expect(actual.obj.b[META].id).toEqual(eson.obj.b[META].id) + expect(actual.obj.c[META].id).toEqual(eson.obj.c[META].id) + + // asc, desc + expect(patchEson(eson, sort(eson, ['obj'])).data.obj[META].props).toEqual(['a', 'b', 'c']) + expect(patchEson(eson, sort(eson, ['obj'], 'asc')).data.obj[META].props).toEqual(['a', 'b', 'c']) + expect(patchEson(eson, sort(eson, ['obj'], 'desc')).data.obj[META].props).toEqual(['c', 'b', 'a']) +}) + +it('sort nested Object (larger)', () => { + const eson = jsonToEson({obj: {h:1, c:1, e:1, d:1, g:1, b:1, a:1, f:1}}) + const actual = patchEson(eson, sort(eson, ['obj'])).data + + expect(actual.obj[META].props).toEqual(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) +}) diff --git a/src/assets/ace/index.js b/src/jsoneditor/assets/ace/index.js similarity index 100% rename from src/assets/ace/index.js rename to src/jsoneditor/assets/ace/index.js diff --git a/src/jsoneditor/assets/ace/theme-jsoneditor.js b/src/jsoneditor/assets/ace/theme-jsoneditor.js new file mode 100644 index 0000000..3eba3c0 --- /dev/null +++ b/src/jsoneditor/assets/ace/theme-jsoneditor.js @@ -0,0 +1,144 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +window.ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { + +exports.isDark = false +exports.cssClass = 'ace-jsoneditor' +exports.cssText = `.ace-jsoneditor .ace_gutter { +background: #ebebeb; +color: #333 +} + +.ace-jsoneditor.ace_editor { +font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; +line-height: 1.3; +} +.ace-jsoneditor .ace_print-margin { +width: 1px; +background: #e8e8e8 +} +.ace-jsoneditor .ace_scroller { +background-color: #FFFFFF +} +.ace-jsoneditor .ace_text-layer { +color: gray +} +.ace-jsoneditor .ace_variable { +color: #1a1a1a +} +.ace-jsoneditor .ace_cursor { +border-left: 2px solid #000000 +} +.ace-jsoneditor .ace_overwrite-cursors .ace_cursor { +border-left: 0px; +border-bottom: 1px solid #000000 +} +.ace-jsoneditor .ace_marker-layer .ace_selection { +background: lightgray +} +.ace-jsoneditor.ace_multiselect .ace_selection.ace_start { +box-shadow: 0 0 3px 0px #FFFFFF; +border-radius: 2px +} +.ace-jsoneditor .ace_marker-layer .ace_step { +background: rgb(255, 255, 0) +} +.ace-jsoneditor .ace_marker-layer .ace_bracket { +margin: -1px 0 0 -1px; +border: 1px solid #BFBFBF +} +.ace-jsoneditor .ace_marker-layer .ace_active-line { +background: #FFFBD1 +} +.ace-jsoneditor .ace_gutter-active-line { +background-color : #dcdcdc +} +.ace-jsoneditor .ace_marker-layer .ace_selected-word { +border: 1px solid lightgray +} +.ace-jsoneditor .ace_invisible { +color: #BFBFBF +} +.ace-jsoneditor .ace_keyword, +.ace-jsoneditor .ace_meta, +.ace-jsoneditor .ace_support.ace_constant.ace_property-value { +color: #AF956F +} +.ace-jsoneditor .ace_keyword.ace_operator { +color: #484848 +} +.ace-jsoneditor .ace_keyword.ace_other.ace_unit { +color: #96DC5F +} +.ace-jsoneditor .ace_constant.ace_language { +color: darkorange +} +.ace-jsoneditor .ace_constant.ace_numeric { +color: red +} +.ace-jsoneditor .ace_constant.ace_character.ace_entity { +color: #BF78CC +} +.ace-jsoneditor .ace_invalid { +color: #FFFFFF; +background-color: #FF002A; +} +.ace-jsoneditor .ace_fold { +background-color: #AF956F; +border-color: #000000 +} +.ace-jsoneditor .ace_storage, +.ace-jsoneditor .ace_support.ace_class, +.ace-jsoneditor .ace_support.ace_function, +.ace-jsoneditor .ace_support.ace_other, +.ace-jsoneditor .ace_support.ace_type { +color: #C52727 +} +.ace-jsoneditor .ace_string { +color: green +} +.ace-jsoneditor .ace_comment { +color: #BCC8BA +} +.ace-jsoneditor .ace_entity.ace_name.ace_tag, +.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { +color: #606060 +} +.ace-jsoneditor .ace_markup.ace_underline { +text-decoration: underline +} +.ace-jsoneditor .ace_indent-guide { +background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y +}` + +var dom = acequire('../lib/dom') +dom.importCssString(exports.cssText, exports.cssClass) +}) diff --git a/src/assets/jsonlint/README.md b/src/jsoneditor/assets/jsonlint/README.md similarity index 100% rename from src/assets/jsonlint/README.md rename to src/jsoneditor/assets/jsonlint/README.md diff --git a/src/assets/jsonlint/jsonlint.js b/src/jsoneditor/assets/jsonlint/jsonlint.js similarity index 81% rename from src/assets/jsonlint/jsonlint.js rename to src/jsoneditor/assets/jsonlint/jsonlint.js index 36952fb..8d38c60 100644 --- a/src/assets/jsonlint/jsonlint.js +++ b/src/jsoneditor/assets/jsonlint/jsonlint.js @@ -13,7 +13,7 @@ var parser = (function(){ var $0 = $$.length - 1; switch (yystate) { case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") + this.$ = yytext.replace(/\\(\\|")/g, "$1") .replace(/\\n/g,'\n') .replace(/\\r/g,'\r') .replace(/\\t/g,'\t') @@ -30,8 +30,8 @@ var parser = (function(){ break; case 5:this.$ = false; break; - case 6:return this.$ = $$[$0-1]; - break; + case 6: + return this.$ = $$[$0-1]; case 13:this.$ = {}; break; case 14:this.$ = $$[$0-1]; @@ -50,6 +50,8 @@ var parser = (function(){ break; case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); break; + default: + break; } }, table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], @@ -75,7 +77,7 @@ var parser = (function(){ this.lexer.setInput(input); this.lexer.yy = this.yy; this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') + if (typeof this.lexer.yylloc === 'undefined') this.lexer.yylloc = {}; var yyloc = this.lexer.yylloc; lstack.push(yyloc); @@ -99,7 +101,7 @@ var parser = (function(){ return token; } - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; + var symbol, preErrorSymbol, state, action, r, yyval={},p,len,newState, expected; while (true) { // retreive state number from top of stack state = stack[stack.length-1]; @@ -115,60 +117,60 @@ var parser = (function(){ } // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } + if (typeof action === 'undefined' || !action.length || !action[0]) { - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error + if (!recovering) { + // Report error + expected = []; + for (p in table[state]) if (this.terminals_[p] && p > 2) { + expected.push("'"+this.terminals_[p]+"'"); } + var errStr = ''; + if (this.lexer.showPosition) { + errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; + } else { + errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + + (symbol === 1 /*EOF*/ ? "end of input" : + ("'"+(this.terminals_[symbol] || symbol)+"'")); + } + this.parseError(errStr, + {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); + } + + // just recovered from another error + if (recovering === 3) { + if (symbol === EOF) { + throw new Error(errStr || 'Parsing halted.'); + } + + // discard current lookahead and grab another + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + symbol = lex(); + } + + // try to recover from error + while (1) { + // check for error recovery rule in this state + if ((TERROR.toString()) in table[state]) { + break; + } + if (state === 0) { + throw new Error(errStr || 'Parsing halted.'); + } + popStack(1); + state = stack[stack.length-1]; + } + + preErrorSymbol = symbol; // save the lookahead token + symbol = TERROR; // insert generic error symbol as new lookahead + state = stack[stack.length-1]; + action = table[state] && table[state][TERROR]; + recovering = 3; // allow 3 real symbols to be shifted before reporting a new error + } // this shouldn't happen, unless resolve defaults are off if (action[0] instanceof Array && action.length > 1) { @@ -235,11 +237,11 @@ var parser = (function(){ case 3: // accept return true; + + default: + return true; } - } - - return true; }}; /* Jison generated lexer */ var lexer = (function(){ @@ -308,7 +310,6 @@ var parser = (function(){ match, tempMatch, index, - col, lines; if (!this._more) { this.yytext = ''; @@ -374,35 +375,22 @@ var parser = (function(){ lexer.options = {}; lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - var YYSTATE=YY_START switch($avoiding_name_collisions) { - case 0:/* skip whitespace */ - break; + case 0: break; /* skip whitespace */ case 1:return 6 - break; case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 - break; case 3:return 17 - break; case 4:return 18 - break; case 5:return 23 - break; case 6:return 24 - break; case 7:return 22 - break; case 8:return 21 - break; case 9:return 10 - break; case 10:return 11 - break; case 11:return 8 - break; case 12:return 14 - break; case 13:return 'INVALID' + default: break; } }; diff --git a/src/assets/jump.js/README.md b/src/jsoneditor/assets/jump.js/README.md similarity index 100% rename from src/assets/jump.js/README.md rename to src/jsoneditor/assets/jump.js/README.md diff --git a/src/assets/jump.js/src/easing.js b/src/jsoneditor/assets/jump.js/src/easing.js similarity index 100% rename from src/assets/jump.js/src/easing.js rename to src/jsoneditor/assets/jump.js/src/easing.js diff --git a/src/assets/jump.js/src/jump.js b/src/jsoneditor/assets/jump.js/src/jump.js similarity index 99% rename from src/assets/jump.js/src/jump.js rename to src/jsoneditor/assets/jump.js/src/jump.js index 63b8e8f..8b3eb3c 100644 --- a/src/assets/jump.js/src/jump.js +++ b/src/jsoneditor/assets/jump.js/src/jump.js @@ -153,6 +153,8 @@ const jumper = () => { element = document.querySelector(target) stop = top(element) break + + default: } // resolve scroll distance, accounting for offset @@ -169,6 +171,8 @@ const jumper = () => { case 'function': duration = options.duration(distance) break + + default: } // start the loop if we're not already scrolling diff --git a/src/components/Ace.js b/src/jsoneditor/components/Ace.js similarity index 91% rename from src/components/Ace.js rename to src/jsoneditor/components/Ace.js index 1a25c4b..77e4855 100644 --- a/src/components/Ace.js +++ b/src/jsoneditor/components/Ace.js @@ -1,7 +1,6 @@ -// @flow - import { createElement as h, Component } from 'react' import ace from '../assets/ace' +import PropTypes from 'prop-types' /** * Usage: @@ -14,6 +13,12 @@ import ace from '../assets/ace' * */ export default class Ace extends Component { + + static propTypes = { + value: PropTypes.string.isRequired, + indentation: PropTypes.number + } + aceEditor = null settingValue = false // Used to prevent Ace from emitting onChange event whilst we're setting a value programmatically @@ -73,14 +78,15 @@ export default class Ace extends Component { } } - componentWillReceiveProps (nextProps: {value: string, indentation?: number}) { + componentWillReceiveProps (nextProps) { if (this.aceEditor && nextProps.value !== this.aceEditor.getValue()) { this.settingValue = true this.aceEditor.setValue(nextProps.value, -1) this.settingValue = false } - if (this.aceEditor && nextProps.indentation != undefined) { + if (this.aceEditor && + (typeof nextProps.indentation === 'number' || typeof nextProps.indentation === 'string')) { this.aceEditor.getSession().setTabSize(this.props.indentation) } diff --git a/src/components/CodeMode.js b/src/jsoneditor/components/CodeMode.js similarity index 83% rename from src/components/CodeMode.js rename to src/jsoneditor/components/CodeMode.js index 7b2ac0d..6805bb2 100644 --- a/src/components/CodeMode.js +++ b/src/jsoneditor/components/CodeMode.js @@ -1,6 +1,4 @@ -// @flow - -import { createElement as h, Component } from 'react' +import { createElement as h } from 'react' import TextMode from './TextMode' import Ace from './Ace' @@ -30,13 +28,12 @@ import Ace from './Ace' * */ export default class CodeMode extends TextMode { - constructor (props: {options: {onLoadAce: Function, indentation: number}}) { - super(props) - this.state = { - text: '{}', - compiledSchema: null - } + // TODO: work out propTypes + + state = { + text: '{}', + compiledSchema: null } render () { diff --git a/src/components/JSONEditor.js b/src/jsoneditor/components/JSONEditor.js similarity index 52% rename from src/components/JSONEditor.js rename to src/jsoneditor/components/JSONEditor.js index 9ed8cb1..3a6eb59 100644 --- a/src/components/JSONEditor.js +++ b/src/jsoneditor/components/JSONEditor.js @@ -1,12 +1,19 @@ -// @flow - -import { createElement as h, Component } from 'react' -import PropTypes from 'prop-types' +import { createElement as h, PureComponent } from 'react' import CodeMode from './CodeMode' import TextMode from './TextMode' import TreeMode from './TreeMode' -export default class JSONEditor extends Component { +import './jsoneditor.css' + +const DEFAULT_MODE = 'tree' + +export default class JSONEditor extends PureComponent { + + // TODO: work out prop types + // static propTypes = { + // ... + // } + static modeConstructors = { code: CodeMode, form: TreeMode, @@ -15,18 +22,14 @@ export default class JSONEditor extends Component { view: TreeMode } - state = { - mode: 'tree' - } - render () { - const mode = this.state.mode // We use mode from state, not from props! + const mode = this.props.mode || DEFAULT_MODE // We use mode from state, not from props! const ModeConstructor = JSONEditor.modeConstructors[mode] if (!ModeConstructor) { // TODO: show an on screen error instead of throwing an error? throw new Error('Unknown mode "' + mode + '". ' + - 'Choose from: ' + Object.keys(this.props.modes).join(', ')) + 'Choose from: ' + Object.keys(this.props.modes).join(', ')) // FIXME: this.props.modes may be undefined } return h(ModeConstructor, { @@ -37,19 +40,7 @@ export default class JSONEditor extends Component { }) } - componentWillMount () { - if (this.props.mode) { - this.setState({ mode: this.props.mode }) - } - } - - componentWillReceiveProps (nextProps: {mode?: string}) { - if (nextProps.mode !== this.props.mode) { - this.setState({ mode: nextProps.mode }) - } - } - - handleError = (err: Error) => { + handleError = (err) => { if (this.props.onError) { this.props.onError(err) } @@ -58,17 +49,11 @@ export default class JSONEditor extends Component { } } - handleChangeMode = (mode: string) => { - const prevMode = this.state.mode - - this.setState({ mode }) + handleChangeMode = (mode) => { + console.log('changeMode', mode, this.props.onChangeMode) if (this.props.onChangeMode) { - this.props.onChangeMode(mode, prevMode) + this.props.onChangeMode(mode, this.props.mode) } } } - -JSONEditor.propTypes = { - mode: PropTypes.string -} diff --git a/src/components/JSONNode.js b/src/jsoneditor/components/JSONNode.js similarity index 97% rename from src/components/JSONNode.js rename to src/jsoneditor/components/JSONNode.js index 3e9df35..eb99c08 100644 --- a/src/components/JSONNode.js +++ b/src/jsoneditor/components/JSONNode.js @@ -1,5 +1,3 @@ -// @flow weak - import { createElement as h, PureComponent } from 'react' import initial from 'lodash/initial' @@ -10,8 +8,6 @@ import { getInnerText, insideRect, findParentWithAttribute } from '../utils/domU import { stringConvert, valueType, isUrl } from '../utils/typeUtils' import { compileJSONPointer, META, SELECTED, SELECTED_END, SELECTED_AFTER, SELECTED_BEFORE } from '../eson' -import type { ESON, SearchResultStatus, Path } from '../types' - // TODO: rename SELECTED, SELECTED_END, etc to AREA_*? It's used for both selection and hovering const SELECTED_CLASS_NAMES = { [SELECTED]: ' jsoneditor-selected', @@ -254,7 +250,15 @@ export default class JSONNode extends PureComponent { } // TODO: simplify the method renderProperty - renderProperty (prop?: String, index?: number, eson: ESON, options: {escapeUnicode: boolean, isPropertyEditable: (Path) => boolean}) { + + /** + * Render a property field of a JSONNode + * @param {string} [prop] + * @param {string} [index] + * @param {ESON} eson + * @param {{escapeUnicode: boolean, isPropertyEditable: function(Path) : boolean}} options + */ + renderProperty (prop, index, eson, options) { const isIndex = typeof index === 'number' const isProp = typeof prop === 'string' @@ -281,6 +285,7 @@ export default class JSONNode extends PureComponent { key: 'property', className: 'jsoneditor-property' + emptyClassName + searchClassName, contentEditable: 'true', + suppressContentEditableWarning: true, spellCheck: 'false', onBlur: this.handleChangeProperty }, escapedPropName) @@ -311,6 +316,7 @@ export default class JSONNode extends PureComponent { className: JSONNode.getValueClass(type, itsAnUrl, isEmpty) + JSONNode.getSearchResultClass(searchResult), contentEditable: 'true', + suppressContentEditableWarning: true, spellCheck: 'false', onBlur: this.handleChangeValue, onInput: this.updateValueStyling, @@ -420,8 +426,9 @@ export default class JSONNode extends PureComponent { /** * Get the css style given a search result type + * @param {SearchResultStatus} [searchResultStatus] */ - static getSearchResultClass (searchResultStatus?: SearchResultStatus) { + static getSearchResultClass (searchResultStatus) { if (searchResultStatus === 'active') { return ' jsoneditor-highlight-active' } diff --git a/src/components/JSONNodeForm.js b/src/jsoneditor/components/JSONNodeForm.js similarity index 64% rename from src/components/JSONNodeForm.js rename to src/jsoneditor/components/JSONNodeForm.js index 221a2bd..25f3faf 100644 --- a/src/components/JSONNodeForm.js +++ b/src/jsoneditor/components/JSONNodeForm.js @@ -1,9 +1,5 @@ -// @flow - import JSONNode from './JSONNode' -import type { ESON, Path } from '../types' - /** * JSONNodeForm * @@ -21,11 +17,17 @@ export default class JSONNodeForm extends JSONNode { return null } - // render a readonly property - renderProperty (prop?: String, index?: number, eson: ESON, options: {escapeUnicode: boolean, isPropertyEditable: (Path) => boolean}) { + /** + * Render a property field of a JSONNode + * @param {string} [prop] + * @param {string} [index] + * @param {ESON} eson + * @param {{escapeUnicode: boolean, isPropertyEditable: function(Path) : boolean}} options + */ + renderProperty (prop, index, eson, options) { const formOptions = Object.assign({}, options, { isPropertyEditable }) - return JSONNode.prototype.renderProperty.call(this, prop, index, data, formOptions) + return JSONNode.prototype.renderProperty.call(this, prop, index, eson, formOptions) } } diff --git a/src/components/JSONNodeView.js b/src/jsoneditor/components/JSONNodeView.js similarity index 100% rename from src/components/JSONNodeView.js rename to src/jsoneditor/components/JSONNodeView.js diff --git a/src/components/TextMode.js b/src/jsoneditor/components/TextMode.js similarity index 95% rename from src/components/TextMode.js rename to src/jsoneditor/components/TextMode.js index 264a03a..3e810c2 100644 --- a/src/components/TextMode.js +++ b/src/jsoneditor/components/TextMode.js @@ -1,5 +1,3 @@ -// @flow weak - import { createElement as h, Component } from 'react' import Ajv from 'ajv' import { parseJSON } from '../utils/jsonUtils' @@ -45,22 +43,17 @@ const AJV_OPTIONS = { * */ export default class TextMode extends Component { - state: Object + + state = { + text: '{}', + compiledSchema: null + } keyDownActions = { 'format': (event) => this.handleCompact(), 'compact': (event) => this.handleFormat() } - constructor (props) { - super(props) - - this.state = { - text: '{}', - compiledSchema: null - } - } - componentWillMount () { this.applyProps(this.props, {}) } @@ -222,7 +215,7 @@ export default class TextMode extends Component { */ setSchema (schema) { if (schema) { - const ajv = this.props.ajv || Ajv && Ajv(AJV_OPTIONS) + const ajv = this.props.ajv || (Ajv && Ajv(AJV_OPTIONS)) if (!ajv) { throw new Error('Cannot validate JSON: ajv not available. ' + @@ -242,9 +235,11 @@ export default class TextMode extends Component { /** * Get the configured indentation. When not configured, returns the default value 2 + * @param {{indentation?: number}} props + * @return {number} */ - static getIndentation (props?: {indentation?: number}) : number { - return props && props.indentation || 2 + static getIndentation (props) { + return (props && props.indentation) || 2 } static format (text, indentation) { @@ -308,8 +303,9 @@ export default class TextMode extends Component { /** * Apply new text to the state, and emit an onChangeText event if there is a change + * @param {string} text */ - handleChangeText = (text: string) => { + handleChangeText = (text) => { if (this.props.onChangeText && text !== this.state.text) { const appliedText = this.setText(text) this.props.onChangeText(appliedText) @@ -364,8 +360,10 @@ export default class TextMode extends Component { /** * Set a string containing a JSON document + * @param {string} text + * @return {string} */ - setText (text: string) : string { + setText (text) { const normalizedText = this.props.escapeUnicode ? escapeUnicodeChars(text) : text diff --git a/src/components/TreeMode.js b/src/jsoneditor/components/TreeMode.js similarity index 93% rename from src/components/TreeMode.js rename to src/jsoneditor/components/TreeMode.js index 082861a..2c9a934 100644 --- a/src/components/TreeMode.js +++ b/src/jsoneditor/components/TreeMode.js @@ -1,5 +1,3 @@ -// @flow weak - import { createElement as h, Component } from 'react' import isEqual from 'lodash/isEqual' import reverse from 'lodash/reverse' @@ -8,7 +6,7 @@ import Hammer from 'react-hammerjs' import jump from '../assets/jump.js/src/jump' import Ajv from 'ajv' -import { getIn, setIn, updateIn } from '../utils/immutabilityHelpers' +import { getIn, updateIn } from '../utils/immutabilityHelpers' import { parseJSON } from '../utils/jsonUtils' import { enrichSchemaError } from '../utils/schemaUtils' import { @@ -36,11 +34,6 @@ import { import { createFindKeyBinding } from '../utils/keyBindings' import { KEY_BINDINGS } from '../constants' -import type { - ESON, ESONPatch, Selection, ESONPointer, - Path -} from '../types' - const AJV_OPTIONS = { allErrors: true, verbose: true, @@ -52,19 +45,21 @@ const SEARCH_DEBOUNCE = 300 // milliseconds const SCROLL_DURATION = 400 // milliseconds export default class TreeMode extends Component { - id: number - state: Object + id = Math.round(Math.random() * 1e5) // TODO: create a uuid here? + + // TODO: define propTypes keyDownActions = null constructor (props) { super(props) - const json = this.props.json || {} - const expandCallback = this.props.expand || TreeMode.expandRoot - const eson = expand(jsonToEson(json), expandCallback) + // const json = this.props.json || {} + // const expandCallback = this.props.expand || TreeMode.expandRoot + // const eson = expand(jsonToEson(json), expandCallback) - this.id = Math.round(Math.random() * 1e5) // TODO: create a uuid here? + const json = {} + const eson = jsonToEson(json) this.keyDownActions = { 'up': this.moveUp, @@ -88,9 +83,10 @@ export default class TreeMode extends Component { json, eson, - history: [eson], + history: [], historyIndex: 0, + // TODO: use an event emitter instead? (like with vue.js) events: { onChangeProperty: this.handleChangeProperty, onChangeValue: this.handleChangeValue, @@ -157,11 +153,17 @@ export default class TreeMode extends Component { } // Apply json - if (nextProps.json !== currentProps.json) { + if (nextProps.json !== this.state.json) { // FIXME: merge meta data from existing eson + // FIXME: keep state as is + + const expandCallback = this.props.expand || TreeMode.expandRoot + const json = nextProps.json + const eson = expand(jsonToEson(json), expandCallback) + this.setState({ - json: nextProps.json, - eson: jsonToEson(nextProps.json) // FIXME: how to handle expand? + json, + eson }) // TODO: cleanup // this.patch([{ @@ -541,11 +543,20 @@ export default class TreeMode extends Component { }) } + /** + * Handle sorting a path + * @param {Path} path + * @param {string | null} [order] + */ handleSort = (path, order = null) => { this.handlePatch(sort(this.state.eson, path, order)) } - handleSelect = (selection: Selection) => { + /** + * Set selection + * @param {Selection} selection + */ + handleSelect = (selection) => { this.setState({ selection }) } @@ -710,7 +721,12 @@ export default class TreeMode extends Component { } } - findDataPathFromElement (element: Element) : Path | null { + /** + * Find JSON path from an HTML element + * @param {Element} element + * @return {Path | null} + */ + findDataPathFromElement (element) { const base = findBaseNode(element) const attr = base && base.getAttribute && base.getAttribute('data-path') @@ -718,14 +734,25 @@ export default class TreeMode extends Component { return attr ? parseJSONPointer(attr.replace(/\/-$/, '')) : null } - findESONPointerFromElement (element: Element) : ESONPointer { + /** + * Find ESON pointer from an HTML element + * @param {Element} element + * @return {ESONPointer | null} + */ + findESONPointerFromElement (element) { const path = this.findDataPathFromElement(element) - const area = element && element.getAttribute && element.getAttribute('data-area') || null + const area = (element && element.getAttribute && element.getAttribute('data-area')) || null return path ? { path, area } : null } - selectionFromESONPointer (pointer: ESONPointer) : Selection { + /** + * Get selection from an ESON pointer + * @param {ESONPointer} pointer + * @return {Selection} + */ + selectionFromESONPointer (pointer) { + // FIXME: does pointer have .area === 'after' ? if so adjust type defs if (pointer.area === 'after') { return {after: pointer.path} } @@ -755,8 +782,11 @@ export default class TreeMode extends Component { /** * Emit an onChange event when there is a listener for it. * @private + * @param {ESONPatch} patch + * @param {ESONPatch} revert + * @param {ESON} eson */ - emitOnChange (patch: ESONPatch, revert: ESONPatch, eson: ESON) { + emitOnChange (patch, revert, eson) { if (this.props.onPatch) { this.props.onPatch(patch, revert) } @@ -939,7 +969,7 @@ export default class TreeMode extends Component { // TODO: deduplicate this function, it's also implemented in TextMode setSchema (schema) { if (schema) { - const ajv = this.props.ajv || Ajv && Ajv(AJV_OPTIONS) + const ajv = (this.props.ajv) || (Ajv && Ajv(AJV_OPTIONS)) if (!ajv) { throw new Error('Cannot validate JSON: ajv not available. ' + diff --git a/src/img/description.txt b/src/jsoneditor/components/img/description.txt similarity index 100% rename from src/img/description.txt rename to src/jsoneditor/components/img/description.txt diff --git a/src/img/jsoneditor-icons.svg b/src/jsoneditor/components/img/jsoneditor-icons.svg similarity index 100% rename from src/img/jsoneditor-icons.svg rename to src/jsoneditor/components/img/jsoneditor-icons.svg diff --git a/src/jsoneditor/components/jsoneditor.css b/src/jsoneditor/components/jsoneditor.css new file mode 100644 index 0000000..b627dec --- /dev/null +++ b/src/jsoneditor/components/jsoneditor.css @@ -0,0 +1,670 @@ +/* schema error popover */ +.jsoneditor-schema-error { + position: relative; + /*@-webkit-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ + /*@-moz-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ + /*@-ms-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ } + .jsoneditor-schema-error .jsoneditor-popover { + background-color: #4c4c4c; + border-radius: 3px; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.4); + color: #fff; + display: none; + padding: 7px 10px; + position: absolute; + width: 200px; + z-index: 4; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above { + bottom: 32px; + left: -98px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below { + top: 32px; + left: -98px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left { + top: -7px; + right: 32px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right { + top: -7px; + left: 32px; } + .jsoneditor-schema-error .jsoneditor-popover:before { + border-right: 7px solid transparent; + border-left: 7px solid transparent; + content: ''; + display: block; + left: 50%; + margin-left: -7px; + position: absolute; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before { + border-top: 7px solid #4c4c4c; + bottom: -7px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before { + border-bottom: 7px solid #4c4c4c; + top: -7px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before { + border-left: 7px solid #4c4c4c; + border-top: 7px solid transparent; + border-bottom: 7px solid transparent; + content: ''; + top: 19px; + right: -14px; + left: inherit; + margin-left: inherit; + margin-top: -10px; + position: absolute; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before { + border-right: 7px solid #4c4c4c; + border-top: 7px solid transparent; + border-bottom: 7px solid transparent; + content: ''; + top: 19px; + left: -14px; + margin-left: inherit; + margin-top: -10px; + position: absolute; } + .jsoneditor-schema-error:hover .jsoneditor-popover, + .jsoneditor-schema-error:focus .jsoneditor-popover { + display: block; + -webkit-animation: fade-in .3s linear 1, move-up .3s linear 1; + -moz-animation: fade-in .3s linear 1, move-up .3s linear 1; + -ms-animation: fade-in .3s linear 1, move-up .3s linear 1; } + +@-webkit-keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@-moz-keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@-ms-keyframes fade-in { + .jsoneditor-schema-error from { + opacity: 0; } + .jsoneditor-schema-error to { + opacity: 1; } } + +.jsoneditor { + border: 1px solid #3883fa; + width: 100%; + height: 100%; + display: inline-flex; + flex-direction: column; + line-height: normal; } + +.jsoneditor-menu { + width: 100%; + box-sizing: border-box; + color: white; + background-color: #3883fa; + flex: 0 0 auto; } + .jsoneditor-menu button { + width: 26px; + height: 26px; + margin: 2px; + padding: 0; + border-radius: 2px; + border: 1px solid transparent; + background: transparent url("img/jsoneditor-icons.svg"); + color: white; + opacity: 0.8; + font-family: arial, sans-serif; + font-size: 10pt; } + .jsoneditor-menu button:hover { + background-color: rgba(255, 255, 255, 0.2); + border: 1px solid rgba(255, 255, 255, 0.4); } + .jsoneditor-menu button:focus, + .jsoneditor-menu button:active { + background-color: rgba(255, 255, 255, 0.3); } + .jsoneditor-menu button:disabled { + opacity: 0.5; } + .jsoneditor-menu .jsoneditor-vertical-menu-separator { + width: 8px; + display: inline-block; } + .jsoneditor-menu button.jsoneditor-expand-all { + background-position: 0 -120px; } + .jsoneditor-menu button.jsoneditor-collapse-all { + background-position: 0 -96px; } + .jsoneditor-menu button.jsoneditor-undo { + background-position: -24px -96px; } + .jsoneditor-menu button.jsoneditor-undo:disabled { + background-position: -24px -120px; } + .jsoneditor-menu button.jsoneditor-redo { + background-position: -48px -96px; } + .jsoneditor-menu button.jsoneditor-redo:disabled { + background-position: -48px -120px; } + .jsoneditor-menu button.jsoneditor-compact { + background-position: -72px -96px; } + .jsoneditor-menu button.jsoneditor-format { + background-position: -72px -120px; } + +.jsoneditor-contents { + width: 100%; + height: 100%; + min-height: 150px; + overflow: hidden; + padding: 0; + margin: 0; + flex: 1 1 auto; } + +.jsoneditor-tree-contents { + padding: 2px 0; + overflow: auto; } + +.jsoneditor-node { + position: relative; + font: 14px Arial; + display: inline-flex; + flex-direction: row; } + +.jsoneditor-node > div { + flex: 0 0 auto; } + +div.jsoneditor-list { + list-style-type: none; + padding-left: 20px; + margin: 0; + font-size: 0; } + +/* no left padding for the root div element */ +.jsoneditor-contents > div.jsoneditor-list { + padding-left: 2px; + padding-bottom: 24px; } + +.jsoneditor-property, +.jsoneditor-value, +.jsoneditor-readonly, +.jsoneditor-separator { + line-height: 20px; + font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; + font-size: 10pt; } + +.jsoneditor-property, +.jsoneditor-value, +.jsoneditor-readonly { + min-width: 24px; + word-break: normal; + padding: 0 5px; + color: #1A1A1A; + outline: none; } + +.jsoneditor-button-container { + font-size: 0; } + +.jsoneditor-property, +.jsoneditor-value { + border-radius: 1px; + flex: 1 1 auto !important; } + .jsoneditor-property p, + .jsoneditor-value p { + margin: 0; + padding: 0; } + +.jsoneditor-property:focus, +.jsoneditor-value:focus { + box-shadow: 0 0 3px 1px #008fd5; + z-index: 1; } + +.jsoneditor-property:hover, +.jsoneditor-value:hover { + background-color: rgba(0, 0, 0, 0.05); } + +.jsoneditor-mode-form .jsoneditor-property:hover { + background-color: inherit; } + +.jsoneditor-mode-view .jsoneditor-property:hover, +.jsoneditor-mode-view .jsoneditor-value:hover { + background-color: inherit; } + +.jsoneditor-separator { + color: #808080; } + +.jsoneditor-readonly { + color: #808080; } + +.jsoneditor-readonly:focus, +.jsoneditor-readonly:hover { + border-color: transparent; + background-color: inherit; } + +.jsoneditor-value.jsoneditor-string { + color: #008000; } + +.jsoneditor-value.jsoneditor-object, +.jsoneditor-value.jsoneditor-array { + min-width: 16px; + color: #808080; } + +.jsoneditor-value.jsoneditor-number { + color: #ee422e; } + +.jsoneditor-value.jsoneditor-boolean { + color: #ff8c00; } + +.jsoneditor-value.jsoneditor-null { + color: #004ED0; } + +.jsoneditor-value.jsoneditor-invalid { + color: #000000; } + +div.jsoneditor-value.jsoneditor-url { + color: green; + text-decoration: underline; } + +div.jsoneditor-empty { + border: 1px dotted lightgray; + border-radius: 2px; + padding: 0 5px; + line-height: 17px; } + +div.jsoneditor-empty::after, +div.jsoneditor-empty::after { + pointer-events: none; + color: lightgray; + font-size: 8pt; } + +div.jsoneditor-property.jsoneditor-empty::after { + content: 'prop'; } + +div.jsoneditor-value.jsoneditor-empty::after { + content: 'value'; } + +.jsoneditor-highlight { + background-color: yellow; } + +.jsoneditor-highlight:hover { + background-color: #f0f000; } + +.jsoneditor-highlight-active { + background-color: #ffd700; } + +.jsoneditor-highlight-active:hover { + background-color: #f3cd00; } + +.jsoneditor-button-placeholder { + width: 20px; + padding: 0; + margin: 0; + line-height: 20px; } + +button.jsoneditor-button { + position: relative; + width: 20px; + height: 20px; + padding: 0; + margin: 0; + border: none; + cursor: pointer; + background: transparent url("img/jsoneditor-icons.svg"); } + +button.jsoneditor-button:focus { + /* TODO: nice outline for buttons with focus + outline: #97B0F8 solid 2px; + box-shadow: 0 0 8px #97B0F8; + */ + background-color: #f5f5f5; + outline: #e5e5e5 solid 1px; } + +/* FIXME: change icons from size 24x24 to 20x20 */ +button.jsoneditor-button.jsoneditor-collapsed { + background-position: -2px -50px; } + +button.jsoneditor-button.jsoneditor-expanded { + background-position: -2px -74px; } + +button.jsoneditor-button.jsoneditor-drag { + background-position: -74px -74px; + cursor: move; } + +button.jsoneditor-button.jsoneditor-actionmenu { + background-position: -50px -74px; } + +button.jsoneditor-button.jsoneditor-actionmenu:hover, +button.jsoneditor-button.jsoneditor-actionmenu:focus, +button.jsoneditor-button.jsoneditor-actionmenu.jsoneditor-visible { + background-position: -50px -50px; } + +/******************************* Action Menu **********************************/ +div.jsoneditor-actionmenu { + position: absolute; + box-sizing: border-box; + z-index: 99999; + top: 20px; + left: 18px; + /* 20px - 2px where 2px half the difference between 24x24 icons of the menu and the 20x20 icons of the editor */ + background: white; + border: 1px solid #d3d3d3; + box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3); } + +div.jsoneditor-actionmenu.jsoneditor-actionmenu-top { + top: auto; + bottom: 20px; } + +div.jsoneditor-modemenu.jsoneditor-modemenu { + top: 26px; + left: 0; } + +div.jsoneditor-menu-item { + line-height: 0; + font-size: 0; } + +button.jsoneditor-menu-button { + width: 136px; + height: 24px; + padding: 0; + margin: 0; + line-height: 24px; + background: transparent; + border: transparent; + display: inline-block; + box-sizing: border-box; + cursor: pointer; + color: #4d4d4d; + font-size: 10pt; + font-family: arial, sans-serif; + text-align: left; } + +button.jsoneditor-menu-button:hover, +button.jsoneditor-menu-button:focus { + color: #1A1A1A; + background-color: #f5f5f5; + outline: none; } + +button.jsoneditor-menu-button.jsoneditor-selected { + color: white; + background-color: #ee422e; } + +button.jsoneditor-menu-default { + width: 104px; + /* 136px - 32px */ } + +button.jsoneditor-menu-expand { + width: 32px; + float: right; + border-left: 1px solid #e5e5e5; } + +span.jsoneditor-icon { + float: left; + width: 24px; + height: 24px; + border: none; + padding: 0; + margin: 0; + background-image: url("img/jsoneditor-icons.svg"); } + +span.jsoneditor-icon.jsoneditor-icon-expand { + float: right; + width: 24px; + margin: 0 4px; + background-position: 0 -72px !important; + opacity: 0.4; } + +div.jsoneditor-menu-item button.jsoneditor-menu-button:hover span.jsoneditor-icon-expand, +div.jsoneditor-menu-item button:focus span.jsoneditor-icon-expand { + opacity: 1; } + +span.jsoneditor-text { + display: inline-block; + line-height: 24px; } + +div.jsoneditor-menu-separator { + height: 0; + border-top: 1px solid #e5e5e5; + padding-top: 5px; + margin-top: 5px; } + +div.jsoneditor-menu-panel-right { + float: right; + max-width: 100%; } + +button.jsoneditor-remove span.jsoneditor-icon { + background-position: -24px -24px; } + +button.jsoneditor-remove:hover span.jsoneditor-icon, +button.jsoneditor-remove:focus span.jsoneditor-icon { + background-position: -24px 0; } + +button.jsoneditor-insert span.jsoneditor-icon { + background-position: 0 -24px; } + +button.jsoneditor-insert:hover span.jsoneditor-icon, +button.jsoneditor-insert:focus span.jsoneditor-icon { + background-position: 0 0; } + +button.jsoneditor-duplicate span.jsoneditor-icon { + background-position: -48px -24px; } + +button.jsoneditor-duplicate:hover span.jsoneditor-icon, +button.jsoneditor-duplicate:focus span.jsoneditor-icon { + background-position: -48px 0; } + +button.jsoneditor-sort-asc span.jsoneditor-icon { + background-position: -168px -24px; } + +button.jsoneditor-sort-asc:hover span.jsoneditor-icon, +button.jsoneditor-sort-asc:focus span.jsoneditor-icon { + background-position: -168px 0; } + +button.jsoneditor-sort-desc span.jsoneditor-icon { + background-position: -192px -24px; } + +button.jsoneditor-sort-desc:hover span.jsoneditor-icon, +button.jsoneditor-sort-desc:focus span.jsoneditor-icon { + background-position: -192px 0; } + +div.jsoneditor-submenu { + visibility: hidden; + max-height: 0; + overflow: hidden; + transition: max-height 0.3s ease-out; + box-shadow: inset 0 10px 10px -10px rgba(128, 128, 128, 0.5), inset 0 -10px 10px -10px rgba(128, 128, 128, 0.5); } + +div.jsoneditor-submenu.jsoneditor-expanded { + visibility: visible; + max-height: 104px; + /* 4 * 24px + 2 * 5px */ + /* FIXME: shouldn't rely on max-height equal to 4 items, should be flexible */ } + +div.jsoneditor-submenu.jsoneditor-collapsing { + visibility: visible; + max-height: 0; } + +div.jsoneditor-submenu button { + padding-left: 24px; } + +div.jsoneditor-submenu div.jsoneditor-menu-item:first-child { + margin-top: 5px; } + +div.jsoneditor-submenu div.jsoneditor-menu-item:last-child { + margin-bottom: 5px; } + +button.jsoneditor-type-string span.jsoneditor-icon { + background-position: -144px -24px; } + +button.jsoneditor-type-string:hover span.jsoneditor-icon, +button.jsoneditor-type-string:focus span.jsoneditor-icon, +button.jsoneditor-type-string.jsoneditor-selected span.jsoneditor-icon { + background-position: -144px 0; } + +button.jsoneditor-type-value span.jsoneditor-icon { + background-position: -120px -24px; } + +button.jsoneditor-type-value:hover span.jsoneditor-icon, +button.jsoneditor-type-value:focus span.jsoneditor-icon, +button.jsoneditor-type-value.jsoneditor-selected span.jsoneditor-icon { + background-position: -120px 0; } + +button.jsoneditor-type-Object span.jsoneditor-icon { + background-position: -72px -24px; } + +button.jsoneditor-type-Object:hover span.jsoneditor-icon, +button.jsoneditor-type-Object:focus span.jsoneditor-icon, +button.jsoneditor-type-Object.jsoneditor-selected span.jsoneditor-icon { + background-position: -72px 0; } + +button.jsoneditor-type-Array span.jsoneditor-icon { + background-position: -96px -24px; } + +button.jsoneditor-type-Array:hover span.jsoneditor-icon, +button.jsoneditor-type-Array:focus span.jsoneditor-icon, +button.jsoneditor-type-Array.jsoneditor-selected span.jsoneditor-icon { + background-position: -96px 0; } + +/******************************* Floatting Menu **********************************/ +div.jsoneditor-node-container { + position: relative; + transition: background-color 100ms ease-in; } + div.jsoneditor-node-container.jsoneditor-selected { + background-color: #ffed99; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-hover { + background-color: #ffdb80; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-hover.jsoneditor-hover-insert-area { + background-color: #ffed99; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-hover.jsoneditor-hover-insert-area > div.jsoneditor-insert-area { + border: 1px dashed gray; + background-color: #f2f2f2; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-hover.jsoneditor-hover-insert-area.jsoneditor-selected-insert-area > div.jsoneditor-insert-area { + border: 1px dashed #f4af41; + background-color: #ffdb80; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-selected-insert-area { + background-color: inherit; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-selected-insert-area.jsoneditor-hover { + background-color: #f2f2f2; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-selected-insert-area.jsoneditor-hover.jsoneditor-hover-insert-area { + background-color: inherit; } + div.jsoneditor-node-container.jsoneditor-selected.jsoneditor-selected-insert-area > div.jsoneditor-insert-area { + border: 1px dashed #f4af41; + background: #ffed99; } + div.jsoneditor-node-container.jsoneditor-selected div.jsoneditor-hover { + background-color: #ffdb80; } + div.jsoneditor-node-container.jsoneditor-selected div.jsoneditor-hover.jsoneditor-hover-insert-area { + background-color: inherit; } + div.jsoneditor-node-container.jsoneditor-selected div.jsoneditor-hover.jsoneditor-hover-insert-area > div.jsoneditor-insert-area { + border: 1px dashed #f4af41; + background: #ffdb80; } + div.jsoneditor-node-container.jsoneditor-hover { + background-color: #f2f2f2; } + div.jsoneditor-node-container.jsoneditor-hover.jsoneditor-hover-insert-area { + background-color: inherit; } + div.jsoneditor-node-container.jsoneditor-hover.jsoneditor-hover-insert-area > div.jsoneditor-insert-area { + border: 1px dashed gray; + background-color: #f2f2f2; } + div.jsoneditor-node-container div.jsoneditor-insert-area { + position: absolute; + width: 100%; + height: 8px; + left: 0; + top: -4px; + border: 1px transparent; + box-sizing: border-box; + z-index: 1; } + div.jsoneditor-node-container div.jsoneditor-floating-menu { + position: absolute; + bottom: 100%; + right: 0; + z-index: 999; + margin: 10px; + white-space: nowrap; + border-radius: 5px; + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.24); } + div.jsoneditor-node-container div.jsoneditor-floating-menu:after { + content: ''; + position: absolute; + top: 100%; + left: 35px; + margin-left: -10px; + width: 0; + height: 0; + border-top: solid 10px #4d4d4d; + border-left: solid 10px transparent; + border-right: solid 10px transparent; } + div.jsoneditor-node-container div.jsoneditor-floating-menu button.jsoneditor-floating-menu-item { + color: #fff; + background: #4d4d4d; + border: none; + border-right: 1px solid #676767; + padding: 10px; + cursor: pointer; + outline: none; } + div.jsoneditor-node-container div.jsoneditor-floating-menu button.jsoneditor-floating-menu-item:focus, div.jsoneditor-node-container div.jsoneditor-floating-menu button.jsoneditor-floating-menu-item:hover { + background: #676767; } + div.jsoneditor-node-container div.jsoneditor-floating-menu button.jsoneditor-floating-menu-item:first-child { + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; } + div.jsoneditor-node-container div.jsoneditor-floating-menu button.jsoneditor-floating-menu-item:last-child { + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-right: none; } + +/******************************* **********************************/ +div.jsoneditor-modes { + position: relative; + display: inline-block; + vertical-align: top; } + div.jsoneditor-modes button { + background: none; + width: auto; + padding: 2px 6px; } + div.jsoneditor-modes button.jsoneditor-type-modes { + width: 120px; + height: auto; + padding: 2px 6px; + border-radius: 0; + opacity: 1; } + div.jsoneditor-modes button.jsoneditor-type-modes:hover { + border: none; } + +textarea.jsoneditor-text { + width: 100%; + height: 100%; + min-height: 150px; + margin: 0; + box-sizing: border-box; + outline-width: 0; + border: none; + background-color: #fff; + resize: none; + font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; + font-size: 10pt; + color: #1A1A1A; } + +div.jsoneditor-code { + width: 100%; + height: 100%; + min-height: 150px; } + +/* JSON schema errors displayed at the bottom of the editor in mode text and code */ +.jsoneditor-errors { + width: 100%; + background-color: #ffef8b; + border-top: 1px solid #ffd700; } + .jsoneditor-errors table { + border-collapse: collapse; + font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; + font-size: 10pt; } + .jsoneditor-errors table td { + padding: 3px 6px; + vertical-align: middle; } + .jsoneditor-errors table td code { + display: block; + white-space: pre-wrap; } + +.jsoneditor-schema-error { + outline: none; + border: none; + width: 20px; + height: 20px; + padding: 0; + margin: 0 4px; + background: url("img/jsoneditor-icons.svg") -171px -49px; } diff --git a/src/jsoneditor.less b/src/jsoneditor/components/jsoneditor.scss similarity index 89% rename from src/jsoneditor.less rename to src/jsoneditor/components/jsoneditor.scss index 10b9178..e96969b 100644 --- a/src/jsoneditor.less +++ b/src/jsoneditor/components/jsoneditor.scss @@ -1,19 +1,21 @@ -@import url('./popover.less'); +@import './popover.scss'; -@fontFamily: droid sans mono, consolas, monospace, courier new, courier, sans-serif; -@fontSize: 10pt; -@black: #1A1A1A; -@contentsMinHeight: 150px; -@theme-color: #3883fa; -@floating-menu-background: #4d4d4d; -@floating-menu-color: #fff; -// @selectedColor: #e5e5e5; -@selectedColor: #ffed99; -@hoverColor: #f2f2f2; -@hoverAndSelectedColor: #ffdb80; +$fontFamily: droid sans mono, consolas, monospace, courier new, courier, sans-serif; +$fontSize: 10pt; +$black: #1A1A1A; +$contentsMinHeight: 150px; +$theme-color: #3883fa; // TODO: create a central file with the theme colors +$floating-menu-background: #4d4d4d; +$floating-menu-color: #fff; +// $selectedColor: #e5e5e5; +$selectedColor: #ffed99; +$hoverColor: #f2f2f2; +$hoverAndSelectedColor: #ffdb80; + +// TODO: split this scss file into separate files per React component .jsoneditor { - border: 1px solid @theme-color; + border: 1px solid $theme-color; width: 100%; height: 100%; @@ -28,7 +30,7 @@ box-sizing: border-box; color: white; - background-color: @theme-color; + background-color: $theme-color; flex: 0 0 auto; button { @@ -94,7 +96,7 @@ .jsoneditor-contents { width: 100%; height: 100%; - min-height: @contentsMinHeight; + min-height: $contentsMinHeight; overflow: hidden; padding: 0; @@ -139,19 +141,19 @@ div.jsoneditor-list { .jsoneditor-separator { line-height: 20px; - font-family: @fontFamily; - font-size: @fontSize; + font-family: $fontFamily; + font-size: $fontSize; } .jsoneditor-property, .jsoneditor-value, .jsoneditor-readonly { min-width: 24px; - word-break: break-word; + word-break: normal; padding: 0 5px; - color: @black; + color: $black; outline: none; } @@ -387,7 +389,7 @@ button.jsoneditor-menu-button { button.jsoneditor-menu-button:hover, button.jsoneditor-menu-button:focus { - color: @black; + color: $black; background-color: #f5f5f5; outline: none; } @@ -568,23 +570,23 @@ div.jsoneditor-node-container { // TODO: can the hover/select css be simplified? &.jsoneditor-selected { - background-color: @selectedColor; + background-color: $selectedColor; &.jsoneditor-hover { - background-color: @hoverAndSelectedColor; + background-color: $hoverAndSelectedColor; &.jsoneditor-hover-insert-area { - background-color: @selectedColor; + background-color: $selectedColor; > div.jsoneditor-insert-area { border: 1px dashed gray; - background-color: @hoverColor; + background-color: $hoverColor; } &.jsoneditor-selected-insert-area { > div.jsoneditor-insert-area { border: 1px dashed #f4af41; - background-color: @hoverAndSelectedColor; + background-color: $hoverAndSelectedColor; } } } @@ -594,7 +596,7 @@ div.jsoneditor-node-container { background-color: inherit; &.jsoneditor-hover { - background-color: @hoverColor; + background-color: $hoverColor; &.jsoneditor-hover-insert-area { background-color: inherit; @@ -603,46 +605,46 @@ div.jsoneditor-node-container { > div.jsoneditor-insert-area { border: 1px dashed #f4af41; - background: @selectedColor; + background: $selectedColor; } } // hovering nested elements div.jsoneditor-hover { - background-color: @hoverAndSelectedColor; + background-color: $hoverAndSelectedColor; &.jsoneditor-hover-insert-area { background-color: inherit; > div.jsoneditor-insert-area { border: 1px dashed #f4af41; - background: @hoverAndSelectedColor; + background: $hoverAndSelectedColor; } } } } &.jsoneditor-hover { - background-color: @hoverColor; + background-color: $hoverColor; &.jsoneditor-hover-insert-area { background-color: inherit; > div.jsoneditor-insert-area { border: 1px dashed gray; - background-color: @hoverColor; + background-color: $hoverColor; } } } div.jsoneditor-insert-area { - @height: 8px; + $height: 8px; position: absolute; width: 100%; - height: @height; + height: $height; left: 0; - top: -@height/2; + top: -$height/2; border: 1px transparent; box-sizing: border-box; z-index: 1; // must be on top of next node, it overlaps a bit @@ -667,23 +669,23 @@ div.jsoneditor-node-container { margin-left: -10px; width: 0; height: 0; - border-top: solid 10px @floating-menu-background; + border-top: solid 10px $floating-menu-background; border-left: solid 10px transparent; border-right: solid 10px transparent; } button.jsoneditor-floating-menu-item { - color: @floating-menu-color; - background: @floating-menu-background; + color: $floating-menu-color; + background: $floating-menu-background; border: none; - border-right: 1px solid lighten(@floating-menu-background, 10%); + border-right: 1px solid lighten($floating-menu-background, 10%); padding: 10px; cursor: pointer; outline: none; &:focus, &:hover { - background: lighten(@floating-menu-background, 10%); + background: lighten($floating-menu-background, 10%); } &:first-child { @@ -728,7 +730,7 @@ div.jsoneditor-modes { textarea.jsoneditor-text { width: 100%; height: 100%; - min-height: @contentsMinHeight; + min-height: $contentsMinHeight; margin: 0; box-sizing: border-box; @@ -737,15 +739,15 @@ textarea.jsoneditor-text { background-color: #fff; resize: none; - font-family: @fontFamily; - font-size: @fontSize; - color: @black; + font-family: $fontFamily; + font-size: $fontSize; + color: $black; } div.jsoneditor-code { width: 100%; height: 100%; - min-height: @contentsMinHeight; + min-height: $contentsMinHeight; } /* JSON schema errors displayed at the bottom of the editor in mode text and code */ @@ -758,8 +760,8 @@ div.jsoneditor-code { table { border-collapse: collapse; - font-family: @fontFamily; - font-size: @fontSize; + font-family: $fontFamily; + font-size: $fontSize; td { padding: 3px 6px; diff --git a/src/components/menu/ActionMenu.js b/src/jsoneditor/components/menu/ActionMenu.js similarity index 100% rename from src/components/menu/ActionMenu.js rename to src/jsoneditor/components/menu/ActionMenu.js diff --git a/src/components/menu/FloatingMenu.js b/src/jsoneditor/components/menu/FloatingMenu.js similarity index 98% rename from src/components/menu/FloatingMenu.js rename to src/jsoneditor/components/menu/FloatingMenu.js index 94a91e9..199e2ed 100644 --- a/src/components/menu/FloatingMenu.js +++ b/src/jsoneditor/components/menu/FloatingMenu.js @@ -1,7 +1,4 @@ -// @flow weak - import { createElement as h, PureComponent } from 'react' -import { keyComboFromEvent } from '../../utils/keyBindings' const MENU_CLASS_NAME = 'jsoneditor-floating-menu' const MENU_ITEM_CLASS_NAME = 'jsoneditor-floating-menu-item' diff --git a/src/components/menu/Menu.js b/src/jsoneditor/components/menu/Menu.js similarity index 100% rename from src/components/menu/Menu.js rename to src/jsoneditor/components/menu/Menu.js diff --git a/src/components/menu/ModeButton.js b/src/jsoneditor/components/menu/ModeButton.js similarity index 100% rename from src/components/menu/ModeButton.js rename to src/jsoneditor/components/menu/ModeButton.js diff --git a/src/components/menu/ModeMenu.js b/src/jsoneditor/components/menu/ModeMenu.js similarity index 100% rename from src/components/menu/ModeMenu.js rename to src/jsoneditor/components/menu/ModeMenu.js diff --git a/src/jsoneditor/components/menu/Search.css b/src/jsoneditor/components/menu/Search.css new file mode 100644 index 0000000..f00c562 --- /dev/null +++ b/src/jsoneditor/components/menu/Search.css @@ -0,0 +1,57 @@ +div.jsoneditor-search { + font-family: arial, sans-serif; + font-size: 10pt; } + div.jsoneditor-search div.jsoneditor-results { + display: inline-block; + margin-right: 5px; } + div.jsoneditor-search form.jsoneditor-search-box { + display: inline-flex; + position: relative; + max-width: 100%; + background-color: white; + border: 2px solid #3883fa; + box-sizing: border-box; } + div.jsoneditor-search form.jsoneditor-search-box::before { + position: absolute; + display: inline-block; + width: 22px; + height: 100%; + background: transparent url("../img/jsoneditor-icons.svg") -97px -71px; + content: ''; } + div.jsoneditor-search form.jsoneditor-search-box input.jsoneditor-search-text { + display: inline-block; + position: relative; + border: none; + outline: none; + width: 120px; + max-width: 100%; + height: 22px; + line-height: 22px; + padding: 2px 2px 2px 22px; + background: transparent; } + div.jsoneditor-search form.jsoneditor-search-box input[type=button] { + display: inline-block; + position: relative; + width: 16px; + height: 100%; + line-height: 22px; + margin: 2px 0; + padding: 0; + border: none; + background: transparent url("../img/jsoneditor-icons.svg"); + opacity: 0.8; + font-family: arial, sans-serif; + font-size: 10pt; } + div.jsoneditor-search form.jsoneditor-search-box input[type=button]:hover { + background-color: transparent; } + div.jsoneditor-search form.jsoneditor-search-box input.jsoneditor-search-next { + cursor: pointer; + background-position: -124px -73px; } + div.jsoneditor-search form.jsoneditor-search-box input.jsoneditor-search-next:hover { + background-position: -124px -49px; } + div.jsoneditor-search form.jsoneditor-search-box input.jsoneditor-search-previous { + cursor: pointer; + background-position: -148px -73px; + margin-right: 2px; } + div.jsoneditor-search form.jsoneditor-search-box input.jsoneditor-search-previous:hover { + background-position: -148px -49px; } diff --git a/src/components/menu/Search.js b/src/jsoneditor/components/menu/Search.js similarity index 97% rename from src/components/menu/Search.js rename to src/jsoneditor/components/menu/Search.js index ce56be3..ab1088c 100644 --- a/src/components/menu/Search.js +++ b/src/jsoneditor/components/menu/Search.js @@ -1,17 +1,11 @@ -// @flow weak - import { createElement as h, Component } from 'react' import PropTypes from 'prop-types' import { keyComboFromEvent } from '../../utils/keyBindings' import { findEditorContainer, setSelection } from '../utils/domSelector' -import '!style!css!less!./Search.less' +import './Search.css' export default class Search extends Component { - state: { - text: string - } - constructor (props) { super (props) diff --git a/src/components/menu/Search.less b/src/jsoneditor/components/menu/Search.scss similarity index 82% rename from src/components/menu/Search.less rename to src/jsoneditor/components/menu/Search.scss index 89f3cdd..83b8972 100644 --- a/src/components/menu/Search.less +++ b/src/jsoneditor/components/menu/Search.scss @@ -1,4 +1,4 @@ -@theme-color: #3883fa; +$theme-color: #3883fa; div.jsoneditor-search { font-family: arial, sans-serif; @@ -15,17 +15,17 @@ div.jsoneditor-search { max-width: 100%; background-color: white; - border: 2px solid @theme-color; + border: 2px solid $theme-color; box-sizing: border-box; - @search-icon-width: 22px; + $search-icon-width: 22px; &::before { position: absolute; display: inline-block; - width: @search-icon-width; + width: $search-icon-width; height: 100%; - background: transparent url('../../img/jsoneditor-icons.svg') -97px -71px; + background: transparent url('../img/jsoneditor-icons.svg') -97px -71px; content: ''; } @@ -39,7 +39,7 @@ div.jsoneditor-search { max-width: 100%; height: 22px; line-height: 22px; - padding: 2px 2px 2px @search-icon-width; + padding: 2px 2px 2px $search-icon-width; background: transparent; } @@ -53,7 +53,7 @@ div.jsoneditor-search { margin: 2px 0; padding: 0; border: none; - background: transparent url('../../img/jsoneditor-icons.svg'); + background: transparent url('../img/jsoneditor-icons.svg'); opacity: 0.8; font-family: arial, sans-serif; diff --git a/src/components/menu/items.js b/src/jsoneditor/components/menu/items.js similarity index 100% rename from src/components/menu/items.js rename to src/jsoneditor/components/menu/items.js diff --git a/src/jsoneditor/components/popover.css b/src/jsoneditor/components/popover.css new file mode 100644 index 0000000..a03f0f2 --- /dev/null +++ b/src/jsoneditor/components/popover.css @@ -0,0 +1,96 @@ +/* schema error popover */ +.jsoneditor-schema-error { + position: relative; + /*@-webkit-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ + /*@-moz-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ + /*@-ms-keyframes move-up {*/ + /*from { bottom: 24px; }*/ + /*to { bottom: 32px; }*/ + /*}*/ } + .jsoneditor-schema-error .jsoneditor-popover { + background-color: #4c4c4c; + border-radius: 3px; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.4); + color: #fff; + display: none; + padding: 7px 10px; + position: absolute; + width: 200px; + z-index: 4; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above { + bottom: 32px; + left: -98px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below { + top: 32px; + left: -98px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left { + top: -7px; + right: 32px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right { + top: -7px; + left: 32px; } + .jsoneditor-schema-error .jsoneditor-popover:before { + border-right: 7px solid transparent; + border-left: 7px solid transparent; + content: ''; + display: block; + left: 50%; + margin-left: -7px; + position: absolute; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before { + border-top: 7px solid #4c4c4c; + bottom: -7px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before { + border-bottom: 7px solid #4c4c4c; + top: -7px; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before { + border-left: 7px solid #4c4c4c; + border-top: 7px solid transparent; + border-bottom: 7px solid transparent; + content: ''; + top: 19px; + right: -14px; + left: inherit; + margin-left: inherit; + margin-top: -10px; + position: absolute; } + .jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before { + border-right: 7px solid #4c4c4c; + border-top: 7px solid transparent; + border-bottom: 7px solid transparent; + content: ''; + top: 19px; + left: -14px; + margin-left: inherit; + margin-top: -10px; + position: absolute; } + .jsoneditor-schema-error:hover .jsoneditor-popover, + .jsoneditor-schema-error:focus .jsoneditor-popover { + display: block; + -webkit-animation: fade-in .3s linear 1, move-up .3s linear 1; + -moz-animation: fade-in .3s linear 1, move-up .3s linear 1; + -ms-animation: fade-in .3s linear 1, move-up .3s linear 1; } + +@-webkit-keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@-moz-keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@-ms-keyframes fade-in { + .jsoneditor-schema-error from { + opacity: 0; } + .jsoneditor-schema-error to { + opacity: 1; } } diff --git a/src/popover.less b/src/jsoneditor/components/popover.scss similarity index 98% rename from src/popover.less rename to src/jsoneditor/components/popover.scss index ffcf14a..ff21970 100644 --- a/src/popover.less +++ b/src/jsoneditor/components/popover.scss @@ -64,7 +64,7 @@ right: -14px; left: inherit; margin-left: inherit; - margin-top: -7px; + margin-top: -10px; position: absolute; } @@ -76,7 +76,7 @@ top: 19px; left: -14px; margin-left: inherit; - margin-top: -7px; + margin-top: -10px; position: absolute; } diff --git a/src/components/utils/domSelector.js b/src/jsoneditor/components/utils/domSelector.js similarity index 100% rename from src/components/utils/domSelector.js rename to src/jsoneditor/components/utils/domSelector.js diff --git a/src/constants.js b/src/jsoneditor/constants.js similarity index 100% rename from src/constants.js rename to src/jsoneditor/constants.js diff --git a/src/eson.js b/src/jsoneditor/eson.js similarity index 94% rename from src/eson.js rename to src/jsoneditor/eson.js index e9ebd7c..112bc0d 100644 --- a/src/eson.js +++ b/src/jsoneditor/eson.js @@ -1,5 +1,3 @@ -// @flow weak - /** * This file contains functions to act on a ESON object. * All functions are pure and don't mutate the ESON. @@ -14,12 +12,6 @@ import times from 'lodash/times' import initial from 'lodash/initial' import last from 'lodash/last' -import type { - ESON, ESONPointer, Selection, - Path, - JSONType -} from './types' - export const SELECTED = 1 export const SELECTED_END = 2 export const SELECTED_BEFORE = 3 @@ -38,8 +30,8 @@ export function expandAll (path) { /** * - * @param {JSONType} json - * @param {JSONPath} path + * @param {JSON} json + * @param {Path} path * @return {ESON} */ export function jsonToEson (json, path = []) { @@ -69,7 +61,7 @@ export function jsonToEson (json, path = []) { * @param {ESON} eson * @return {Object | Array | string | number | boolean | null} json */ -export function esonToJson (eson: ESON) { +export function esonToJson (eson) { switch (eson[META].type) { case 'Array': return eson.map(item => esonToJson(item)) @@ -154,6 +146,7 @@ export function updatePaths(eson, path = []) { * @return {ESON} */ export function expand (eson, filterCallback, expanded = true) { + // TODO: adjust expand to have a filterCallback which can return true, false, or undefined. In the latter case, the expanded state is left as is. return transform(eson, function (value, path) { return ((value[META].type === 'Array' || value[META].type === 'Object') && filterCallback(path)) ? expandOne(value, [], expanded) @@ -215,7 +208,7 @@ export function applyErrors (eson, errors = []) { * Cleanup meta data from an eson object * @param {ESON} eson Object to be cleaned up * @param {String} field Field name, for example 'error' or 'selected' - * @param {String[] | JSONPath[]} [ignorePaths=[]] An optional array with paths to be ignored + * @param {Path[]} [ignorePaths=[]] An optional array with paths to be ignored * @return {ESON} */ export function cleanupMetaData(eson, field, ignorePaths = []) { @@ -395,8 +388,8 @@ export function applySelection (eson, selection) { return updatedObj } else { // root[META].type === 'Array' - const startIndex = parseInt(start) - const endIndex = parseInt(end) + const startIndex = parseInt(start, 10) + const endIndex = parseInt(end, 10) const minIndex = Math.min(startIndex, endIndex) const maxIndex = Math.max(startIndex, endIndex) + 1 // include max index itself @@ -434,8 +427,8 @@ export function findSelectionIndices (root, rootPath, selection) { const end = (selection.after || selection.before || selection.end)[rootPath.length] // if no object we assume it's an Array - const startIndex = root[META].type === 'Object' ? root[META].props.indexOf(start) : parseInt(start) - const endIndex = root[META].type === 'Object' ? root[META].props.indexOf(end) : parseInt(end) + const startIndex = root[META].type === 'Object' ? root[META].props.indexOf(start) : parseInt(start, 10) + const endIndex = root[META].type === 'Object' ? root[META].props.indexOf(end) : parseInt(end, 10) const minIndex = Math.min(startIndex, endIndex) const maxIndex = Math.max(startIndex, endIndex) + @@ -446,8 +439,11 @@ export function findSelectionIndices (root, rootPath, selection) { /** * Get the JSON paths from a selection, sorted from first to last + * @param {ESON} eson + * @param {Selection} selection + * @return {Path[]} */ -export function pathsFromSelection (eson, selection: Selection): Path[] { +export function pathsFromSelection (eson, selection) { // find the parent node shared by both start and end of the selection const rootPath = findRootPath(selection) const root = getIn(eson, rootPath) @@ -468,7 +464,7 @@ export function pathsFromSelection (eson, selection: Selection): Path[] { * @param {Path[]} paths * @return {Array.<{name: string, value: JSONType}>} */ -export function contentsFromPaths (data: ESON, paths: Path[]) { +export function contentsFromPaths (data, paths) { return paths.map(path => { return { name: last(path), @@ -508,8 +504,11 @@ export function findRootPath(selection) { /** * Find the common path of two paths. * For example findCommonRoot(['arr', '1', 'name'], ['arr', '1', 'address', 'contact']) returns ['arr', '1'] + * @param {Path} path1 + * @param {Path} path2 + * @return {Path} */ -function findSharedPath (path1: Path, path2: Path): Path { +function findSharedPath (path1, path2) { let i = 0; while (i < path1.length && path1[i] === path2[i]) { i++; @@ -536,7 +535,7 @@ export function pathExists (eson, path) { if (Array.isArray(eson)) { // index of an array - return pathExists(eson[parseInt(path[0])], path.slice(1)) + return pathExists(eson[parseInt(path[0], 10)], path.slice(1)) } else { // Object // object property. find the index of this property @@ -583,9 +582,9 @@ export function findNextProp (parent, prop) { * Parse a JSON Pointer * WARNING: this is not a complete implementation * @param {string} pointer - * @return {Array} + * @return {Path} */ -export function parseJSONPointer (pointer: string) { +export function parseJSONPointer (pointer) { const path = pointer.split('/') path.shift() // remove the first empty entry @@ -598,7 +597,7 @@ export function parseJSONPointer (pointer: string) { * @param {Path} path * @return {string} */ -export function compileJSONPointer (path: Path) { +export function compileJSONPointer (path) { return path .map(p => '/' + String(p).replace(/~/g, '~0').replace(/\//g, '~1')) .join('') @@ -612,7 +611,7 @@ export function compileJSONPointer (path: Path) { * @param {String} search * @return {boolean} Returns true if `search` is found in `text` */ -export function containsCaseInsensitive (text: string, search: string): boolean { +export function containsCaseInsensitive (text, search) { return String(text).toLowerCase().indexOf(search.toLowerCase()) !== -1 } @@ -620,7 +619,7 @@ export function containsCaseInsensitive (text: string, search: string): boolean * Get a new "unique" id. Id's are created from an incremental counter. * @return {number} */ -export function createId () : number { +export function createId () { _id++ return _id } diff --git a/test/eson.test.js b/src/jsoneditor/eson.test.js similarity index 59% rename from test/eson.test.js rename to src/jsoneditor/eson.test.js index 200cddb..926468f 100644 --- a/test/eson.test.js +++ b/src/jsoneditor/eson.test.js @@ -1,8 +1,7 @@ 'use strict' import { readFileSync } from 'fs' -import test from 'ava' -import { setIn, getIn, deleteIn } from '../src/utils/immutabilityHelpers' +import { setIn, getIn, deleteIn } from './utils/immutabilityHelpers' import { META, esonToJson, pathExists, transform, @@ -12,17 +11,17 @@ import { previousSearchResult, applySelection, pathsFromSelection, SELECTED, SELECTED_END -} from '../src/eson' +} from './eson' import 'console.table' import repeat from 'lodash/repeat' import { assertDeepEqualEson } from './utils/assertDeepEqualEson' -test('jsonToEson', t => { - assertDeepEqualEson(t, jsonToEson(1), {[META]: {id: '[ID]', path: [], type: 'value', value: 1}}) - assertDeepEqualEson(t, jsonToEson("foo"), {[META]: {id: '[ID]', path: [], type: 'value', value: "foo"}}) - assertDeepEqualEson(t, jsonToEson(null), {[META]: {id: '[ID]', path: [], type: 'value', value: null}}) - assertDeepEqualEson(t, jsonToEson(false), {[META]: {id: '[ID]', path: [], type: 'value', value: false}}) - assertDeepEqualEson(t, jsonToEson({a:1, b: 2}), { +test('jsonToEson', () => { + assertDeepEqualEson(jsonToEson(1), {[META]: {id: '[ID]', path: [], type: 'value', value: 1}}) + assertDeepEqualEson(jsonToEson("foo"), {[META]: {id: '[ID]', path: [], type: 'value', value: "foo"}}) + assertDeepEqualEson(jsonToEson(null), {[META]: {id: '[ID]', path: [], type: 'value', value: null}}) + assertDeepEqualEson(jsonToEson(false), {[META]: {id: '[ID]', path: [], type: 'value', value: false}}) + assertDeepEqualEson(jsonToEson({a:1, b: 2}), { [META]: {id: '[ID]', path: [], type: 'Object', props: ['a', 'b']}, a: {[META]: {id: '[ID]', path: ['a'], type: 'value', value: 1}}, b: {[META]: {id: '[ID]', path: ['b'], type: 'value', value: 2}} @@ -34,10 +33,10 @@ test('jsonToEson', t => { {[META]: {id: '[ID]', path: ['1'], type: 'value', value: 2}} ] expected[META] = {id: '[ID]', path: [], type: 'Array'} - assertDeepEqualEson(t, actual, expected) + assertDeepEqualEson(actual, expected) }) -test('esonToJson', t => { +test('esonToJson', () => { const json = { "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -47,10 +46,10 @@ test('esonToJson', t => { "bool": false } const eson = jsonToEson(json) - t.deepEqual(esonToJson(eson), json) + expect(esonToJson(eson)).toEqual(json) }) -test('expand a single path', t => { +test('expand a single path', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -62,15 +61,15 @@ test('expand a single path', t => { const path = ['obj', 'arr', 2] const collapsed = expandOne(eson, path, false) - t.is(collapsed.obj.arr[2][META].expanded, false) - assertDeepEqualEson(t, deleteIn(collapsed, path.concat([META, 'expanded'])), eson) + expect(collapsed.obj.arr[2][META].expanded).toEqual(false) + assertDeepEqualEson(deleteIn(collapsed, path.concat([META, 'expanded'])), eson) const expanded = expandOne(eson, path, true) - t.is(expanded.obj.arr[2][META].expanded, true) - assertDeepEqualEson(t, deleteIn(expanded, path.concat([META, 'expanded'])), eson) + expect(expanded.obj.arr[2][META].expanded).toEqual(true) + assertDeepEqualEson(deleteIn(expanded, path.concat([META, 'expanded'])), eson) }) -test('expand all objects/arrays on a path', t => { +test('expand all objects/arrays on a path', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -83,16 +82,16 @@ test('expand all objects/arrays on a path', t => { const path = ['obj', 'arr', 2] const collapsed = expandPath(eson, path, false) - t.is(collapsed[META].expanded, false) - t.is(collapsed.obj[META].expanded, false) - t.is(collapsed.obj.arr[META].expanded, false) - t.is(collapsed.obj.arr[2][META].expanded, false) + expect(collapsed[META].expanded).toEqual(false) + expect(collapsed.obj[META].expanded).toEqual(false) + expect(collapsed.obj.arr[META].expanded).toEqual(false) + expect(collapsed.obj.arr[2][META].expanded).toEqual(false) const expanded = expandPath(eson, path, true) - t.is(expanded[META].expanded, true) - t.is(expanded.obj[META].expanded, true) - t.is(expanded.obj.arr[META].expanded, true) - t.is(expanded.obj.arr[2][META].expanded, true) + expect(expanded[META].expanded).toEqual(true) + expect(expanded.obj[META].expanded).toEqual(true) + expect(expanded.obj.arr[META].expanded).toEqual(true) + expect(expanded.obj.arr[2][META].expanded).toEqual(true) let orig = expanded orig = deleteIn(orig, [].concat([META, 'expanded'])) @@ -100,10 +99,10 @@ test('expand all objects/arrays on a path', t => { orig = deleteIn(orig, ['obj', 'arr'].concat([META, 'expanded'])) orig = deleteIn(orig, ['obj', 'arr', 2].concat([META, 'expanded'])) - assertDeepEqualEson(t, orig, eson) + assertDeepEqualEson(orig, eson) }) -test('expand a callback', t => { +test('expand a callback', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -118,19 +117,19 @@ test('expand a callback', t => { } const expandedValue = false const collapsed = expand(eson, filterCallback, expandedValue) - t.is(collapsed[META].expanded, undefined) - t.is(collapsed.obj[META].expanded, expandedValue) - t.is(collapsed.obj.arr[META].expanded, expandedValue) - t.is(collapsed.obj.arr[2][META].expanded, expandedValue) + expect(collapsed[META].expanded).toEqual(undefined) + expect(collapsed.obj[META].expanded).toEqual(expandedValue) + expect(collapsed.obj.arr[META].expanded).toEqual(expandedValue) + expect(collapsed.obj.arr[2][META].expanded).toEqual(expandedValue) let orig = collapsed orig = deleteIn(orig, ['obj'].concat([META, 'expanded'])) orig = deleteIn(orig, ['obj', 'arr'].concat([META, 'expanded'])) orig = deleteIn(orig, ['obj', 'arr', 2].concat([META, 'expanded'])) - assertDeepEqualEson(t, orig, eson) + assertDeepEqualEson(orig, eson) }) -test('expand a callback should not change the object when nothing happens', t => { +test('expand a callback should not change the object when nothing happens', () => { const eson = jsonToEson({a: [1,2,3], b: {c: 4}}) function callback (path) { return false @@ -138,39 +137,39 @@ test('expand a callback should not change the object when nothing happens', t => const expanded = false const collapsed = expand(eson, callback, expanded) - t.is(collapsed, eson) + expect(collapsed).toBe(eson) }) -test('transform (no change)', t => { +test('transform (no change)', () => { const eson = jsonToEson({a: [1,2,3], b: {c: 4}}) const updated = transform(eson, (value, path) => value) - assertDeepEqualEson(t, updated, eson) - t.is(updated, eson) + assertDeepEqualEson(updated, eson) + expect(updated).toBe(eson) }) -test('transform (change based on value)', t => { +test('transform (change based on value)', () => { const eson = jsonToEson({a: [1,2,3], b: {c: 4}}) const updated = transform(eson, (value, path) => value[META].value === 2 ? jsonToEson(20, path) : value) const expected = jsonToEson({a: [1,20,3], b: {c: 4}}) - assertDeepEqualEson(t, updated, expected) - t.is(updated.b, eson.b) // should not have replaced b + assertDeepEqualEson(updated, expected) + expect(updated.b).toBe(eson.b) // should not have replaced b }) -test('transform (change based on path)', t => { +test('transform (change based on path)', () => { const eson = jsonToEson({a: [1,2,3], b: {c: 4}}) const updated = transform(eson, (value, path) => path.join('.') === 'a.1' ? jsonToEson(20, path) : value) const expected = jsonToEson({a: [1,20,3], b: {c: 4}}) - assertDeepEqualEson(t, updated, expected) - t.is(updated.b, eson.b) // should not have replaced b + assertDeepEqualEson(updated, expected) + expect(updated.b).toBe(eson.b) // should not have replaced b }) -test('pathExists', t => { +test('pathExists', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -180,29 +179,29 @@ test('pathExists', t => { "bool": false }) - t.is(pathExists(eson, ['obj', 'arr', 2, 'first']), true) - t.is(pathExists(eson, ['obj', 'foo']), false) - t.is(pathExists(eson, ['obj', 'foo', 'bar']), false) - t.is(pathExists(eson, []), true) + expect(pathExists(eson, ['obj', 'arr', 2, 'first'])).toEqual(true) + expect(pathExists(eson, ['obj', 'foo'])).toEqual(false) + expect(pathExists(eson, ['obj', 'foo', 'bar'])).toEqual(false) + expect(pathExists(eson, [])).toEqual(true) }) -test('parseJSONPointer', t => { - t.deepEqual(parseJSONPointer('/obj/a'), ['obj', 'a']) - t.deepEqual(parseJSONPointer('/arr/-'), ['arr', '-']) - t.deepEqual(parseJSONPointer('/foo/~1~0 ~0~1'), ['foo', '/~ ~/']) - t.deepEqual(parseJSONPointer('/obj'), ['obj']) - t.deepEqual(parseJSONPointer('/'), ['']) - t.deepEqual(parseJSONPointer(''), []) +test('parseJSONPointer', () => { + expect(parseJSONPointer('/obj/a')).toEqual(['obj', 'a']) + expect(parseJSONPointer('/arr/-')).toEqual(['arr', '-']) + expect(parseJSONPointer('/foo/~1~0 ~0~1')).toEqual(['foo', '/~ ~/']) + expect(parseJSONPointer('/obj')).toEqual(['obj']) + expect(parseJSONPointer('/')).toEqual(['']) + expect(parseJSONPointer('')).toEqual([]) }) -test('compileJSONPointer', t => { - t.deepEqual(compileJSONPointer(['foo', 'bar']), '/foo/bar') - t.deepEqual(compileJSONPointer(['foo', '/~ ~/']), '/foo/~1~0 ~0~1') - t.deepEqual(compileJSONPointer(['']), '/') - t.deepEqual(compileJSONPointer([]), '') +test('compileJSONPointer', () => { + expect(compileJSONPointer(['foo', 'bar'])).toEqual('/foo/bar') + expect(compileJSONPointer(['foo', '/~ ~/'])).toEqual('/foo/~1~0 ~0~1') + expect(compileJSONPointer([''])).toEqual('/') + expect(compileJSONPointer([])).toEqual('') }) -test('add and remove errors', t => { +test('add and remove errors', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -222,19 +221,19 @@ test('add and remove errors', t => { let expected = eson expected = setIn(expected, ['obj', 'arr', '2', 'last', META, 'error'], jsonSchemaErrors[0]) expected = setIn(expected, ['nill', META, 'error'], jsonSchemaErrors[1]) - assertDeepEqualEson(t, actual1, expected) + assertDeepEqualEson(actual1, expected) // re-applying the same errors should not change eson const actual2 = applyErrors(actual1, jsonSchemaErrors) - t.is(actual2, actual1) + expect(actual2).toBe(actual1) // clear errors const actual3 = applyErrors(actual2, []) - assertDeepEqualEson(t, actual3, eson) - t.is(actual3.str, eson.str) // shouldn't have touched values not affected by the errors + assertDeepEqualEson(actual3, eson) + expect(actual3.str).toEqual(eson.str) // shouldn't have touched values not affected by the errors }) -test('search', t => { +test('search', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -248,7 +247,7 @@ test('search', t => { const matches = result.searchResult.matches const active = result.searchResult.active - t.deepEqual(matches, [ + expect(matches).toEqual([ {path: ['obj', 'arr', '2', 'last'], area: 'property'}, {path: ['str'], area: 'value'}, {path: ['nill'], area: 'property'}, @@ -256,7 +255,7 @@ test('search', t => { {path: ['bool'], area: 'property'}, {path: ['bool'], area: 'value'} ]) - t.deepEqual(active, {path: ['obj', 'arr', '2', 'last'], area: 'property'}) + expect(active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'}) let expected = esonWithSearch expected = setIn(expected, ['obj', 'arr', '2', 'last', META, 'searchProperty'], 'active') @@ -266,10 +265,10 @@ test('search', t => { expected = setIn(expected, ['bool', META, 'searchProperty'], 'normal') expected = setIn(expected, ['bool', META, 'searchValue'], 'normal') - assertDeepEqualEson(t, esonWithSearch, expected) + assertDeepEqualEson(esonWithSearch, expected) }) -test('nextSearchResult', t => { +test('nextSearchResult', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -280,37 +279,37 @@ test('nextSearchResult', t => { }) const first = search(eson, 'A') - t.deepEqual(first.searchResult.matches, [ + expect(first.searchResult.matches).toEqual([ {path: ['obj', 'arr'], area: 'property'}, {path: ['obj', 'arr', '2', 'last'], area: 'property'}, {path: ['bool'], area: 'value'} ]) - t.deepEqual(first.searchResult.active, {path: ['obj', 'arr'], area: 'property'}) - t.is(getIn(first.eson, ['obj', 'arr', META, 'searchProperty']), 'active') - t.is(getIn(first.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(first.eson, ['bool', META, 'searchValue']), 'normal') + expect(first.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'}) + expect(getIn(first.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('active') + expect(getIn(first.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(first.eson, ['bool', META, 'searchValue'])).toEqual('normal') const second = nextSearchResult(first.eson, first.searchResult) - t.deepEqual(second.searchResult.active, {path: ['obj', 'arr', '2', 'last'], area: 'property'}) - t.is(getIn(second.eson, ['obj', 'arr', META, 'searchProperty']), 'normal') - t.is(getIn(second.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'active') - t.is(getIn(second.eson, ['bool', META, 'searchValue']), 'normal') + expect(second.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'}) + expect(getIn(second.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('normal') + expect(getIn(second.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('active') + expect(getIn(second.eson, ['bool', META, 'searchValue'])).toEqual('normal') const third = nextSearchResult(second.eson, second.searchResult) - t.deepEqual(third.searchResult.active, {path: ['bool'], area: 'value'}) - t.is(getIn(third.eson, ['obj', 'arr', META, 'searchProperty']), 'normal') - t.is(getIn(third.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(third.eson, ['bool', META, 'searchValue']), 'active') + expect(third.searchResult.active).toEqual({path: ['bool'], area: 'value'}) + expect(getIn(third.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('normal') + expect(getIn(third.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(third.eson, ['bool', META, 'searchValue'])).toEqual('active') const wrappedAround = nextSearchResult(third.eson, third.searchResult) - t.deepEqual(wrappedAround.searchResult.active, {path: ['obj', 'arr'], area: 'property'}) - t.is(getIn(wrappedAround.eson, ['obj', 'arr', META, 'searchProperty']), 'active') - t.is(getIn(wrappedAround.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(wrappedAround.eson, ['bool', META, 'searchValue']), 'normal') + expect(wrappedAround.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'}) + expect(getIn(wrappedAround.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('active') + expect(getIn(wrappedAround.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(wrappedAround.eson, ['bool', META, 'searchValue'])).toEqual('normal') }) -test('previousSearchResult', t => { +test('previousSearchResult', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -321,37 +320,37 @@ test('previousSearchResult', t => { }) const init = search(eson, 'A') - t.deepEqual(init.searchResult.matches, [ + expect(init.searchResult.matches).toEqual([ {path: ['obj', 'arr'], area: 'property'}, {path: ['obj', 'arr', '2', 'last'], area: 'property'}, {path: ['bool'], area: 'value'} ]) - t.deepEqual(init.searchResult.active, {path: ['obj', 'arr'], area: 'property'}) - t.is(getIn(init.eson, ['obj', 'arr', META, 'searchProperty']), 'active') - t.is(getIn(init.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(init.eson, ['bool', META, 'searchValue']), 'normal') + expect(init.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'}) + expect(getIn(init.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('active') + expect(getIn(init.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(init.eson, ['bool', META, 'searchValue'])).toEqual('normal') const third = previousSearchResult(init.eson, init.searchResult) - t.deepEqual(third.searchResult.active, {path: ['bool'], area: 'value'}) - t.is(getIn(third.eson, ['obj', 'arr', META, 'searchProperty']), 'normal') - t.is(getIn(third.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(third.eson, ['bool', META, 'searchValue']), 'active') + expect(third.searchResult.active).toEqual({path: ['bool'], area: 'value'}) + expect(getIn(third.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('normal') + expect(getIn(third.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(third.eson, ['bool', META, 'searchValue'])).toEqual('active') const second = previousSearchResult(third.eson, third.searchResult) - t.deepEqual(second.searchResult.active, {path: ['obj', 'arr', '2', 'last'], area: 'property'}) - t.is(getIn(second.eson, ['obj', 'arr', META, 'searchProperty']), 'normal') - t.is(getIn(second.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'active') - t.is(getIn(second.eson, ['bool', META, 'searchValue']), 'normal') + expect(second.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'}) + expect(getIn(second.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('normal') + expect(getIn(second.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('active') + expect(getIn(second.eson, ['bool', META, 'searchValue'])).toEqual('normal') const first = previousSearchResult(second.eson, second.searchResult) - t.deepEqual(first.searchResult.active, {path: ['obj', 'arr'], area: 'property'}) - t.is(getIn(first.eson, ['obj', 'arr', META, 'searchProperty']), 'active') - t.is(getIn(first.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty']), 'normal') - t.is(getIn(first.eson, ['bool', META, 'searchValue']), 'normal') + expect(first.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'}) + expect(getIn(first.eson, ['obj', 'arr', META, 'searchProperty'])).toEqual('active') + expect(getIn(first.eson, ['obj', 'arr', '2', 'last', META, 'searchProperty'])).toEqual('normal') + expect(getIn(first.eson, ['bool', META, 'searchValue'])).toEqual('normal') }) -test('selection (object)', t => { +test('selection (object)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -371,7 +370,7 @@ test('selection (object)', t => { expected = setIn(expected, ['obj', META, 'selected'], SELECTED) expected = setIn(expected, ['str', META, 'selected'], SELECTED) expected = setIn(expected, ['nill', META, 'selected'], SELECTED_END) - assertDeepEqualEson(t, actual, expected) + assertDeepEqualEson(actual, expected) // test whether old selection results are cleaned up const selection2 = { @@ -382,10 +381,10 @@ test('selection (object)', t => { let expected2 = eson expected2 = setIn(expected2, ['nill', META, 'selected'], SELECTED) expected2 = setIn(expected2, ['bool', META, 'selected'], SELECTED_END) - assertDeepEqualEson(t, actual2, expected2) + assertDeepEqualEson(actual2, expected2) }) -test('selection (array)', t => { +test('selection (array)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -405,10 +404,10 @@ test('selection (array)', t => { expected = setIn(expected, ['obj', 'arr', '0', META, 'selected'], SELECTED_END) expected = setIn(expected, ['obj', 'arr', '1', META, 'selected'], SELECTED) - assertDeepEqualEson(t, actual, expected) + assertDeepEqualEson(actual, expected) }) -test('selection (value)', t => { +test('selection (value)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -424,10 +423,10 @@ test('selection (value)', t => { const actual = applySelection(eson, selection) const expected = setIn(eson, ['obj', 'arr', '2', 'first', META, 'selected'], SELECTED_END) - assertDeepEqualEson(t, actual, expected) + assertDeepEqualEson(actual, expected) }) -test('selection (node)', t => { +test('selection (node)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -443,10 +442,10 @@ test('selection (node)', t => { const actual = applySelection(eson, selection) const expected = setIn(eson, ['obj', 'arr', META, 'selected'], SELECTED_END) - assertDeepEqualEson(t, actual, expected) + assertDeepEqualEson(actual, expected) }) -test('pathsFromSelection (object)', t => { +test('pathsFromSelection (object)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -460,14 +459,14 @@ test('pathsFromSelection (object)', t => { end: ['nill'] } - t.deepEqual(pathsFromSelection(eson, selection), [ + expect(pathsFromSelection(eson, selection)).toEqual([ ['obj'], ['str'], ['nill'] ]) }) -test('pathsFromSelection (array)', t => { +test('pathsFromSelection (array)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -481,13 +480,13 @@ test('pathsFromSelection (array)', t => { end: ['obj', 'arr', '0'] // note the "wrong" order of start and end } - t.deepEqual(pathsFromSelection(eson, selection), [ + expect(pathsFromSelection(eson, selection)).toEqual([ ['obj', 'arr', '0'], ['obj', 'arr', '1'] ]) }) -test('pathsFromSelection (value)', t => { +test('pathsFromSelection (value)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -501,12 +500,12 @@ test('pathsFromSelection (value)', t => { end: ['obj', 'arr', '2', 'first'] } - t.deepEqual(pathsFromSelection(eson, selection), [ + expect(pathsFromSelection(eson, selection)).toEqual([ ['obj', 'arr', '2', 'first'], ]) }) -test('pathsFromSelection (before)', t => { +test('pathsFromSelection (before)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -519,10 +518,10 @@ test('pathsFromSelection (before)', t => { before: ['obj', 'arr', '2', 'first'] } - t.deepEqual(pathsFromSelection(eson, selection), []) + expect(pathsFromSelection(eson, selection)).toEqual([]) }) -test('pathsFromSelection (after)', t => { +test('pathsFromSelection (after)', () => { const eson = jsonToEson({ "obj": { "arr": [1,2, {"first":3,"last":4}] @@ -535,7 +534,7 @@ test('pathsFromSelection (after)', t => { after: ['obj', 'arr', '2', 'first'] } - t.deepEqual(pathsFromSelection(eson, selection), []) + expect(pathsFromSelection(eson, selection)).toEqual([]) }) // helper function to print JSON in the console diff --git a/src/header.js b/src/jsoneditor/header.js similarity index 100% rename from src/header.js rename to src/jsoneditor/header.js diff --git a/src/jsoneditor/index.react.js b/src/jsoneditor/index.react.js new file mode 100644 index 0000000..e87e2e5 --- /dev/null +++ b/src/jsoneditor/index.react.js @@ -0,0 +1,7 @@ +import _JSONEditor from './components/JSONEditor' + +export const JSONEditor = _JSONEditor + +export default JSONEditor + +// TODO: export util functions like immutability helpers diff --git a/src/jsoneditor/index.vanilla.js b/src/jsoneditor/index.vanilla.js new file mode 100644 index 0000000..62335c5 --- /dev/null +++ b/src/jsoneditor/index.vanilla.js @@ -0,0 +1,275 @@ +import React, { createElement as h, Component } from 'react' +import * as ReactDOM from 'react-dom' +import JSONEditor from './components/JSONEditor' +import CodeMode from './components/CodeMode' +import TextMode from './components/TextMode' +import TreeMode from './components/TreeMode' +import { compileJSONPointer, parseJSONPointer } from './eson' + +const modes = { + code: CodeMode, + form: TreeMode, + text: TextMode, + tree: TreeMode, + view: TreeMode +} + +/** + * Create a new json editor + * @param {HTMLElement} container + * @param {Options} options + * @return {Object} + * @constructor + */ +function jsoneditor (container, options = {}) { + if (arguments.length > 2) { + throw new Error ('Passing JSON via the constructor has been deprecated. ' + + 'Please pass JSON via editor.set(json).') + } + + const editor = { + isJSONEditor: true, + + _container: container, + _options: options, + _schema: null, + _modes: modes, + _mode: null, + _component: null + } + + /** + * Set JSON object in editor + * @param {Object | Array | string | number | boolean | null} json JSON data + * @param {Options} [options] + */ + editor.set = function (json, options = {}) { + // TODO: remove options from editor.set, move them to global options instead + editor._component.set(json, options) + } + + /** + * Get JSON from the editor + * @returns {Object | Array | string | number | boolean | null} json + */ + editor.get = function () { + return editor._component.get() + } + + /** + * Set a string containing a JSON document + * @param {string} text + */ + editor.setText = function (text) { + editor._component.setText(text) + } + + /** + * Get the JSON document as text + * @return {string} text + */ + editor.getText = function () { + return editor._component.getText() + } + + /** + * Format the json. + * Only applicable for mode 'text' and 'code' (in other modes nothing will + * happen) + */ + editor.format = function () { + const formatted = TextMode.format(editor._component.getText(), TextMode.getIndentation(this.props)) + editor._component.setText(formatted) + + // TODO: test whether this doesn't destroy the current state + } + + /** + * Compact the json. + * Only applicable for mode 'text' and 'code' (in other modes nothing will + * happen) + */ + editor.compact = function () { + const compacted = TextMode.compact(editor._component.getText()) + editor._component.setText(compacted) + + // TODO: test whether this doesn't destroy the current state + } + + /** + * Set a JSON schema for validation of the JSON object. + * To remove the schema, call JSONEditor.setSchema(null) + * @param {Object | null} schema + */ + editor.setSchema = function (schema) { + editor._schema = schema || null + editor._component.setSchema(schema) + } + + /** + * Expand one or multiple objects or arrays. + * + * Example usage: + * + * // expand one item at a specific path + * editor.expand(['foo', 1, 'bar']) + * + * // expand all items nested at a maximum depth of 2 + * editor.expand(function (path) { + * return path.length <= 2 + * }) + * + * @param {Path | function (path: Path) : boolean} callback + */ + editor.expand = function (callback) { + editor._component.expand(callback) + } + + /** + * Collapse one or multiple objects or arrays + * + * Example usage: + * + * // collapse one item at a specific path + * editor.collapse(['foo', 1, 'bar']) + * + * // collapse all items nested deeper than 2 + * editor.collapse(function (path) { + * return path.length > 2 + * }) + * + * @param {Path | function (path: Path) : boolean} callback + */ + editor.collapse = function (callback) { + editor._component.collapse(callback) + } + + /** + * Apply a JSONPatch to the current JSON document + * @param {Array} actions JSONPatch actions + * @return {Array} Returns a JSONPatch to revert the applied patch + */ + editor.patch = function (actions) { + return editor._component.patch(actions) + } + + /** + * Change the mode of the editor + * @param {'tree' | 'text'} mode + */ + editor.setMode = function (mode) { + // TODO: strongly simplify .setMode, no error handling or logic here + + if (mode === editor._mode) { + // mode stays the same. do nothing + return + } + + let success = false + let initialChildCount = editor._container.children.length + let component = null + try { + // find the constructor for the selected mode + const constructor = editor._modes[mode] + if (!constructor) { + throw new Error('Unknown mode "' + mode + '". ' + + 'Choose from: ' + Object.keys(modes).join(', ')) + } + + function handleChangeMode (mode) { + // we execute editor.setMode on the next tick, after the click event + // has been finished. This is a workaround for preact which does not + // neatly replace a rendered app whilst the event is still being handled. + setTimeout(() => { + const prevMode = editor._mode + + editor.setMode(mode) + + if (editor._options.onChangeMode) { + editor._options.onChangeMode(mode, prevMode) + } + }) + } + + function handleError (err) { + if (editor._options && editor._options.onError) { + editor._options.onError(err) + } + else { + console.error(err) + } + } + + // create new component + component = ReactDOM.render( + h(constructor, { + ...options, + mode, + onChangeMode: handleChangeMode, + onError: handleError + }), + editor._container) + + // apply JSON schema (if any) + try { + component.setSchema(editor._schema) + } + catch (err) { + handleError(err) + } + + // set JSON (this can throw an error) + const text = editor._component ? editor._component.getText() : '{}' + component.setText(text) + + // when setText didn't fail, we will reach this point + success = true + } + catch (err) { + console.error(err) + } + finally { + if (success) { + editor._mode = mode + editor._component = component + } + else { + // TODO: fall back to text mode when loading code mode failed? + + // remove the just created component if an error occurred during construction + // (for example when construction or setText failed) + const childCount = editor._container.children.length + if (childCount !== initialChildCount) { + editor._container.removeChild(editor._container.lastChild) + } + } + } + } + + /** + * Remove the editor from the DOM and clean up workers + */ + editor.destroy = function () { + ReactDOM.unmountComponentAtNode(editor._container) + } + + const mode = options && options.mode || (options.modes && options.modes[0]) || 'tree'; + editor.setMode(mode) + + return editor +} + +// expose util functions +jsoneditor.utils = { + compileJSONPointer, + parseJSONPointer +} + +// expose React component +jsoneditor.JSONEditor = JSONEditor + +// expose React itself +jsoneditor.React = React +jsoneditor.ReactDOM = ReactDOM + +module.exports = jsoneditor diff --git a/src/patchEson.js b/src/jsoneditor/patchEson.js similarity index 99% rename from src/patchEson.js rename to src/jsoneditor/patchEson.js index 1bd3e0d..195fbeb 100644 --- a/src/patchEson.js +++ b/src/jsoneditor/patchEson.js @@ -2,7 +2,6 @@ import isEqual from 'lodash/isEqual' import initial from 'lodash/initial' import last from 'lodash/last' -import type { ESON, Path, ESONPatch } from './types' import { setIn, updateIn, getIn, deleteIn, insertAt, cloneWithSymbols diff --git a/test/patchEson.test.js b/src/jsoneditor/patchEson.test.js similarity index 76% rename from test/patchEson.test.js rename to src/jsoneditor/patchEson.test.js index b27dff1..9cad306 100644 --- a/test/patchEson.test.js +++ b/src/jsoneditor/patchEson.test.js @@ -1,10 +1,11 @@ +'use strict' + import { readFileSync } from 'fs' -import test from 'ava' -import { META, jsonToEson, esonToJson } from '../src/eson' -import { patchEson } from '../src/patchEson' +import { META, jsonToEson, esonToJson } from './eson' +import { patchEson } from './patchEson' import { assertDeepEqualEson } from './utils/assertDeepEqualEson' -test('jsonpatch add', t => { +test('jsonpatch add', () => { const json = { arr: [1,2,3], obj: {a : 2} @@ -19,16 +20,16 @@ test('jsonpatch add', t => { const patchedData = result.data const revert = result.revert - assertDeepEqualEson(t, patchedData, jsonToEson({ + assertDeepEqualEson(patchedData, jsonToEson({ arr: [1,2,3], obj: {a : 2, b: {foo: 'bar'}} })) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'remove', path: '/obj/b'} ]) }) -test('jsonpatch add: insert in matrix', t => { +test('jsonpatch add: insert in matrix', () => { const json = { arr: [1,2,3], obj: {a : 2} @@ -43,16 +44,16 @@ test('jsonpatch add: insert in matrix', t => { const patchedData = result.data const revert = result.revert - assertDeepEqualEson(t, patchedData, jsonToEson({ + assertDeepEqualEson(patchedData, jsonToEson({ arr: [1,4,2,3], obj: {a : 2} })) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'remove', path: '/arr/1'} ]) }) -test('jsonpatch add: append to matrix', t => { +test('jsonpatch add: append to matrix', () => { const json = { arr: [1,2,3], obj: {a : 2} @@ -67,16 +68,16 @@ test('jsonpatch add: append to matrix', t => { const patchedData = result.data const revert = result.revert - assertDeepEqualEson(t, patchedData, jsonToEson({ + assertDeepEqualEson(patchedData, jsonToEson({ arr: [1,2,3,4], obj: {a : 2} })) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'remove', path: '/arr/3'} ]) }) -test('jsonpatch remove', t => { +test('jsonpatch remove', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -93,11 +94,11 @@ test('jsonpatch remove', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - assertDeepEqualEson(t, patchedData, jsonToEson({ + assertDeepEqualEson(patchedData, jsonToEson({ arr: [1,3], obj: {} })) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'add', path: '/arr/1', value: 2, meta: {type: 'value'}}, {op: 'add', path: '/obj/a', value: 4, meta: {type: 'value', before: null}} ]) @@ -109,11 +110,11 @@ test('jsonpatch remove', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, patch) + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual(patch) }) -test('jsonpatch replace', t => { +test('jsonpatch replace', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -130,11 +131,11 @@ test('jsonpatch replace', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - assertDeepEqualEson(t, patchedData, jsonToEson({ + assertDeepEqualEson(patchedData, jsonToEson({ arr: [1,200,3], obj: {a: 400} })) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'replace', path: '/arr/1', value: 2, meta: {type: 'value'}}, {op: 'replace', path: '/obj/a', value: 4, meta: {type: 'value'}} ]) @@ -146,14 +147,14 @@ test('jsonpatch replace', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, [ + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual([ {op: 'replace', path: '/obj/a', value: 400, meta: {type: 'value'}}, {op: 'replace', path: '/arr/1', value: 200, meta: {type: 'value'}} ]) }) -test('jsonpatch replace (keep ids intact)', t => { +test('jsonpatch replace (keep ids intact)', () => { const json = { value: 42 } const patch = [ {op: 'replace', path: '/value', value: 100} @@ -165,10 +166,10 @@ test('jsonpatch replace (keep ids intact)', t => { const patchedData = patchEson(data, patch).data const patchedValueId = patchedData.value[META].id - t.is(patchedValueId, valueId) + expect(patchedValueId).toEqual(valueId) }) -test('jsonpatch copy', t => { +test('jsonpatch copy', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -184,11 +185,11 @@ test('jsonpatch copy', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - t.deepEqual(patchedJson, { + expect(patchedJson).toEqual({ arr: [1, 2, {a:4}, 3], obj: {a: 4} }) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'remove', path: '/arr/2'} ]) @@ -199,13 +200,13 @@ test('jsonpatch copy', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, [ + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual([ {op: 'add', path: '/arr/2', value: {a: 4}, meta: {type: 'Object'}} ]) }) -test('jsonpatch copy (keeps the same ids)', t => { +test('jsonpatch copy (keeps the same ids)', () => { const json = { foo: { bar: 42 } } const patch = [ {op: 'copy', from: '/foo', path: '/copied'} @@ -221,16 +222,16 @@ test('jsonpatch copy (keeps the same ids)', t => { const copiedId = patchedData.copied[META].id const patchedCopiedBarId = patchedData.copied.bar[META].id - t.is(patchedFooId, fooId, 'same foo id') - t.is(patchedBarId, barId, 'same bar id') + expect(patchedFooId).toEqual(fooId) + expect(patchedBarId).toEqual(barId) - t.not(copiedId, fooId, 'different id of property copied') + expect(copiedId).not.toEqual(fooId) // The id's of the copied childs are the same, that's okish, they will not bite each other - t.is(patchedCopiedBarId, patchedBarId, 'same copied bar id') + expect(patchedCopiedBarId).toEqual(patchedBarId) }) -test('jsonpatch move', t => { +test('jsonpatch move', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -246,11 +247,11 @@ test('jsonpatch move', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - t.is(result.error, null) - t.deepEqual(patchedJson, { + expect(result.error).toEqual(null) + expect(patchedJson).toEqual({ arr: [1, 2, {a:4}, 3] }) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'move', from: '/arr/2', path: '/obj'} ]) @@ -261,11 +262,11 @@ test('jsonpatch move', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, patch) + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual(patch) }) -test('jsonpatch move before', t => { +test('jsonpatch move before', () => { const json = { arr: [1,2,3], obj: {a : 4}, @@ -282,12 +283,12 @@ test('jsonpatch move before', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - t.is(result.error, null) - t.deepEqual(patchedJson, { + expect(result.error).toEqual(null) + expect(patchedJson).toEqual({ arr: [1, 2, {a:4}, 3], zzz: 'zzz' }) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'move', from: '/arr/2', path: '/obj', meta: {before: 'zzz'}} ]) @@ -298,11 +299,11 @@ test('jsonpatch move before', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, patch) + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual(patch) }) -test('jsonpatch move and replace', t => { +test('jsonpatch move and replace', () => { const json = { a: 2, b: 3 } const patch = [ @@ -317,11 +318,11 @@ test('jsonpatch move and replace', t => { const patchedJson = esonToJson(patchedData) // id of the replaced B must be kept intact - t.is(patchedData.b[META].id, data.b[META].id) + expect(patchedData.b[META].id).toEqual(data.b[META].id) - assertDeepEqualEson(t, patchedData, jsonToEson({b: 2})) - t.deepEqual(patchedJson, { b : 2 }) - t.deepEqual(revert, [ + assertDeepEqualEson(patchedData, jsonToEson({b: 2})) + expect(patchedJson).toEqual({ b : 2 }) + expect(revert).toEqual([ {op:'move', from: '/b', path: '/a'}, {op:'add', path:'/b', value: 3, meta: {type: 'value', before: 'b'}} ]) @@ -333,14 +334,14 @@ test('jsonpatch move and replace', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, [ + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual([ {op: 'remove', path: '/b'}, {op: 'move', from: '/a', path: '/b'} ]) }) -test('jsonpatch move and replace (nested)', t => { +test('jsonpatch move and replace (nested)', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -356,10 +357,10 @@ test('jsonpatch move and replace (nested)', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - t.deepEqual(patchedJson, { + expect(patchedJson).toEqual({ arr: {a:4} }) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op:'move', from: '/arr', path: '/obj'}, {op:'add', path:'/arr', value: [1,2,3], meta: {type: 'Array'}} ]) @@ -371,14 +372,14 @@ test('jsonpatch move and replace (nested)', t => { const revert2 = result2.revert const patchedJson2 = esonToJson(patchedData2) - t.deepEqual(patchedJson2, json) - t.deepEqual(revert2, [ + expect(patchedJson2).toEqual(json) + expect(revert2).toEqual([ {op: 'remove', path: '/arr'}, {op: 'move', from: '/obj', path: '/arr'} ]) }) -test('jsonpatch move (keep id intact)', t => { +test('jsonpatch move (keep id intact)', () => { const json = { value: 42 } const patch = [ {op: 'move', from: '/value', path: '/moved'} @@ -390,10 +391,10 @@ test('jsonpatch move (keep id intact)', t => { const patchedData = patchEson(data, patch).data const patchedValueId = patchedData.moved[META].id - t.is(patchedValueId, valueId) + expect(patchedValueId).toEqual(valueId) }) -test('jsonpatch move and replace (keep ids intact)', t => { +test('jsonpatch move and replace (keep ids intact)', () => { const json = { a: 2, b: 3 } const patch = [ {op: 'move', from: '/a', path: '/b'} @@ -402,15 +403,15 @@ test('jsonpatch move and replace (keep ids intact)', t => { const data = jsonToEson(json) const bId = data.b[META].id - t.deepEqual(data[META].props, ['a', 'b']) + expect(data[META].props).toEqual(['a', 'b']) const patchedData = patchEson(data, patch).data - t.is(patchedData.b[META].id, bId) - t.deepEqual(patchedData[META].props, ['b']) + expect(patchedData.b[META].id).toEqual(bId) + expect(patchedData[META].props).toEqual(['b']) }) -test('jsonpatch test (ok)', t => { +test('jsonpatch test (ok)', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -427,18 +428,18 @@ test('jsonpatch test (ok)', t => { const revert = result.revert const patchedJson = esonToJson(patchedData) - t.deepEqual(patchedJson, { + expect(patchedJson).toEqual({ arr: [1,2,3], obj: {a : 4}, added: 'ok' }) - t.deepEqual(revert, [ + expect(revert).toEqual([ {op: 'remove', path: '/added'} ]) }) -test('jsonpatch test (fail: path not found)', t => { +test('jsonpatch test (fail: path not found)', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -456,15 +457,15 @@ test('jsonpatch test (fail: path not found)', t => { const patchedJson = esonToJson(patchedData) // patch shouldn't be applied - t.deepEqual(patchedJson, { + expect(patchedJson).toEqual({ arr: [1,2,3], obj: {a : 4} }) - t.deepEqual(revert, []) - t.is(result.error.toString(), 'Error: Test failed, path not found') + expect(revert).toEqual([]) + expect(result.error.toString()).toEqual('Error: Test failed, path not found') }) -test('jsonpatch test (fail: value not equal)', t => { +test('jsonpatch test (fail: value not equal)', () => { const json = { arr: [1,2,3], obj: {a : 4} @@ -482,12 +483,12 @@ test('jsonpatch test (fail: value not equal)', t => { const patchedJson = esonToJson(patchedData) // patch shouldn't be applied - t.deepEqual(patchedJson, { + expect(patchedJson).toEqual({ arr: [1,2,3], obj: {a : 4} }) - t.deepEqual(revert, []) - t.is(result.error.toString(), 'Error: Test failed, value differs') + expect(revert).toEqual([]) + expect(result.error.toString()).toEqual('Error: Test failed, value differs') }) // helper function to print JSON in the console diff --git a/src/jsoneditor/types.js b/src/jsoneditor/types.js new file mode 100644 index 0000000..7b12c45 --- /dev/null +++ b/src/jsoneditor/types.js @@ -0,0 +1,104 @@ +/** JSDoc type definitions */ + +/** + * @typedef {{} | [] | string | number | boolean | null} JSON + */ + +/** + * @typedef {{ + * name: string?, + * mode: 'code' | 'form' | 'text' | 'tree' | 'view'?, + * modes: string[]?, + * history: boolean?, + * indentation: number | string?, + * onChange: function (patch: ESONPatch, revert: ESONPatch)?, + * onChangeText: function ()?, + * onChangeMode: function (mode: string, prevMode: string)?, + * onError: function (err: Error)?, + * isPropertyEditable: function (Path)? + * isValueEditable: function (Path)?, + * escapeUnicode: boolean?, + * expand: function(path: Path) : boolean?, + * ajv: Object?, + * ace: Object? + * }} Options + */ + +/** + * @typedef {string[]} Path + */ + +/** + * @typedef {{ + * start?: Path, + * end?: Path, + * before?: Path, + * after?: Path, + * }} Selection + */ + +/** + * @typedef {{matches: ESONPointer[], active: ESONPointer, text: String}} SearchResult + */ + +/** + * @typedef {'value' | 'property'} ESONPointerArea + */ + +/** + * @typedef {{ + * path: Path, + * area?: ESONPointerArea + * }} ESONPointer + */ + +/** + * @typedef {'normal' | 'active'} SearchResultStatus + */ + +/** + * @typedef {'Object' | 'Array' | 'value' | 'string'} ESONType + */ + +/** + * @typedef {{ + * op: 'add' | 'remove' | 'replace' | 'copy' | 'move' | 'test', + * path: string, + * from?: string, + * value?: *, + * meta?: ESONPatchOptions + * }} ESONPatchAction + */ + +/** + * @typedef {ESONPatchAction[]} ESONPatch + */ + +/** + * @typedef {{ + * id: string, + * path: Path, + * type: ESONType, + * before?: string + * props?: string[], + * expanded?: boolean, + * selected?: boolean, + * searchProperty?: SearchResultStatus, + * searchValue?: SearchResultStatus + * }} ESONPatchOptions + * + * // TODO: describe search results and selection + */ + +/** + * @typedef {Object | Array} ESON + */ + +/** + * TODO: change type of dataPath to Path? ESONPointer.path is an array, JSONSchemaError.path is a string -> make this consistent + * + * @typedef {{ + * dataPath: string, + * message: string + * }} JSONSchemaError + */ diff --git a/src/utils/arrayUtils.js b/src/jsoneditor/utils/arrayUtils.js similarity index 100% rename from src/utils/arrayUtils.js rename to src/jsoneditor/utils/arrayUtils.js diff --git a/src/jsoneditor/utils/assertDeepEqualEson.js b/src/jsoneditor/utils/assertDeepEqualEson.js new file mode 100644 index 0000000..e987b0a --- /dev/null +++ b/src/jsoneditor/utils/assertDeepEqualEson.js @@ -0,0 +1,39 @@ +import {META} from "../eson" +import lodashTransform from "lodash/transform" + +export function assertDeepEqualEson (actual, expected, path = [], ignoreIds = true) { + if (expected === undefined) { + throw new Error('Argument "expected" is undefined') + } + + // console.log('assertDeepEqualEson', actual, expected) + + const actualMeta = ignoreIds ? normalizeMetaIds(actual[META]) : actual[META] + const expectedMeta = ignoreIds ? normalizeMetaIds(expected[META]) : expected[META] + + expect(actualMeta).toEqual(expectedMeta) // `Meta data not equal, path=[${path.join(', ')}], actual[META]=${JSON.stringify(actualMeta)}, expected[META]=${JSON.stringify(expectedMeta)}` + + if (actualMeta.type === 'Array') { + expect(actual.length).toEqual(expected.length) // 'Actual lengths of arrays should be equal, path=[${path.join(\', \')}]' + actual.forEach((item, index) => assertDeepEqualEson(actual[index], expected[index], path.concat(index)), ignoreIds) + } + else if (actualMeta.type === 'Object') { + expect(Object.keys(actual).sort()).toEqual(Object.keys(expected).sort()) // 'Actual properties should be equal, path=[${path.join(\', \')}]' + actualMeta.props.forEach(key => assertDeepEqualEson(actual[key], expected[key], path.concat(key)), ignoreIds) + } + else { // actual[META].type === 'value' + expect(Object.keys(actual)).toEqual([]) // 'Value should not contain additional properties, path=[${path.join(\', \')}]' + } +} + +function normalizeMetaIds (meta) { + return lodashTransform(meta, (result, value, key) => { + if (key === 'id') { + result[key] = '[ID]' + } + else { + result[key] = value + } + }, {}) +} + diff --git a/src/utils/bindMethods.js b/src/jsoneditor/utils/bindMethods.js similarity index 100% rename from src/utils/bindMethods.js rename to src/jsoneditor/utils/bindMethods.js diff --git a/src/utils/domUtils.js b/src/jsoneditor/utils/domUtils.js similarity index 98% rename from src/utils/domUtils.js rename to src/jsoneditor/utils/domUtils.js index a31bca1..e2bfa34 100644 --- a/src/utils/domUtils.js +++ b/src/jsoneditor/utils/domUtils.js @@ -188,7 +188,7 @@ export function getInternetExplorerVersion() { if (navigator.appName === 'Microsoft Internet Explorer') { const ua = navigator.userAgent - const re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})") + const re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})") if (re.exec(ua) !== null) { rv = parseFloat( RegExp.$1 ) } diff --git a/src/utils/empty.js b/src/jsoneditor/utils/empty.js similarity index 100% rename from src/utils/empty.js rename to src/jsoneditor/utils/empty.js diff --git a/src/utils/immutabilityHelpers.js b/src/jsoneditor/utils/immutabilityHelpers.js similarity index 98% rename from src/utils/immutabilityHelpers.js rename to src/jsoneditor/utils/immutabilityHelpers.js index bf8a2cd..21a2841 100644 --- a/src/utils/immutabilityHelpers.js +++ b/src/jsoneditor/utils/immutabilityHelpers.js @@ -1,6 +1,4 @@ -'use strict'; - -import { isObjectOrArray, isObject } from './typeUtils' +import { isObjectOrArray } from './typeUtils' /** * Immutability helpers diff --git a/test/immutabilityHelpers.test.js b/src/jsoneditor/utils/immutabilityHelpers.test.js similarity index 65% rename from test/immutabilityHelpers.test.js rename to src/jsoneditor/utils/immutabilityHelpers.test.js index 21614ee..ebbe15f 100644 --- a/test/immutabilityHelpers.test.js +++ b/src/jsoneditor/utils/immutabilityHelpers.test.js @@ -1,8 +1,6 @@ -import test from 'ava'; -import { getIn, setIn, updateIn, deleteIn, insertAt, transform } from '../src/utils/immutabilityHelpers' +import { getIn, setIn, updateIn, deleteIn, insertAt } from './immutabilityHelpers' - -test('getIn', t => { +test('getIn', () => { const obj = { a: { b: { @@ -19,13 +17,13 @@ test('getIn', t => { ] } - t.deepEqual(getIn(obj, ['a', 'b']), {c: 2}) - t.is(getIn(obj, ['e', '1', 'f']), 5) - t.is(getIn(obj, ['e', '999', 'f']), undefined) - t.is(getIn(obj, ['non', 'existing', 'path']), undefined) + expect(getIn(obj, ['a', 'b'])).toEqual({c: 2}) + expect(getIn(obj, ['e', '1', 'f'])).toEqual(5) + expect(getIn(obj, ['e', '999', 'f'])).toBeUndefined() + expect(getIn(obj, ['non', 'existing', 'path'])).toBeUndefined() }) -test('setIn basic', t => { +test('setIn basic', () => { const obj = { a: { b: { @@ -36,7 +34,7 @@ test('setIn basic', t => { } const updated = setIn(obj, ['a', 'b', 'c'], 4) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: { c: 4 @@ -46,7 +44,7 @@ test('setIn basic', t => { }) // original should be unchanged - t.deepEqual (obj, { + expect(obj).toEqual({ a: { b: { c: 2 @@ -55,25 +53,25 @@ test('setIn basic', t => { d: 3 }) - t.truthy (obj !== updated) + expect(obj).not.toBe(updated) }) -test('setIn non existing path', t => { +test('setIn non existing path', () => { const obj = {} - t.throws(() => setIn(obj, ['a', 'b', 'c'], 4), /Path does not exist/) + expect(() => setIn(obj, ['a', 'b', 'c'], 4)).toThrow(/Path does not exist/) }) -test('setIn replace value with object should throw an exception', t => { +test('setIn replace value with object should throw an exception', () => { const obj = { a: 42, d: 3 } - t.throws(() => setIn(obj, ['a', 'b', 'c'], 4), /Path does not exist/) + expect(() => setIn(obj, ['a', 'b', 'c'], 4)).toThrow(/Path does not exist/) }) -test('setIn replace value inside nested array', t => { +test('setIn replace value inside nested array', () => { const obj = { a: [ 1, @@ -88,7 +86,7 @@ test('setIn replace value inside nested array', t => { const updated = setIn(obj, ['a', '2', 'c'], 8) - t.deepEqual (updated, { + expect(updated).toEqual({ a: [ 1, 2, @@ -101,23 +99,23 @@ test('setIn replace value inside nested array', t => { }) }) -test('setIn identical value should return the original object', t => { +test('setIn identical value should return the original object', () => { const obj = {a:1, b:2} const updated = setIn(obj, ['b'], 2) - t.is(updated, obj) // strict equal + expect(updated).toBe(obj) // strict equal }) -test('setIn identical value should return the original object (2)', t => { +test('setIn identical value should return the original object (2)', () => { const obj = {a:1, b: { c: 2}} const updated = setIn(obj, ['b', 'c'], 2) - t.is(updated, obj) // strict equal + expect(updated).toBe(obj) // strict equal }) -test('updateIn', t => { +test('updateIn', () => { const obj = { a: { b: { @@ -128,7 +126,7 @@ test('updateIn', t => { } const updated = updateIn(obj, ['a', 'b', 'c'], (value) => value + 100) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: { c: 102 @@ -138,7 +136,7 @@ test('updateIn', t => { }) // original should be unchanged - t.deepEqual (obj, { + expect(obj).toEqual({ a: { b: { c: 2 @@ -147,10 +145,10 @@ test('updateIn', t => { d: 3 }) - t.truthy (obj !== updated) + expect(obj).not.toBe(updated) }) -test('updateIn (2)', t => { +test('updateIn (2)', () => { const obj = { a: { b: { @@ -161,7 +159,7 @@ test('updateIn (2)', t => { } const updated = updateIn(obj, ['a', 'b' ], (obj) => [1,2,3]) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: [1,2,3] }, @@ -169,7 +167,7 @@ test('updateIn (2)', t => { }) }) -test('updateIn (3)', t => { +test('updateIn (3)', () => { const obj = { a: { b: { @@ -180,7 +178,7 @@ test('updateIn (3)', t => { } const updated = updateIn(obj, ['a', 'e' ], (value) => 'foo-' + value) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: { c: 2 @@ -191,17 +189,17 @@ test('updateIn (3)', t => { }) }) -test('updateIn return identical value should return the original object', t => { +test('updateIn return identical value should return the original object', () => { const obj = { a: 2, b: 3 } const updated = updateIn(obj, ['b' ], (value) => 3) - t.is(updated, obj) + expect(updated).toBe(obj) }) -test('deleteIn', t => { +test('deleteIn', () => { const obj = { a: { b: { @@ -213,7 +211,7 @@ test('deleteIn', t => { } const updated = deleteIn(obj, ['a', 'b', 'c']) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: { d: 3 @@ -223,7 +221,7 @@ test('deleteIn', t => { }) // original should be unchanged - t.deepEqual (obj, { + expect(obj).toEqual({ a: { b: { c: 2, @@ -233,10 +231,10 @@ test('deleteIn', t => { e: 4 }) - t.truthy (obj !== updated) + expect(obj).not.toBe(updated) }) -test('deleteIn array', t => { +test('deleteIn array', () => { const obj = { a: { b: [1, {c: 2, d: 3} , 4] @@ -245,7 +243,7 @@ test('deleteIn array', t => { } const updated = deleteIn(obj, ['a', 'b', '1', 'c']) - t.deepEqual (updated, { + expect(updated).toEqual({ a: { b: [1, {d: 3} , 4] }, @@ -253,26 +251,26 @@ test('deleteIn array', t => { }) // original should be unchanged - t.deepEqual (obj, { + expect(obj).toEqual({ a: { b: [1, {c: 2, d: 3} , 4] }, e: 5 }) - t.truthy (obj !== updated) + expect(obj).not.toBe(updated) }) -test('deleteIn non existing path', t => { +test('deleteIn non existing path', () => { const obj = { a: {}} const updated = deleteIn(obj, ['a', 'b']) - t.truthy (updated === obj) + expect(updated).toBe(obj) }) -test('insertAt', t => { +test('insertAt', () => { const obj = { a: [1,2,3]} const updated = insertAt(obj, ['a', '2'], 8) - t.deepEqual(updated, {a: [1,2,8,3]}) + expect(updated).toEqual({a: [1,2,8,3]}) }) diff --git a/src/utils/jsonUtils.js b/src/jsoneditor/utils/jsonUtils.js similarity index 100% rename from src/utils/jsonUtils.js rename to src/jsoneditor/utils/jsonUtils.js diff --git a/src/utils/keyBindings.js b/src/jsoneditor/utils/keyBindings.js similarity index 98% rename from src/utils/keyBindings.js rename to src/jsoneditor/utils/keyBindings.js index 3de5594..1fffc67 100644 --- a/src/utils/keyBindings.js +++ b/src/jsoneditor/utils/keyBindings.js @@ -78,7 +78,7 @@ function normalizeKeyCombo (combo) { return upper } -const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0 +const isMac = window.navigator.platform.toUpperCase().indexOf('MAC') >= 0 const metaCodes = { 'Ctrl': true, diff --git a/src/utils/schemaUtils.js b/src/jsoneditor/utils/schemaUtils.js similarity index 100% rename from src/utils/schemaUtils.js rename to src/jsoneditor/utils/schemaUtils.js diff --git a/src/utils/shouldComponentUpdate.js b/src/jsoneditor/utils/shouldComponentUpdate.js similarity index 100% rename from src/utils/shouldComponentUpdate.js rename to src/jsoneditor/utils/shouldComponentUpdate.js diff --git a/src/utils/stringUtils.js b/src/jsoneditor/utils/stringUtils.js similarity index 88% rename from src/utils/stringUtils.js rename to src/jsoneditor/utils/stringUtils.js index e473b5c..99de62e 100644 --- a/src/utils/stringUtils.js +++ b/src/jsoneditor/utils/stringUtils.js @@ -18,7 +18,7 @@ export function escapeHTML (text, escapeUnicode = false) { } htmlEscaped = htmlEscaped - .replace(/ /g, ' \u00A0') // replace double space with an nbsp and space + .replace(/ {2}/g, ' \u00A0') // replace double space with an nbsp and space .replace(/^ /, '\u00A0') // space at start .replace(/ $/, '\u00A0') // space at end @@ -48,8 +48,8 @@ export function escapeUnicodeChars (text) { * @return {String} text */ export function unescapeHTML (escapedText) { - var json = '"' + escapeJSON(escapedText) + '"' - var htmlEscaped = parseJSON(json) + const json = '"' + escapeJSON(escapedText) + '"' + const htmlEscaped = parseJSON(json) return htmlEscaped.replace(/\u00A0/g, ' ') // nbsp character } @@ -65,24 +65,24 @@ export function unescapeHTML (escapedText) { */ export function escapeJSON (text) { // TODO: replace with some smart regex (only when a new solution is faster!) - var escaped = '' - var i = 0 + let escaped = '' + let i = 0 while (i < text.length) { - var c = text.charAt(i) - if (c == '\n') { + let c = text.charAt(i) + if (c === '\n') { escaped += '\\n' } - else if (c == '\\') { + else if (c === '\\') { escaped += c i++ c = text.charAt(i) - if (c === '' || '"\\/bfnrtu'.indexOf(c) == -1) { + if (c === '' || '"\\/bfnrtu'.indexOf(c) === -1) { escaped += '\\' // no valid escape character } escaped += c } - else if (c == '"') { + else if (c === '"') { escaped += '\\"' } else { diff --git a/src/jsoneditor/utils/stringUtils.test.js b/src/jsoneditor/utils/stringUtils.test.js new file mode 100644 index 0000000..1a842da --- /dev/null +++ b/src/jsoneditor/utils/stringUtils.test.js @@ -0,0 +1,25 @@ +import { escapeHTML, unescapeHTML, findUniqueName } from './stringUtils' + +test('escapeHTML', () => { + expect(escapeHTML(' hello ')).toEqual('\u00A0\u00A0 hello \u00A0') + expect(escapeHTML('\u00A0 hello')).toEqual('\u00A0 hello') + expect(escapeHTML('hello\nworld')).toEqual('hello\\nworld') + + // TODO: test escapeHTML more thoroughly +}) + +test('unescapeHTML', () => { + expect(unescapeHTML(' \u00A0 hello \u00A0')).toEqual(' hello ') + expect(unescapeHTML('\u00A0 hello')).toEqual(' hello') + + expect(unescapeHTML('hello\\nworld')).toEqual('hello\nworld') + + // TODO: test unescapeHTML more thoroughly +}) + +test('findUniqueName', () => { + expect(findUniqueName('other', ['a', 'b', 'c'])).toEqual('other') + expect(findUniqueName('b', ['a', 'b', 'c'])).toEqual('b (copy)') + expect(findUniqueName('b', ['a', 'b', 'c', 'b (copy)'])).toEqual('b (copy 2)') + expect(findUniqueName('b', ['a', 'b', 'c', 'b (copy)', 'b (copy 2)'])).toEqual('b (copy 3)') +}) diff --git a/src/utils/typeUtils.js b/src/jsoneditor/utils/typeUtils.js similarity index 100% rename from src/utils/typeUtils.js rename to src/jsoneditor/utils/typeUtils.js diff --git a/src/types.js b/src/types.js deleted file mode 100644 index 826040b..0000000 --- a/src/types.js +++ /dev/null @@ -1,114 +0,0 @@ -// @flow - -/** - * - * @typedef {{ - * name: string?, - * mode: 'code' | 'form' | 'text' | 'tree' | 'view'?, - * modes: string[]?, - * history: boolean?, - * indentation: number | string?, - * onChange: function (patch: ESONPatch, revert: ESONPatch)?, - * onChangeText: function ()?, - * onChangeMode: function (mode: string, prevMode: string)?, - * onError: function (err: Error)?, - * isPropertyEditable: function (Path)? - * isValueEditable: function (Path)?, - * escapeUnicode: boolean?, - * expand: function(path: Path) : boolean?, - * ajv: Object?, - * ace: Object? - * }} Options - * - * @typedef {string[]} Path - * - * @typedef {{matches: ESONPointer[], active: ESONPointer, text: String}} SearchResult - * - */ - -// FIXME: redefine all ESON related types - - -/**************************** GENERIC JSON TYPES ******************************/ - -export type JSONType = | string | number | boolean | null | JSONObjectType | JSONArrayType -export type JSONObjectType = { [key:string]: JSONType } -export type JSONArrayType = JSONType[] - - -/********************** TYPES FOR THE ESON OBJECT MODEL *************************/ - -export type SearchResultStatus = 'normal' | 'active' -export type ESONPointerArea = 'value' | 'property' - -export type ESONObject = { - _meta: { - type: 'Object', - path: Path, - expanded?: boolean, - selected?: boolean, - searchProperty?: SearchResultStatus, - searchValue?: SearchResultStatus - } -} - -export type ESONArray = { - _meta: { - type: 'Array', - path: Path, - length: number - expanded?: boolean, - selected?: boolean, - searchProperty?: SearchResultStatus, - searchValue?: SearchResultStatus - } -} - -export type ESONValue = { - _meta: { - type: 'value' | 'string', - path: Path, - value: null | boolean | string | number, - selected?: boolean, - searchProperty?: SearchResultStatus, - searchValue?: SearchResultStatus - } -} - -export type ESON = ESONObject | ESONArray | ESONValue - -export type ESONType = 'Object' | 'Array' | 'value' | 'string' - -export type Path = string[] - -export type ESONPointer = { - path: Path, - area?: ESONPointerArea -} - -export type Selection = { - start?: Path, - end?: Path, - before?: Path, - after?: Path -} - -export type ESONPatchAction = { - op: string, // TODO: define allowed ops - path: string, - from?: string, - value?: any, - meta?: ESONPatchOptions -} -export type ESONPatch = ESONPatchAction[] - -export type ESONPatchOptions = { - type: ESONType, - expand: (Path) => boolean -} - -// TODO: ESONPointer.path is an array, JSONSchemaError.path is a string -> make this consistent -export type JSONSchemaError = { - dataPath: string, // TODO: change type to Path - message: string -} diff --git a/src_old/css/contextmenu.css b/src_old/css/contextmenu.css deleted file mode 100644 index 568c20d..0000000 --- a/src_old/css/contextmenu.css +++ /dev/null @@ -1,244 +0,0 @@ - -/* ContextMenu - main menu */ - -div.jsoneditor-contextmenu-root { - position: relative; - width: 0; - height: 0; -} - -div.jsoneditor-contextmenu { - position: absolute; - box-sizing: content-box; - z-index: 99999; -} - -div.jsoneditor-contextmenu ul, -div.jsoneditor-contextmenu li { - box-sizing: content-box; -} - -div.jsoneditor-contextmenu ul { - position: relative; - left: 0; - top: 0; - width: 124px; - - background: white; - border: 1px solid #d3d3d3; - box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3); - - list-style: none; - margin: 0; - padding: 0; -} - -div.jsoneditor-contextmenu ul li button { - padding: 0; - margin: 0; - width: 124px; - height: 24px; - border: none; - cursor: pointer; - color: #4d4d4d; - background: transparent; - - font-size: 10pt; - font-family: arial, sans-serif; - - box-sizing: border-box; - - line-height: 26px; - text-align: left; -} - -/* Fix button padding in firefox */ -div.jsoneditor-contextmenu ul li button::-moz-focus-inner { - padding: 0; - border: 0; -} - -div.jsoneditor-contextmenu ul li button:hover, -div.jsoneditor-contextmenu ul li button:focus { - color: #1a1a1a; - background-color: #f5f5f5; - outline: none; -} - -div.jsoneditor-contextmenu ul li button.jsoneditor-default { - width: 92px; -} - -div.jsoneditor-contextmenu ul li button.jsoneditor-expand { - float: right; - width: 32px; - height: 24px; - border-left: 1px solid #e5e5e5; -} - -div.jsoneditor-contextmenu div.jsoneditor-icon { - float: left; - width: 24px; - height: 24px; - border: none; - padding: 0; - margin: 0; - background-image: url('img/jsoneditor-icons.svg'); -} - -div.jsoneditor-contextmenu ul li button div.jsoneditor-expand { - float: right; - width: 24px; - height: 24px; - padding: 0; - margin: 0 4px 0 0; - background: url('img/jsoneditor-icons.svg') 0 -72px; - opacity: 0.4; -} - -div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand, -div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand, -div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand, -div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand, -div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand { - opacity: 1; -} - -div.jsoneditor-contextmenu div.jsoneditor-separator { - height: 0; - border-top: 1px solid #e5e5e5; - padding-top: 5px; - margin-top: 5px; -} - -div.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon { - background-position: -24px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon { - background-position: -24px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon { - background-position: 0 -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon { - background-position: 0 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon { - background-position: 0 -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon { - background-position: 0 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon { - background-position: -48px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon { - background-position: -48px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon { - background-position: -168px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon { - background-position: -168px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon { - background-position: -192px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon { - background-position: -192px 0; -} - -/* ContextMenu - sub menu */ - -div.jsoneditor-contextmenu ul li button.jsoneditor-selected, -div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover, -div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus { - color: white; - background-color: #ee422e; -} - -div.jsoneditor-contextmenu ul li { - overflow: hidden; -} - -div.jsoneditor-contextmenu ul li ul { - display: none; - position: relative; - left: -10px; - top: 0; - - border: none; - box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5); - padding: 0 10px; - - /* TODO: transition is not supported on IE8-9 */ - -webkit-transition: all 0.3s ease-out; - -moz-transition: all 0.3s ease-out; - -o-transition: all 0.3s ease-out; - transition: all 0.3s ease-out; -} - -div.jsoneditor-contextmenu ul li.jsoneditor-selected ul { -} - -div.jsoneditor-contextmenu ul li ul li button { - padding-left: 24px; - animation: all ease-in-out 1s; -} - -div.jsoneditor-contextmenu ul li ul li button:hover, -div.jsoneditor-contextmenu ul li ul li button:focus { - background-color: #f5f5f5; -} - -div.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon { - background-position: -144px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon{ - background-position: -144px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon { - background-position: -120px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon { - background-position: -120px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon { - background-position: -72px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon{ - background-position: -72px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon { - background-position: -96px -24px; -} -div.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon, -div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon{ - background-position: -96px 0; -} - -div.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon { - background-image: none; - width: 6px; -} diff --git a/src_old/css/img/description.txt b/src_old/css/img/description.txt deleted file mode 100644 index fe410a9..0000000 --- a/src_old/css/img/description.txt +++ /dev/null @@ -1,14 +0,0 @@ -JSON Editor Icons - -size: outer: 24x24 px - inner: 16x16 px - -blue background: RGBA 97b0f8ff -gray background: RGBA 4d4d4dff -grey background: RGBA d3d3d3ff - -red foreground: RGBA ff3300ff -green foreground: RGBA 13ae00ff - -characters are based on the Arial font - diff --git a/src_old/css/img/jsoneditor-icons.svg b/src_old/css/img/jsoneditor-icons.svg deleted file mode 100644 index 1b40068..0000000 --- a/src_old/css/img/jsoneditor-icons.svg +++ /dev/null @@ -1,893 +0,0 @@ - - - JSON Editor Icons - - - - image/svg+xml - - JSON Editor Icons - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src_old/css/jsoneditor.css b/src_old/css/jsoneditor.css deleted file mode 100644 index f5017df..0000000 --- a/src_old/css/jsoneditor.css +++ /dev/null @@ -1,449 +0,0 @@ - -div.jsoneditor { - -} - -div.jsoneditor-field, -div.jsoneditor-value, -div.jsoneditor-readonly { - border: 1px solid transparent; - min-height: 16px; - min-width: 32px; - padding: 2px; - margin: 1px; - word-wrap: break-word; - float: left; -} - -/* adjust margin of p elements inside editable divs, needed for Opera, IE */ -div.jsoneditor-field p, -div.jsoneditor-value p { - margin: 0; -} - -div.jsoneditor-value { - word-break: break-word; -} - -div.jsoneditor-readonly { - min-width: 16px; - color: gray; -} - -div.jsoneditor-empty { - border-color: lightgray; - border-style: dashed; - border-radius: 2px; -} - -div.jsoneditor-field.jsoneditor-empty::after, -div.jsoneditor-value.jsoneditor-empty::after { - pointer-events: none; - color: lightgray; - font-size: 8pt; -} - -div.jsoneditor-field.jsoneditor-empty::after { - content: "field"; -} - -div.jsoneditor-value.jsoneditor-empty::after { - content: "value"; -} - -div.jsoneditor-value.jsoneditor-url, -a.jsoneditor-value.jsoneditor-url { - color: green; - text-decoration: underline; -} - -a.jsoneditor-value.jsoneditor-url { - display: inline-block; - padding: 2px; - margin: 2px; -} - -a.jsoneditor-value.jsoneditor-url:hover, -a.jsoneditor-value.jsoneditor-url:focus { - color: #ee422e; -} - -div.jsoneditor td.jsoneditor-separator { - padding: 3px 0; - vertical-align: top; - color: gray; -} - -div.jsoneditor-field[contenteditable=true]:focus, -div.jsoneditor-field[contenteditable=true]:hover, -div.jsoneditor-value[contenteditable=true]:focus, -div.jsoneditor-value[contenteditable=true]:hover, -div.jsoneditor-field.jsoneditor-highlight, -div.jsoneditor-value.jsoneditor-highlight { - background-color: #FFFFAB; - border: 1px solid yellow; - border-radius: 2px; -} - -div.jsoneditor-field.jsoneditor-highlight-active, -div.jsoneditor-field.jsoneditor-highlight-active:focus, -div.jsoneditor-field.jsoneditor-highlight-active:hover, -div.jsoneditor-value.jsoneditor-highlight-active, -div.jsoneditor-value.jsoneditor-highlight-active:focus, -div.jsoneditor-value.jsoneditor-highlight-active:hover { - background-color: #ffee00; - border: 1px solid #ffc700; - border-radius: 2px; -} - -div.jsoneditor-value.jsoneditor-string { - color: #008000; -} - -div.jsoneditor-value.jsoneditor-object, -div.jsoneditor-value.jsoneditor-array { - min-width: 16px; - color: #808080; -} - -div.jsoneditor-value.jsoneditor-number { - color: #ee422e; -} - -div.jsoneditor-value.jsoneditor-boolean { - color: #ff8c00; -} - -div.jsoneditor-value.jsoneditor-null { - color: #004ED0; -} - -div.jsoneditor-value.jsoneditor-invalid { - color: #000000; -} - - - -div.jsoneditor-tree button { - width: 24px; - height: 24px; - padding: 0; - margin: 0; - border: none; - cursor: pointer; - background: transparent url('img/jsoneditor-icons.svg'); -} - -div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree, -div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree { - cursor: pointer; -} - -div.jsoneditor-tree button.jsoneditor-collapsed { - background-position: 0 -48px; -} - -div.jsoneditor-tree button.jsoneditor-expanded { - background-position: 0 -72px; -} - -div.jsoneditor-tree button.jsoneditor-contextmenu { - background-position: -48px -72px; -} - -div.jsoneditor-tree button.jsoneditor-contextmenu:hover, -div.jsoneditor-tree button.jsoneditor-contextmenu:focus, -div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected, -tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu { - background-position: -48px -48px; -} - -div.jsoneditor-tree *:focus { - outline: none; -} - -div.jsoneditor-tree button:focus { - /* TODO: nice outline for buttons with focus - outline: #97B0F8 solid 2px; - box-shadow: 0 0 8px #97B0F8; - */ - background-color: #f5f5f5; - outline: #e5e5e5 solid 1px; -} - -div.jsoneditor-tree button.jsoneditor-invisible { - visibility: hidden; - background: none; -} - -div.jsoneditor { - color: #1A1A1A; - border: 1px solid #3883fa; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - width: 100%; - height: 100%; - overflow: hidden; - position: relative; - padding: 0; - line-height: 100%; -} - - -div.jsoneditor-tree table.jsoneditor-tree { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0; -} - -div.jsoneditor-outer { - width: 100%; - height: 100%; - margin: -35px 0 0 0; - padding: 35px 0 0 0; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -textarea.jsoneditor-text, -.ace-jsoneditor { - min-height: 150px; -} - -div.jsoneditor-tree { - width: 100%; - height: 100%; - position: relative; - overflow: auto; -} - -textarea.jsoneditor-text { - width: 100%; - height: 100%; - margin: 0; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - outline-width: 0; - border: none; - background-color: white; - resize: none; -} - -tr.jsoneditor-highlight, -tr.jsoneditor-selected { - background-color: #e6e6e6; -} - -tr.jsoneditor-selected button.jsoneditor-dragarea, -tr.jsoneditor-selected button.jsoneditor-contextmenu { - visibility: hidden; -} - -tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea, -tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu { - visibility: visible; -} - -div.jsoneditor-tree button.jsoneditor-dragarea { - background: url('img/jsoneditor-icons.svg') -72px -72px; - cursor: move; -} - -div.jsoneditor-tree button.jsoneditor-dragarea:hover, -div.jsoneditor-tree button.jsoneditor-dragarea:focus, -tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea { - background-position: -72px -48px; -} - -div.jsoneditor tr, -div.jsoneditor th, -div.jsoneditor td { - padding: 0; - margin: 0; -} - -div.jsoneditor td { - vertical-align: top; -} - -div.jsoneditor td.jsoneditor-tree { - vertical-align: top; -} - -div.jsoneditor-field, -div.jsoneditor-value, -div.jsoneditor td, -div.jsoneditor th, -div.jsoneditor textarea, -.jsoneditor-schema-error { - font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; - font-size: 10pt; - color: #1A1A1A; -} - - - - - -/* popover */ -.jsoneditor-schema-error { - cursor: default; - display: inline-block; - /*font-family: arial, sans-serif;*/ - height: 24px; - line-height: 24px; - position: relative; - text-align: center; - width: 24px; -} - -div.jsoneditor-tree .jsoneditor-schema-error { - width: 24px; - height: 24px; - padding: 0; - margin: 0 4px 0 0; - background: url('img/jsoneditor-icons.svg') -168px -48px; -} - -.jsoneditor-schema-error .jsoneditor-popover { - background-color: #4c4c4c; - border-radius: 3px; - box-shadow: 0 0 5px rgba(0,0,0,0.4); - color: #fff; - display: none; - padding: 7px 10px; - position: absolute; - width: 200px; - z-index: 4; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above { - bottom: 32px; - left: -98px; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below { - top: 32px; - left: -98px; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left { - top: -7px; - right: 32px; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right { - top: -7px; - left: 32px; -} - -.jsoneditor-schema-error .jsoneditor-popover:before { - border-right: 7px solid transparent; - border-left: 7px solid transparent; - content: ''; - display: block; - left: 50%; - margin-left: -7px; - position: absolute; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before { - border-top: 7px solid #4c4c4c; - bottom: -7px; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before { - border-bottom: 7px solid #4c4c4c; - top: -7px; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before { - border-left: 7px solid #4c4c4c; - border-top: 7px solid transparent; - border-bottom: 7px solid transparent; - content: ''; - top: 19px; - right: -14px; - left: inherit; - margin-left: inherit; - margin-top: -7px; - position: absolute; -} - -.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before { - border-right: 7px solid #4c4c4c; - border-top: 7px solid transparent; - border-bottom: 7px solid transparent; - content: ''; - top: 19px; - left: -14px; - margin-left: inherit; - margin-top: -7px; - position: absolute; -} - -.jsoneditor-schema-error:hover .jsoneditor-popover, -.jsoneditor-schema-error:focus .jsoneditor-popover { - display: block; - -webkit-animation: fade-in .3s linear 1, move-up .3s linear 1; - -moz-animation: fade-in .3s linear 1, move-up .3s linear 1; - -ms-animation: fade-in .3s linear 1, move-up .3s linear 1; -} - -@-webkit-keyframes fade-in { - from { opacity: 0; } - to { opacity: 1; } -} -@-moz-keyframes fade-in { - from { opacity: 0; } - to { opacity: 1; } -} -@-ms-keyframes fade-in { - from { opacity: 0; } - to { opacity: 1; } -} -/*@-webkit-keyframes move-up {*/ - /*from { bottom: 24px; }*/ - /*to { bottom: 32px; }*/ -/*}*/ -/*@-moz-keyframes move-up {*/ - /*from { bottom: 24px; }*/ - /*to { bottom: 32px; }*/ -/*}*/ -/*@-ms-keyframes move-up {*/ - /*from { bottom: 24px; }*/ - /*to { bottom: 32px; }*/ -/*}*/ - - -/* JSON schema errors displayed at the bottom of the editor in mode text and code */ - -.jsoneditor .jsoneditor-text-errors { - width: 100%; - border-collapse: collapse; - background-color: #ffef8b; - border-top: 1px solid #ffd700; -} - -.jsoneditor .jsoneditor-text-errors td { - padding: 3px 6px; - vertical-align: middle; -} - -.jsoneditor-text-errors .jsoneditor-schema-error { - border: none; - width: 24px; - height: 24px; - padding: 0; - margin: 0 4px 0 0; - background: url('img/jsoneditor-icons.svg') -168px -48px; -} - diff --git a/src_old/css/menu.css b/src_old/css/menu.css deleted file mode 100644 index 6a4f44c..0000000 --- a/src_old/css/menu.css +++ /dev/null @@ -1,110 +0,0 @@ - -div.jsoneditor-menu { - width: 100%; - height: 35px; - padding: 2px; - margin: 0; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - color: white; - background-color: #3883fa; - border-bottom: 1px solid #3883fa; -} - -div.jsoneditor-menu > button, -div.jsoneditor-menu > div.jsoneditor-modes > button { - width: 26px; - height: 26px; - margin: 2px; - padding: 0; - border-radius: 2px; - border: 1px solid transparent; - background: transparent url('img/jsoneditor-icons.svg'); - color: white; - opacity: 0.8; - - font-family: arial, sans-serif; - font-size: 10pt; - - float: left; -} - -div.jsoneditor-menu > button:hover, -div.jsoneditor-menu > div.jsoneditor-modes > button:hover { - background-color: rgba(255,255,255,0.2); - border: 1px solid rgba(255,255,255,0.4); -} -div.jsoneditor-menu > button:focus, -div.jsoneditor-menu > button:active, -div.jsoneditor-menu > div.jsoneditor-modes > button:focus, -div.jsoneditor-menu > div.jsoneditor-modes > button:active { - background-color: rgba(255,255,255,0.3); -} -div.jsoneditor-menu > button:disabled, -div.jsoneditor-menu > div.jsoneditor-modes > button:disabled { - opacity: 0.5; -} - -div.jsoneditor-menu > button.jsoneditor-collapse-all { - background-position: 0 -96px; -} -div.jsoneditor-menu > button.jsoneditor-expand-all { - background-position: 0 -120px; -} -div.jsoneditor-menu > button.jsoneditor-undo { - background-position: -24px -96px; -} -div.jsoneditor-menu > button.jsoneditor-undo:disabled { - background-position: -24px -120px; -} -div.jsoneditor-menu > button.jsoneditor-redo { - background-position: -48px -96px; -} -div.jsoneditor-menu > button.jsoneditor-redo:disabled { - background-position: -48px -120px; -} -div.jsoneditor-menu > button.jsoneditor-compact { - background-position: -72px -96px; -} -div.jsoneditor-menu > button.jsoneditor-format { - background-position: -72px -120px; -} - -div.jsoneditor-menu > div.jsoneditor-modes { - display: inline-block; - float: left; -} - -div.jsoneditor-menu > div.jsoneditor-modes > button { - background-image: none; - width: auto; - padding-left: 6px; - padding-right: 6px; -} - -div.jsoneditor-menu > button.jsoneditor-separator, -div.jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-separator { - margin-left: 10px; -} - -div.jsoneditor-menu a { - font-family: arial, sans-serif; - font-size: 10pt; - color: white; - opacity: 0.8; - vertical-align: middle; -} - -div.jsoneditor-menu a:hover { - opacity: 1; -} - -div.jsoneditor-menu a.jsoneditor-poweredBy { - font-size: 8pt; - position: absolute; - right: 0; - top: 0; - padding: 10px; -} diff --git a/src_old/css/reset.css b/src_old/css/reset.css deleted file mode 100644 index 13f7334..0000000 --- a/src_old/css/reset.css +++ /dev/null @@ -1,25 +0,0 @@ -/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */ - -div.jsoneditor input { - height: auto; - border: inherit; -} - -div.jsoneditor input:focus { - border: none !important; - box-shadow: none !important; -} - -div.jsoneditor table { - border-collapse: collapse; - width: auto; -} - -div.jsoneditor td, -div.jsoneditor th { - padding: 0; - display: table-cell; - text-align: left; - vertical-align: inherit; - border-radius: inherit; -} diff --git a/src_old/css/searchbox.css b/src_old/css/searchbox.css deleted file mode 100644 index 2a92eb6..0000000 --- a/src_old/css/searchbox.css +++ /dev/null @@ -1,77 +0,0 @@ - -table.jsoneditor-search input, -table.jsoneditor-search div.jsoneditor-results { - font-family: arial, sans-serif; - font-size: 10pt; - color: #1A1A1A; - background: transparent; /* For Firefox */ -} - -table.jsoneditor-search div.jsoneditor-results { - color: white; - padding-right: 5px; - line-height: 24px; -} - -table.jsoneditor-search { - position: absolute; - right: 4px; - top: 4px; - border-collapse: collapse; - border-spacing: 0; -} - -table.jsoneditor-search div.jsoneditor-frame { - border: 1px solid transparent; - background-color: white; - padding: 0 2px; - margin: 0; -} - -table.jsoneditor-search div.jsoneditor-frame table { - border-collapse: collapse; -} - -table.jsoneditor-search input { - width: 120px; - border: none; - outline: none; - margin: 1px; - line-height: 20px; -} - -table.jsoneditor-search button { - width: 16px; - height: 24px; - padding: 0; - margin: 0; - border: none; - background: url('img/jsoneditor-icons.svg'); - vertical-align: top; -} - -table.jsoneditor-search button:hover { - background-color: transparent; -} - -table.jsoneditor-search button.jsoneditor-refresh { - width: 18px; - background-position: -99px -73px; -} - -table.jsoneditor-search button.jsoneditor-next { - cursor: pointer; - background-position: -124px -73px; -} -table.jsoneditor-search button.jsoneditor-next:hover { - background-position: -124px -49px; -} - -table.jsoneditor-search button.jsoneditor-previous { - cursor: pointer; - background-position: -148px -73px; - margin-right: 2px; -} -table.jsoneditor-search button.jsoneditor-previous:hover { - background-position: -148px -49px; -} diff --git a/src_old/docs/which files do I need.md b/src_old/docs/which files do I need.md deleted file mode 100644 index 726a8ae..0000000 --- a/src_old/docs/which files do I need.md +++ /dev/null @@ -1,41 +0,0 @@ -# Which files do I need? - -Ehhh, that's quite some files in this dist folder. Which files do I need? - - -## Full version - -If you're not sure which version to use, use the full version. - -Which files are needed when using the full version? - -- jsoneditor.min.js -- jsoneditor.map (optional, for debugging purposes only) -- jsoneditor.min.css -- img/jsoneditor-icons.svg - - -## Minimalist version - -The minimalist version has excluded the following libraries: - -- `ace` (via `brace`), used for the code editor. -- `ajv`, used for JSON schema validation. - -This reduces the the size of the minified and gzipped JavaScript file from -about 160 kB to about 40 kB. - -When to use the minimalist version? - -- If you don't need the mode "code" and don't need JSON schema validation. -- Or if you want to provide `ace` and/or `ajv` yourself via the configuration - options, for example when you already use Ace in other parts of your - web application too and don't want to bundle the library twice. - -Which files are needed when using the minimalist version? - -- jsoneditor-minimalist.min.js -- jsoneditor-minimalist.map (optional, for debugging purposes only) -- jsoneditor.min.css -- img/jsoneditor-icons.svg - diff --git a/src_old/js/ContextMenu.js b/src_old/js/ContextMenu.js deleted file mode 100644 index 338f40a..0000000 --- a/src_old/js/ContextMenu.js +++ /dev/null @@ -1,457 +0,0 @@ -'use strict'; - -var util = require('./util'); - -/** - * A context menu - * @param {Object[]} items Array containing the menu structure - * TODO: describe structure - * @param {Object} [options] Object with options. Available options: - * {function} close Callback called when the - * context menu is being closed. - * @constructor - */ -function ContextMenu (items, options) { - this.dom = {}; - - var me = this; - var dom = this.dom; - this.anchor = undefined; - this.items = items; - this.eventListeners = {}; - this.selection = undefined; // holds the selection before the menu was opened - this.onClose = options ? options.close : undefined; - - // create root element - var root = document.createElement('div'); - root.className = 'jsoneditor-contextmenu-root'; - dom.root = root; - - // create a container element - var menu = document.createElement('div'); - menu.className = 'jsoneditor-contextmenu'; - dom.menu = menu; - root.appendChild(menu); - - // create a list to hold the menu items - var list = document.createElement('ul'); - list.className = 'jsoneditor-menu'; - menu.appendChild(list); - dom.list = list; - dom.items = []; // list with all buttons - - // create a (non-visible) button to set the focus to the menu - var focusButton = document.createElement('button'); - dom.focusButton = focusButton; - var li = document.createElement('li'); - li.style.overflow = 'hidden'; - li.style.height = '0'; - li.appendChild(focusButton); - list.appendChild(li); - - function createMenuItems (list, domItems, items) { - items.forEach(function (item) { - if (item.type == 'separator') { - // create a separator - var separator = document.createElement('div'); - separator.className = 'jsoneditor-separator'; - li = document.createElement('li'); - li.appendChild(separator); - list.appendChild(li); - } - else { - var domItem = {}; - - // create a menu item - var li = document.createElement('li'); - list.appendChild(li); - - // create a button in the menu item - var button = document.createElement('button'); - button.className = item.className; - domItem.button = button; - if (item.title) { - button.title = item.title; - } - if (item.click) { - button.onclick = function (event) { - event.preventDefault(); - me.hide(); - item.click(); - }; - } - li.appendChild(button); - - // create the contents of the button - if (item.submenu) { - // add the icon to the button - var divIcon = document.createElement('div'); - divIcon.className = 'jsoneditor-icon'; - button.appendChild(divIcon); - button.appendChild(document.createTextNode(item.text)); - - var buttonSubmenu; - if (item.click) { - // submenu and a button with a click handler - button.className += ' jsoneditor-default'; - - var buttonExpand = document.createElement('button'); - domItem.buttonExpand = buttonExpand; - buttonExpand.className = 'jsoneditor-expand'; - buttonExpand.innerHTML = '
'; - li.appendChild(buttonExpand); - if (item.submenuTitle) { - buttonExpand.title = item.submenuTitle; - } - - buttonSubmenu = buttonExpand; - } - else { - // submenu and a button without a click handler - var divExpand = document.createElement('div'); - divExpand.className = 'jsoneditor-expand'; - button.appendChild(divExpand); - - buttonSubmenu = button; - } - - // attach a handler to expand/collapse the submenu - buttonSubmenu.onclick = function (event) { - event.preventDefault(); - me._onExpandItem(domItem); - buttonSubmenu.focus(); - }; - - // create the submenu - var domSubItems = []; - domItem.subItems = domSubItems; - var ul = document.createElement('ul'); - domItem.ul = ul; - ul.className = 'jsoneditor-menu'; - ul.style.height = '0'; - li.appendChild(ul); - createMenuItems(ul, domSubItems, item.submenu); - } - else { - // no submenu, just a button with clickhandler - button.innerHTML = '
' + item.text; - } - - domItems.push(domItem); - } - }); - } - createMenuItems(list, this.dom.items, items); - - // TODO: when the editor is small, show the submenu on the right instead of inline? - - // calculate the max height of the menu with one submenu expanded - this.maxHeight = 0; // height in pixels - items.forEach(function (item) { - var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24; - me.maxHeight = Math.max(me.maxHeight, height); - }); -} - -/** - * Get the currently visible buttons - * @return {Array.} buttons - * @private - */ -ContextMenu.prototype._getVisibleButtons = function () { - var buttons = []; - var me = this; - this.dom.items.forEach(function (item) { - buttons.push(item.button); - if (item.buttonExpand) { - buttons.push(item.buttonExpand); - } - if (item.subItems && item == me.expandedItem) { - item.subItems.forEach(function (subItem) { - buttons.push(subItem.button); - if (subItem.buttonExpand) { - buttons.push(subItem.buttonExpand); - } - // TODO: change to fully recursive method - }); - } - }); - - return buttons; -}; - -// currently displayed context menu, a singleton. We may only have one visible context menu -ContextMenu.visibleMenu = undefined; - -/** - * Attach the menu to an anchor - * @param {HTMLElement} anchor Anchor where the menu will be attached - * as sibling. - * @param {HTMLElement} [contentWindow] The DIV with with the (scrollable) contents - */ -ContextMenu.prototype.show = function (anchor, contentWindow) { - this.hide(); - - // determine whether to display the menu below or above the anchor - var showBelow = true; - if (contentWindow) { - var anchorRect = anchor.getBoundingClientRect(); - var contentRect = contentWindow.getBoundingClientRect(); - - if (anchorRect.bottom + this.maxHeight < contentRect.bottom) { - // fits below -> show below - } - else if (anchorRect.top - this.maxHeight > contentRect.top) { - // fits above -> show above - showBelow = false; - } - else { - // doesn't fit above nor below -> show below - } - } - - // position the menu - if (showBelow) { - // display the menu below the anchor - var anchorHeight = anchor.offsetHeight; - this.dom.menu.style.left = '0px'; - this.dom.menu.style.top = anchorHeight + 'px'; - this.dom.menu.style.bottom = ''; - } - else { - // display the menu above the anchor - this.dom.menu.style.left = '0px'; - this.dom.menu.style.top = ''; - this.dom.menu.style.bottom = '0px'; - } - - // attach the menu to the parent of the anchor - var parent = anchor.parentNode; - parent.insertBefore(this.dom.root, parent.firstChild); - - // create and attach event listeners - var me = this; - var list = this.dom.list; - this.eventListeners.mousedown = util.addEventListener(window, 'mousedown', function (event) { - // hide menu on click outside of the menu - var target = event.target; - if ((target != list) && !me._isChildOf(target, list)) { - me.hide(); - event.stopPropagation(); - event.preventDefault(); - } - }); - this.eventListeners.keydown = util.addEventListener(window, 'keydown', function (event) { - me._onKeyDown(event); - }); - - // move focus to the first button in the context menu - this.selection = util.getSelection(); - this.anchor = anchor; - setTimeout(function () { - me.dom.focusButton.focus(); - }, 0); - - if (ContextMenu.visibleMenu) { - ContextMenu.visibleMenu.hide(); - } - ContextMenu.visibleMenu = this; -}; - -/** - * Hide the context menu if visible - */ -ContextMenu.prototype.hide = function () { - // remove the menu from the DOM - if (this.dom.root.parentNode) { - this.dom.root.parentNode.removeChild(this.dom.root); - if (this.onClose) { - this.onClose(); - } - } - - // remove all event listeners - // all event listeners are supposed to be attached to document. - for (var name in this.eventListeners) { - if (this.eventListeners.hasOwnProperty(name)) { - var fn = this.eventListeners[name]; - if (fn) { - util.removeEventListener(window, name, fn); - } - delete this.eventListeners[name]; - } - } - - if (ContextMenu.visibleMenu == this) { - ContextMenu.visibleMenu = undefined; - } -}; - -/** - * Expand a submenu - * Any currently expanded submenu will be hided. - * @param {Object} domItem - * @private - */ -ContextMenu.prototype._onExpandItem = function (domItem) { - var me = this; - var alreadyVisible = (domItem == this.expandedItem); - - // hide the currently visible submenu - var expandedItem = this.expandedItem; - if (expandedItem) { - //var ul = expandedItem.ul; - expandedItem.ul.style.height = '0'; - expandedItem.ul.style.padding = ''; - setTimeout(function () { - if (me.expandedItem != expandedItem) { - expandedItem.ul.style.display = ''; - util.removeClassName(expandedItem.ul.parentNode, 'jsoneditor-selected'); - } - }, 300); // timeout duration must match the css transition duration - this.expandedItem = undefined; - } - - if (!alreadyVisible) { - var ul = domItem.ul; - ul.style.display = 'block'; - var height = ul.clientHeight; // force a reflow in Firefox - setTimeout(function () { - if (me.expandedItem == domItem) { - ul.style.height = (ul.childNodes.length * 24) + 'px'; - ul.style.padding = '5px 10px'; - } - }, 0); - util.addClassName(ul.parentNode, 'jsoneditor-selected'); - this.expandedItem = domItem; - } -}; - -/** - * Handle onkeydown event - * @param {Event} event - * @private - */ -ContextMenu.prototype._onKeyDown = function (event) { - var target = event.target; - var keynum = event.which; - var handled = false; - var buttons, targetIndex, prevButton, nextButton; - - if (keynum == 27) { // ESC - // hide the menu on ESC key - - // restore previous selection and focus - if (this.selection) { - util.setSelection(this.selection); - } - if (this.anchor) { - this.anchor.focus(); - } - - this.hide(); - - handled = true; - } - else if (keynum == 9) { // Tab - if (!event.shiftKey) { // Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == buttons.length - 1) { - // move to first button - buttons[0].focus(); - handled = true; - } - } - else { // Shift+Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == 0) { - // move to last button - buttons[buttons.length - 1].focus(); - handled = true; - } - } - } - else if (keynum == 37) { // Arrow Left - if (target.className == 'jsoneditor-expand') { - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton) { - prevButton.focus(); - } - } - handled = true; - } - else if (keynum == 38) { // Arrow Up - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton && prevButton.className == 'jsoneditor-expand') { - // skip expand button - prevButton = buttons[targetIndex - 2]; - } - if (!prevButton) { - // move to last button - prevButton = buttons[buttons.length - 1]; - } - if (prevButton) { - prevButton.focus(); - } - handled = true; - } - else if (keynum == 39) { // Arrow Right - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'jsoneditor-expand') { - nextButton.focus(); - } - handled = true; - } - else if (keynum == 40) { // Arrow Down - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'jsoneditor-expand') { - // skip expand button - nextButton = buttons[targetIndex + 2]; - } - if (!nextButton) { - // move to first button - nextButton = buttons[0]; - } - if (nextButton) { - nextButton.focus(); - handled = true; - } - handled = true; - } - // TODO: arrow left and right - - if (handled) { - event.stopPropagation(); - event.preventDefault(); - } -}; - -/** - * Test if an element is a child of a parent element. - * @param {Element} child - * @param {Element} parent - * @return {boolean} isChild - */ -ContextMenu.prototype._isChildOf = function (child, parent) { - var e = child.parentNode; - while (e) { - if (e == parent) { - return true; - } - e = e.parentNode; - } - - return false; -}; - -module.exports = ContextMenu; diff --git a/src_old/js/Highlighter.js b/src_old/js/Highlighter.js deleted file mode 100644 index 09b03f6..0000000 --- a/src_old/js/Highlighter.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -/** - * The highlighter can highlight/unhighlight a node, and - * animate the visibility of a context menu. - * @constructor Highlighter - */ -function Highlighter () { - this.locked = false; -} - -/** - * Hightlight given node and its childs - * @param {Node} node - */ -Highlighter.prototype.highlight = function (node) { - if (this.locked) { - return; - } - - if (this.node != node) { - // unhighlight current node - if (this.node) { - this.node.setHighlight(false); - } - - // highlight new node - this.node = node; - this.node.setHighlight(true); - } - - // cancel any current timeout - this._cancelUnhighlight(); -}; - -/** - * Unhighlight currently highlighted node. - * Will be done after a delay - */ -Highlighter.prototype.unhighlight = function () { - if (this.locked) { - return; - } - - var me = this; - if (this.node) { - this._cancelUnhighlight(); - - // do the unhighlighting after a small delay, to prevent re-highlighting - // the same node when moving from the drag-icon to the contextmenu-icon - // or vice versa. - this.unhighlightTimer = setTimeout(function () { - me.node.setHighlight(false); - me.node = undefined; - me.unhighlightTimer = undefined; - }, 0); - } -}; - -/** - * Cancel an unhighlight action (if before the timeout of the unhighlight action) - * @private - */ -Highlighter.prototype._cancelUnhighlight = function () { - if (this.unhighlightTimer) { - clearTimeout(this.unhighlightTimer); - this.unhighlightTimer = undefined; - } -}; - -/** - * Lock highlighting or unhighlighting nodes. - * methods highlight and unhighlight do not work while locked. - */ -Highlighter.prototype.lock = function () { - this.locked = true; -}; - -/** - * Unlock highlighting or unhighlighting nodes - */ -Highlighter.prototype.unlock = function () { - this.locked = false; -}; - -module.exports = Highlighter; diff --git a/src_old/js/History.js b/src_old/js/History.js deleted file mode 100644 index 1a8b0bf..0000000 --- a/src_old/js/History.js +++ /dev/null @@ -1,267 +0,0 @@ -'use strict'; - -var util = require('./util'); - -/** - * @constructor History - * Store action history, enables undo and redo - * @param {JSONEditor} editor - */ -function History (editor) { - this.editor = editor; - this.history = []; - this.index = -1; - - this.clear(); - - // map with all supported actions - this.actions = { - 'editField': { - 'undo': function (params) { - params.node.updateField(params.oldValue); - }, - 'redo': function (params) { - params.node.updateField(params.newValue); - } - }, - 'editValue': { - 'undo': function (params) { - params.node.updateValue(params.oldValue); - }, - 'redo': function (params) { - params.node.updateValue(params.newValue); - } - }, - 'changeType': { - 'undo': function (params) { - params.node.changeType(params.oldType); - }, - 'redo': function (params) { - params.node.changeType(params.newType); - } - }, - - 'appendNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.appendChild(node); - }); - } - }, - 'insertBeforeNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.insertBefore(node, params.beforeNode); - }); - } - }, - 'insertAfterNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - var afterNode = params.afterNode; - params.nodes.forEach(function (node) { - params.parent.insertAfter(params.node, afterNode); - afterNode = node; - }); - } - }, - 'removeNodes': { - 'undo': function (params) { - var parent = params.parent; - var beforeNode = parent.childs[params.index] || parent.append; - params.nodes.forEach(function (node) { - parent.insertBefore(node, beforeNode); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - } - }, - 'duplicateNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - var afterNode = params.afterNode; - params.nodes.forEach(function (node) { - params.parent.insertAfter(node, afterNode); - afterNode = node; - }); - } - }, - 'moveNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode); - }); - } - }, - - 'sort': { - 'undo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.oldSort; - node.childs = params.oldChilds; - node.showChilds(); - }, - 'redo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.newSort; - node.childs = params.newChilds; - node.showChilds(); - } - } - - // TODO: restore the original caret position and selection with each undo - // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" - }; -} - -/** - * The method onChange is executed when the History is changed, and can - * be overloaded. - */ -History.prototype.onChange = function () {}; - -/** - * Add a new action to the history - * @param {String} action The executed action. Available actions: "editField", - * "editValue", "changeType", "appendNode", - * "removeNode", "duplicateNode", "moveNode" - * @param {Object} params Object containing parameters describing the change. - * The parameters in params depend on the action (for - * example for "editValue" the Node, old value, and new - * value are provided). params contains all information - * needed to undo or redo the action. - */ -History.prototype.add = function (action, params) { - this.index++; - this.history[this.index] = { - 'action': action, - 'params': params, - 'timestamp': new Date() - }; - - // remove redo actions which are invalid now - if (this.index < this.history.length - 1) { - this.history.splice(this.index + 1, this.history.length - this.index - 1); - } - - // fire onchange event - this.onChange(); -}; - -/** - * Clear history - */ -History.prototype.clear = function () { - this.history = []; - this.index = -1; - - // fire onchange event - this.onChange(); -}; - -/** - * Check if there is an action available for undo - * @return {Boolean} canUndo - */ -History.prototype.canUndo = function () { - return (this.index >= 0); -}; - -/** - * Check if there is an action available for redo - * @return {Boolean} canRedo - */ -History.prototype.canRedo = function () { - return (this.index < this.history.length - 1); -}; - -/** - * Undo the last action - */ -History.prototype.undo = function () { - if (this.canUndo()) { - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.undo) { - action.undo(obj.params); - if (obj.params.oldSelection) { - this.editor.setSelection(obj.params.oldSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } - } - this.index--; - - // fire onchange event - this.onChange(); - } -}; - -/** - * Redo the last action - */ -History.prototype.redo = function () { - if (this.canRedo()) { - this.index++; - - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.redo) { - action.redo(obj.params); - if (obj.params.newSelection) { - this.editor.setSelection(obj.params.newSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } - } - - // fire onchange event - this.onChange(); - } -}; - -/** - * Destroy history - */ -History.prototype.destroy = function () { - this.editor = null; - - this.history = []; - this.index = -1; -}; - -module.exports = History; diff --git a/src_old/js/JSONEditor.js b/src_old/js/JSONEditor.js deleted file mode 100644 index 7420d49..0000000 --- a/src_old/js/JSONEditor.js +++ /dev/null @@ -1,385 +0,0 @@ -'use strict'; - -var Ajv; -try { - Ajv = require('ajv'); -} -catch (err) { - // no problem... when we need Ajv we will throw a neat exception -} - -var treemode = require('./treemode'); -var textmode = require('./textmode'); -var util = require('./util'); - -/** - * @constructor JSONEditor - * @param {Element} container Container element - * @param {Object} [options] Object with options. available options: - * {String} mode Editor mode. Available values: - * 'tree' (default), 'view', - * 'form', 'text', and 'code'. - * {function} onChange Callback method, triggered - * on change of contents - * {function} onError Callback method, triggered - * when an error occurs - * {Boolean} search Enable search box. - * True by default - * Only applicable for modes - * 'tree', 'view', and 'form' - * {Boolean} history Enable history (undo/redo). - * True by default - * Only applicable for modes - * 'tree', 'view', and 'form' - * {String} name Field name for the root node. - * Only applicable for modes - * 'tree', 'view', and 'form' - * {Number} indentation Number of indentation - * spaces. 4 by default. - * Only applicable for - * modes 'text' and 'code' - * {boolean} escapeUnicode If true, unicode - * characters are escaped. - * false by default. - * {boolean} sortObjectKeys If true, object keys are - * sorted before display. - * false by default. - * @param {Object | undefined} json JSON object - */ -function JSONEditor (container, options, json) { - if (!(this instanceof JSONEditor)) { - throw new Error('JSONEditor constructor called without "new".'); - } - - // check for unsupported browser (IE8 and older) - var ieVersion = util.getInternetExplorerVersion(); - if (ieVersion != -1 && ieVersion < 9) { - throw new Error('Unsupported browser, IE9 or newer required. ' + - 'Please install the newest version of your browser.'); - } - - if (options) { - // check for deprecated options - if (options.error) { - console.warn('Option "error" has been renamed to "onError"'); - options.onError = options.error; - delete options.error; - } - if (options.change) { - console.warn('Option "change" has been renamed to "onChange"'); - options.onChange = options.change; - delete options.change; - } - if (options.editable) { - console.warn('Option "editable" has been renamed to "onEditable"'); - options.onEditable = options.editable; - delete options.editable; - } - - // validate options - if (options) { - var VALID_OPTIONS = [ - 'ace', 'theme', - 'ajv', 'schema', - 'onChange', 'onEditable', 'onError', 'onModeChange', - 'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation', 'sortObjectKeys' - ]; - - Object.keys(options).forEach(function (option) { - if (VALID_OPTIONS.indexOf(option) === -1) { - console.warn('Unknown option "' + option + '". This option will be ignored'); - } - }); - } - } - - if (arguments.length) { - this._create(container, options, json); - } -} - -/** - * Configuration for all registered modes. Example: - * { - * tree: { - * mixin: TreeEditor, - * data: 'json' - * }, - * text: { - * mixin: TextEditor, - * data: 'text' - * } - * } - * - * @type { Object. } - */ -JSONEditor.modes = {}; - -// debounce interval for JSON schema vaidation in milliseconds -JSONEditor.prototype.DEBOUNCE_INTERVAL = 150; - -/** - * Create the JSONEditor - * @param {Element} container Container element - * @param {Object} [options] See description in constructor - * @param {Object | undefined} json JSON object - * @private - */ -JSONEditor.prototype._create = function (container, options, json) { - this.container = container; - this.options = options || {}; - this.json = json || {}; - - var mode = this.options.mode || 'tree'; - this.setMode(mode); -}; - -/** - * Destroy the editor. Clean up DOM, event listeners, and web workers. - */ -JSONEditor.prototype.destroy = function () {}; - -/** - * Set JSON object in editor - * @param {Object | undefined} json JSON data - */ -JSONEditor.prototype.set = function (json) { - this.json = json; -}; - -/** - * Get JSON from the editor - * @returns {Object} json - */ -JSONEditor.prototype.get = function () { - return this.json; -}; - -/** - * Set string containing JSON for the editor - * @param {String | undefined} jsonText - */ -JSONEditor.prototype.setText = function (jsonText) { - this.json = util.parse(jsonText); -}; - -/** - * Get stringified JSON contents from the editor - * @returns {String} jsonText - */ -JSONEditor.prototype.getText = function () { - return JSON.stringify(this.json); -}; - -/** - * Set a field name for the root node. - * @param {String | undefined} name - */ -JSONEditor.prototype.setName = function (name) { - if (!this.options) { - this.options = {}; - } - this.options.name = name; -}; - -/** - * Get the field name for the root node. - * @return {String | undefined} name - */ -JSONEditor.prototype.getName = function () { - return this.options && this.options.name; -}; - -/** - * Change the mode of the editor. - * JSONEditor will be extended with all methods needed for the chosen mode. - * @param {String} mode Available modes: 'tree' (default), 'view', 'form', - * 'text', and 'code'. - */ -JSONEditor.prototype.setMode = function (mode) { - var container = this.container; - var options = util.extend({}, this.options); - var oldMode = options.mode; - var data; - var name; - - options.mode = mode; - var config = JSONEditor.modes[mode]; - if (config) { - try { - var asText = (config.data == 'text'); - name = this.getName(); - data = this[asText ? 'getText' : 'get'](); // get text or json - - this.destroy(); - util.clear(this); - util.extend(this, config.mixin); - this.create(container, options); - - this.setName(name); - this[asText ? 'setText' : 'set'](data); // set text or json - - if (typeof config.load === 'function') { - try { - config.load.call(this); - } - catch (err) { - console.error(err); - } - } - - if (typeof options.onModeChange === 'function' && mode !== oldMode) { - try { - options.onModeChange(mode, oldMode); - } - catch (err) { - console.error(err); - } - } - } - catch (err) { - this._onError(err); - } - } - else { - throw new Error('Unknown mode "' + options.mode + '"'); - } -}; - -/** - * Get the current mode - * @return {string} - */ -JSONEditor.prototype.getMode = function () { - return this.options.mode; -}; - -/** - * Throw an error. If an error callback is configured in options.error, this - * callback will be invoked. Else, a regular error is thrown. - * @param {Error} err - * @private - */ -JSONEditor.prototype._onError = function(err) { - if (this.options && typeof this.options.onError === 'function') { - this.options.onError(err); - } - else { - throw err; - } -}; - -/** - * Set a JSON schema for validation of the JSON object. - * To remove the schema, call JSONEditor.setSchema(null) - * @param {Object | null} schema - */ -JSONEditor.prototype.setSchema = function (schema) { - // compile a JSON schema validator if a JSON schema is provided - if (schema) { - var ajv; - try { - // grab ajv from options if provided, else create a new instance - ajv = this.options.ajv || Ajv({ allErrors: true, verbose: true }); - - } - catch (err) { - console.warn('Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.'); - } - - if (ajv) { - this.validateSchema = ajv.compile(schema); - - // add schema to the options, so that when switching to an other mode, - // the set schema is not lost - this.options.schema = schema; - - // validate now - this.validate(); - } - - this.refresh(); // update DOM - } - else { - // remove current schema - this.validateSchema = null; - this.options.schema = null; - this.validate(); // to clear current error messages - this.refresh(); // update DOM - } -}; - -/** - * Validate current JSON object against the configured JSON schema - * Throws an exception when no JSON schema is configured - */ -JSONEditor.prototype.validate = function () { - // must be implemented by treemode and textmode -}; - -/** - * Refresh the rendered contents - */ -JSONEditor.prototype.refresh = function () { - // can be implemented by treemode and textmode -}; - -/** - * Register a plugin with one ore multiple modes for the JSON Editor. - * - * A mode is described as an object with properties: - * - * - `mode: String` The name of the mode. - * - `mixin: Object` An object containing the mixin functions which - * will be added to the JSONEditor. Must contain functions - * create, get, getText, set, and setText. May have - * additional functions. - * When the JSONEditor switches to a mixin, all mixin - * functions are added to the JSONEditor, and then - * the function `create(container, options)` is executed. - * - `data: 'text' | 'json'` The type of data that will be used to load the mixin. - * - `[load: function]` An optional function called after the mixin - * has been loaded. - * - * @param {Object | Array} mode A mode object or an array with multiple mode objects. - */ -JSONEditor.registerMode = function (mode) { - var i, prop; - - if (util.isArray(mode)) { - // multiple modes - for (i = 0; i < mode.length; i++) { - JSONEditor.registerMode(mode[i]); - } - } - else { - // validate the new mode - if (!('mode' in mode)) throw new Error('Property "mode" missing'); - if (!('mixin' in mode)) throw new Error('Property "mixin" missing'); - if (!('data' in mode)) throw new Error('Property "data" missing'); - var name = mode.mode; - if (name in JSONEditor.modes) { - throw new Error('Mode "' + name + '" already registered'); - } - - // validate the mixin - if (typeof mode.mixin.create !== 'function') { - throw new Error('Required function "create" missing on mixin'); - } - var reserved = ['setMode', 'registerMode', 'modes']; - for (i = 0; i < reserved.length; i++) { - prop = reserved[i]; - if (prop in mode.mixin) { - throw new Error('Reserved property "' + prop + '" not allowed in mixin'); - } - } - - JSONEditor.modes[name] = mode; - } -}; - -// register tree and text modes -JSONEditor.registerMode(treemode); -JSONEditor.registerMode(textmode); - -module.exports = JSONEditor; diff --git a/src_old/js/ModeSwitcher.js b/src_old/js/ModeSwitcher.js deleted file mode 100644 index 0c99557..0000000 --- a/src_old/js/ModeSwitcher.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict'; - -var ContextMenu = require('./ContextMenu'); - -/** - * Create a select box to be used in the editor menu's, which allows to switch mode - * @param {HTMLElement} container - * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view' - * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view' - * @param {function(mode: string)} onSwitch Callback invoked on switch - * @constructor - */ -function ModeSwitcher(container, modes, current, onSwitch) { - // available modes - var availableModes = { - code: { - 'text': 'Code', - 'title': 'Switch to code highlighter', - 'click': function () { - onSwitch('code') - } - }, - form: { - 'text': 'Form', - 'title': 'Switch to form editor', - 'click': function () { - onSwitch('form'); - } - }, - text: { - 'text': 'Text', - 'title': 'Switch to plain text editor', - 'click': function () { - onSwitch('text'); - } - }, - tree: { - 'text': 'Tree', - 'title': 'Switch to tree editor', - 'click': function () { - onSwitch('tree'); - } - }, - view: { - 'text': 'View', - 'title': 'Switch to tree view', - 'click': function () { - onSwitch('view'); - } - } - }; - - // list the selected modes - var items = []; - for (var i = 0; i < modes.length; i++) { - var mode = modes[i]; - var item = availableModes[mode]; - if (!item) { - throw new Error('Unknown mode "' + mode + '"'); - } - - item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : ''); - items.push(item); - } - - // retrieve the title of current mode - var currentMode = availableModes[current]; - if (!currentMode) { - throw new Error('Unknown mode "' + current + '"'); - } - var currentTitle = currentMode.text; - - // create the html element - var box = document.createElement('button'); - box.className = 'jsoneditor-modes jsoneditor-separator'; - box.innerHTML = currentTitle + ' ▾'; - box.title = 'Switch editor mode'; - box.onclick = function () { - var menu = new ContextMenu(items); - menu.show(box); - }; - - var frame = document.createElement('div'); - frame.className = 'jsoneditor-modes'; - frame.style.position = 'relative'; - frame.appendChild(box); - - container.appendChild(frame); - - this.dom = { - container: container, - box: box, - frame: frame - }; -} - -/** - * Set focus to switcher - */ -ModeSwitcher.prototype.focus = function () { - this.dom.box.focus(); -}; - -/** - * Destroy the ModeSwitcher, remove from DOM - */ -ModeSwitcher.prototype.destroy = function () { - if (this.dom && this.dom.frame && this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - this.dom = null; -}; - -module.exports = ModeSwitcher; diff --git a/src_old/js/Node.js b/src_old/js/Node.js deleted file mode 100644 index f7bcd8d..0000000 --- a/src_old/js/Node.js +++ /dev/null @@ -1,3526 +0,0 @@ -'use strict'; - -var naturalSort = require('javascript-natural-sort'); -var ContextMenu = require('./ContextMenu'); -var appendNodeFactory = require('./appendNodeFactory'); -var util = require('./util'); - -/** - * @constructor Node - * Create a new Node - * @param {./treemode} editor - * @param {Object} [params] Can contain parameters: - * {string} field - * {boolean} fieldEditable - * {*} value - * {String} type Can have values 'auto', 'array', - * 'object', or 'string'. - */ -function Node (editor, params) { - /** @type {./treemode} */ - this.editor = editor; - this.dom = {}; - this.expanded = false; - - if(params && (params instanceof Object)) { - this.setField(params.field, params.fieldEditable); - this.setValue(params.value, params.type); - } - else { - this.setField(''); - this.setValue(null); - } - - this._debouncedOnChangeValue = util.debounce(this._onChangeValue.bind(this), Node.prototype.DEBOUNCE_INTERVAL); - this._debouncedOnChangeField = util.debounce(this._onChangeField.bind(this), Node.prototype.DEBOUNCE_INTERVAL); -} - -// debounce interval for keyboard input in milliseconds -Node.prototype.DEBOUNCE_INTERVAL = 150; - -/** - * Determine whether the field and/or value of this node are editable - * @private - */ -Node.prototype._updateEditability = function () { - this.editable = { - field: true, - value: true - }; - - if (this.editor) { - this.editable.field = this.editor.options.mode === 'tree'; - this.editable.value = this.editor.options.mode !== 'view'; - - if ((this.editor.options.mode === 'tree' || this.editor.options.mode === 'form') && - (typeof this.editor.options.onEditable === 'function')) { - var editable = this.editor.options.onEditable({ - field: this.field, - value: this.value, - path: this.getPath() - }); - - if (typeof editable === 'boolean') { - this.editable.field = editable; - this.editable.value = editable; - } - else { - if (typeof editable.field === 'boolean') this.editable.field = editable.field; - if (typeof editable.value === 'boolean') this.editable.value = editable.value; - } - } - } -}; - -/** - * Get the path of this node - * @return {String[]} Array containing the path to this node - */ -Node.prototype.getPath = function () { - var node = this; - var path = []; - while (node) { - var field = !node.parent - ? undefined // do not add an (optional) field name of the root node - : (node.parent.type != 'array') - ? node.field - : node.index; - - if (field !== undefined) { - path.unshift(field); - } - node = node.parent; - } - return path; -}; - -/** - * Find a Node from a JSON path like '.items[3].name' - * @param {string} jsonPath - * @return {Node | null} Returns the Node when found, returns null if not found - */ -Node.prototype.findNode = function (jsonPath) { - var path = util.parsePath(jsonPath); - var node = this; - while (node && path.length > 0) { - var prop = path.shift(); - if (typeof prop === 'number') { - if (node.type !== 'array') { - throw new Error('Cannot get child node at index ' + prop + ': node is no array'); - } - node = node.childs[prop]; - } - else { // string - if (node.type !== 'object') { - throw new Error('Cannot get child node ' + prop + ': node is no object'); - } - node = node.childs.filter(function (child) { - return child.field === prop; - })[0]; - } - } - - return node; -}; - -/** - * Find all parents of this node. The parents are ordered from root node towards - * the original node. - * @return {Array.} - */ -Node.prototype.findParents = function () { - var parents = []; - var parent = this.parent; - while (parent) { - parents.unshift(parent); - parent = parent.parent; - } - return parents; -}; - -/** - * - * @param {{dataPath: string, keyword: string, message: string, params: Object, schemaPath: string} | null} error - * @param {Node} [child] When this is the error of a parent node, pointing - * to an invalid child node, the child node itself - * can be provided. If provided, clicking the error - * icon will set focus to the invalid child node. - */ -Node.prototype.setError = function (error, child) { - // ensure the dom exists - this.getDom(); - - this.error = error; - var tdError = this.dom.tdError; - if (error) { - if (!tdError) { - tdError = document.createElement('td'); - this.dom.tdError = tdError; - this.dom.tdValue.parentNode.appendChild(tdError); - } - - var popover = document.createElement('div'); - popover.className = 'jsoneditor-popover jsoneditor-right'; - popover.appendChild(document.createTextNode(error.message)); - - var button = document.createElement('button'); - button.className = 'jsoneditor-schema-error'; - button.appendChild(popover); - - // update the direction of the popover - button.onmouseover = button.onfocus = function updateDirection() { - var directions = ['right', 'above', 'below', 'left']; - for (var i = 0; i < directions.length; i++) { - var direction = directions[i]; - popover.className = 'jsoneditor-popover jsoneditor-' + direction; - - var contentRect = this.editor.content.getBoundingClientRect(); - var popoverRect = popover.getBoundingClientRect(); - var margin = 20; // account for a scroll bar - var fit = util.insideRect(contentRect, popoverRect, margin); - - if (fit) { - break; - } - } - }.bind(this); - - // when clicking the error icon, expand all nodes towards the invalid - // child node, and set focus to the child node - if (child) { - button.onclick = function showInvalidNode() { - child.findParents().forEach(function (parent) { - parent.expand(false); - }); - - child.scrollTo(function () { - child.focus(); - }); - }; - } - - // apply the error message to the node - while (tdError.firstChild) { - tdError.removeChild(tdError.firstChild); - } - tdError.appendChild(button); - } - else { - if (tdError) { - this.dom.tdError.parentNode.removeChild(this.dom.tdError); - delete this.dom.tdError; - } - } -}; - -/** - * Get the index of this node: the index in the list of childs where this - * node is part of - * @return {number} Returns the index, or -1 if this is the root node - */ -Node.prototype.getIndex = function () { - return this.parent ? this.parent.childs.indexOf(this) : -1; -}; - -/** - * Set parent node - * @param {Node} parent - */ -Node.prototype.setParent = function(parent) { - this.parent = parent; -}; - -/** - * Set field - * @param {String} field - * @param {boolean} [fieldEditable] - */ -Node.prototype.setField = function(field, fieldEditable) { - this.field = field; - this.previousField = field; - this.fieldEditable = (fieldEditable === true); -}; - -/** - * Get field - * @return {String} - */ -Node.prototype.getField = function() { - if (this.field === undefined) { - this._getDomField(); - } - - return this.field; -}; - -/** - * Set value. Value is a JSON structure or an element String, Boolean, etc. - * @param {*} value - * @param {String} [type] Specify the type of the value. Can be 'auto', - * 'array', 'object', or 'string' - */ -Node.prototype.setValue = function(value, type) { - var childValue, child; - - // first clear all current childs (if any) - var childs = this.childs; - if (childs) { - while (childs.length) { - this.removeChild(childs[0]); - } - } - - // TODO: remove the DOM of this Node - - this.type = this._getType(value); - - // check if type corresponds with the provided type - if (type && type != this.type) { - if (type == 'string' && this.type == 'auto') { - this.type = type; - } - else { - throw new Error('Type mismatch: ' + - 'cannot cast value of type "' + this.type + - ' to the specified type "' + type + '"'); - } - } - - if (this.type == 'array') { - // array - this.childs = []; - for (var i = 0, iMax = value.length; i < iMax; i++) { - childValue = value[i]; - if (childValue !== undefined && !(childValue instanceof Function)) { - // ignore undefined and functions - child = new Node(this.editor, { - value: childValue - }); - this.appendChild(child); - } - } - this.value = ''; - } - else if (this.type == 'object') { - // object - this.childs = []; - for (var childField in value) { - if (value.hasOwnProperty(childField)) { - childValue = value[childField]; - if (childValue !== undefined && !(childValue instanceof Function)) { - // ignore undefined and functions - child = new Node(this.editor, { - field: childField, - value: childValue - }); - this.appendChild(child); - } - } - } - this.value = ''; - - // sort object keys - if (this.editor.options.sortObjectKeys === true) { - this.sort('asc'); - } - } - else { - // value - this.childs = undefined; - this.value = value; - } - - this.previousValue = this.value; -}; - -/** - * Get value. Value is a JSON structure - * @return {*} value - */ -Node.prototype.getValue = function() { - //var childs, i, iMax; - - if (this.type == 'array') { - var arr = []; - this.childs.forEach (function (child) { - arr.push(child.getValue()); - }); - return arr; - } - else if (this.type == 'object') { - var obj = {}; - this.childs.forEach (function (child) { - obj[child.getField()] = child.getValue(); - }); - return obj; - } - else { - if (this.value === undefined) { - this._getDomValue(); - } - - return this.value; - } -}; - -/** - * Get the nesting level of this node - * @return {Number} level - */ -Node.prototype.getLevel = function() { - return (this.parent ? this.parent.getLevel() + 1 : 0); -}; - -/** - * Get path of the root node till the current node - * @return {Node[]} Returns an array with nodes - */ -Node.prototype.getNodePath = function() { - var path = this.parent ? this.parent.getNodePath() : []; - path.push(this); - return path; -}; - -/** - * Create a clone of a node - * The complete state of a clone is copied, including whether it is expanded or - * not. The DOM elements are not cloned. - * @return {Node} clone - */ -Node.prototype.clone = function() { - var clone = new Node(this.editor); - clone.type = this.type; - clone.field = this.field; - clone.fieldInnerText = this.fieldInnerText; - clone.fieldEditable = this.fieldEditable; - clone.value = this.value; - clone.valueInnerText = this.valueInnerText; - clone.expanded = this.expanded; - - if (this.childs) { - // an object or array - var cloneChilds = []; - this.childs.forEach(function (child) { - var childClone = child.clone(); - childClone.setParent(clone); - cloneChilds.push(childClone); - }); - clone.childs = cloneChilds; - } - else { - // a value - clone.childs = undefined; - } - - return clone; -}; - -/** - * Expand this node and optionally its childs. - * @param {boolean} [recurse] Optional recursion, true by default. When - * true, all childs will be expanded recursively - */ -Node.prototype.expand = function(recurse) { - if (!this.childs) { - return; - } - - // set this node expanded - this.expanded = true; - if (this.dom.expand) { - this.dom.expand.className = 'jsoneditor-expanded'; - } - - this.showChilds(); - - if (recurse !== false) { - this.childs.forEach(function (child) { - child.expand(recurse); - }); - } -}; - -/** - * Collapse this node and optionally its childs. - * @param {boolean} [recurse] Optional recursion, true by default. When - * true, all childs will be collapsed recursively - */ -Node.prototype.collapse = function(recurse) { - if (!this.childs) { - return; - } - - this.hideChilds(); - - // collapse childs in case of recurse - if (recurse !== false) { - this.childs.forEach(function (child) { - child.collapse(recurse); - }); - - } - - // make this node collapsed - if (this.dom.expand) { - this.dom.expand.className = 'jsoneditor-collapsed'; - } - this.expanded = false; -}; - -/** - * Recursively show all childs when they are expanded - */ -Node.prototype.showChilds = function() { - var childs = this.childs; - if (!childs) { - return; - } - if (!this.expanded) { - return; - } - - var tr = this.dom.tr; - var table = tr ? tr.parentNode : undefined; - if (table) { - // show row with append button - var append = this.getAppend(); - var nextTr = tr.nextSibling; - if (nextTr) { - table.insertBefore(append, nextTr); - } - else { - table.appendChild(append); - } - - // show childs - this.childs.forEach(function (child) { - table.insertBefore(child.getDom(), append); - child.showChilds(); - }); - } -}; - -/** - * Hide the node with all its childs - */ -Node.prototype.hide = function() { - var tr = this.dom.tr; - var table = tr ? tr.parentNode : undefined; - if (table) { - table.removeChild(tr); - } - this.hideChilds(); -}; - - -/** - * Recursively hide all childs - */ -Node.prototype.hideChilds = function() { - var childs = this.childs; - if (!childs) { - return; - } - if (!this.expanded) { - return; - } - - // hide append row - var append = this.getAppend(); - if (append.parentNode) { - append.parentNode.removeChild(append); - } - - // hide childs - this.childs.forEach(function (child) { - child.hide(); - }); -}; - - -/** - * Add a new child to the node. - * Only applicable when Node value is of type array or object - * @param {Node} node - */ -Node.prototype.appendChild = function(node) { - if (this._hasChilds()) { - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - if (this.type == 'array') { - node.index = this.childs.length; - } - this.childs.push(node); - - if (this.expanded) { - // insert into the DOM, before the appendRow - var newTr = node.getDom(); - var appendTr = this.getAppend(); - var table = appendTr ? appendTr.parentNode : undefined; - if (appendTr && table) { - table.insertBefore(newTr, appendTr); - } - - node.showChilds(); - } - - this.updateDom({'updateIndexes': true}); - node.updateDom({'recurse': true}); - } -}; - - -/** - * Move a node from its current parent to this node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} beforeNode - */ -Node.prototype.moveBefore = function(node, beforeNode) { - if (this._hasChilds()) { - // create a temporary row, to prevent the scroll position from jumping - // when removing the node - var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined; - if (tbody) { - var trTemp = document.createElement('tr'); - trTemp.style.height = tbody.clientHeight + 'px'; - tbody.appendChild(trTemp); - } - - if (node.parent) { - node.parent.removeChild(node); - } - - if (beforeNode instanceof AppendNode) { - this.appendChild(node); - } - else { - this.insertBefore(node, beforeNode); - } - - if (tbody) { - tbody.removeChild(trTemp); - } - } -}; - -/** - * Move a node from its current parent to this node - * Only applicable when Node value is of type array or object. - * If index is out of range, the node will be appended to the end - * @param {Node} node - * @param {Number} index - */ -Node.prototype.moveTo = function (node, index) { - if (node.parent == this) { - // same parent - var currentIndex = this.childs.indexOf(node); - if (currentIndex < index) { - // compensate the index for removal of the node itself - index++; - } - } - - var beforeNode = this.childs[index] || this.append; - this.moveBefore(node, beforeNode); -}; - -/** - * Insert a new child before a given node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} beforeNode - */ -Node.prototype.insertBefore = function(node, beforeNode) { - if (this._hasChilds()) { - if (beforeNode == this.append) { - // append to the child nodes - - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - this.childs.push(node); - } - else { - // insert before a child node - var index = this.childs.indexOf(beforeNode); - if (index == -1) { - throw new Error('Node not found'); - } - - // adjust the link to the parent - node.setParent(this); - node.fieldEditable = (this.type == 'object'); - this.childs.splice(index, 0, node); - } - - if (this.expanded) { - // insert into the DOM - var newTr = node.getDom(); - var nextTr = beforeNode.getDom(); - var table = nextTr ? nextTr.parentNode : undefined; - if (nextTr && table) { - table.insertBefore(newTr, nextTr); - } - - node.showChilds(); - } - - this.updateDom({'updateIndexes': true}); - node.updateDom({'recurse': true}); - } -}; - -/** - * Insert a new child before a given node - * Only applicable when Node value is of type array or object - * @param {Node} node - * @param {Node} afterNode - */ -Node.prototype.insertAfter = function(node, afterNode) { - if (this._hasChilds()) { - var index = this.childs.indexOf(afterNode); - var beforeNode = this.childs[index + 1]; - if (beforeNode) { - this.insertBefore(node, beforeNode); - } - else { - this.appendChild(node); - } - } -}; - -/** - * Search in this node - * The node will be expanded when the text is found one of its childs, else - * it will be collapsed. Searches are case insensitive. - * @param {String} text - * @return {Node[]} results Array with nodes containing the search text - */ -Node.prototype.search = function(text) { - var results = []; - var index; - var search = text ? text.toLowerCase() : undefined; - - // delete old search data - delete this.searchField; - delete this.searchValue; - - // search in field - if (this.field != undefined) { - var field = String(this.field).toLowerCase(); - index = field.indexOf(search); - if (index != -1) { - this.searchField = true; - results.push({ - 'node': this, - 'elem': 'field' - }); - } - - // update dom - this._updateDomField(); - } - - // search in value - if (this._hasChilds()) { - // array, object - - // search the nodes childs - if (this.childs) { - var childResults = []; - this.childs.forEach(function (child) { - childResults = childResults.concat(child.search(text)); - }); - results = results.concat(childResults); - } - - // update dom - if (search != undefined) { - var recurse = false; - if (childResults.length == 0) { - this.collapse(recurse); - } - else { - this.expand(recurse); - } - } - } - else { - // string, auto - if (this.value != undefined ) { - var value = String(this.value).toLowerCase(); - index = value.indexOf(search); - if (index != -1) { - this.searchValue = true; - results.push({ - 'node': this, - 'elem': 'value' - }); - } - } - - // update dom - this._updateDomValue(); - } - - return results; -}; - -/** - * Move the scroll position such that this node is in the visible area. - * The node will not get the focus - * @param {function(boolean)} [callback] - */ -Node.prototype.scrollTo = function(callback) { - if (!this.dom.tr || !this.dom.tr.parentNode) { - // if the node is not visible, expand its parents - var parent = this.parent; - var recurse = false; - while (parent) { - parent.expand(recurse); - parent = parent.parent; - } - } - - if (this.dom.tr && this.dom.tr.parentNode) { - this.editor.scrollTo(this.dom.tr.offsetTop, callback); - } -}; - - -// stores the element name currently having the focus -Node.focusElement = undefined; - -/** - * Set focus to this node - * @param {String} [elementName] The field name of the element to get the - * focus available values: 'drag', 'menu', - * 'expand', 'field', 'value' (default) - */ -Node.prototype.focus = function(elementName) { - Node.focusElement = elementName; - - if (this.dom.tr && this.dom.tr.parentNode) { - var dom = this.dom; - - switch (elementName) { - case 'drag': - if (dom.drag) { - dom.drag.focus(); - } - else { - dom.menu.focus(); - } - break; - - case 'menu': - dom.menu.focus(); - break; - - case 'expand': - if (this._hasChilds()) { - dom.expand.focus(); - } - else if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else { - dom.menu.focus(); - } - break; - - case 'field': - if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else if (this._hasChilds()) { - dom.expand.focus(); - } - else { - dom.menu.focus(); - } - break; - - case 'value': - default: - if (dom.value && !this._hasChilds()) { - dom.value.focus(); - util.selectContentEditable(dom.value); - } - else if (dom.field && this.fieldEditable) { - dom.field.focus(); - util.selectContentEditable(dom.field); - } - else if (this._hasChilds()) { - dom.expand.focus(); - } - else { - dom.menu.focus(); - } - break; - } - } -}; - -/** - * Select all text in an editable div after a delay of 0 ms - * @param {Element} editableDiv - */ -Node.select = function(editableDiv) { - setTimeout(function () { - util.selectContentEditable(editableDiv); - }, 0); -}; - -/** - * Update the values from the DOM field and value of this node - */ -Node.prototype.blur = function() { - // retrieve the actual field and value from the DOM. - this._getDomValue(false); - this._getDomField(false); -}; - -/** - * Check if given node is a child. The method will check recursively to find - * this node. - * @param {Node} node - * @return {boolean} containsNode - */ -Node.prototype.containsNode = function(node) { - if (this == node) { - return true; - } - - var childs = this.childs; - if (childs) { - // TODO: use the js5 Array.some() here? - for (var i = 0, iMax = childs.length; i < iMax; i++) { - if (childs[i].containsNode(node)) { - return true; - } - } - } - - return false; -}; - -/** - * Move given node into this node - * @param {Node} node the childNode to be moved - * @param {Node} beforeNode node will be inserted before given - * node. If no beforeNode is given, - * the node is appended at the end - * @private - */ -Node.prototype._move = function(node, beforeNode) { - if (node == beforeNode) { - // nothing to do... - return; - } - - // check if this node is not a child of the node to be moved here - if (node.containsNode(this)) { - throw new Error('Cannot move a field into a child of itself'); - } - - // remove the original node - if (node.parent) { - node.parent.removeChild(node); - } - - // create a clone of the node - var clone = node.clone(); - node.clearDom(); - - // insert or append the node - if (beforeNode) { - this.insertBefore(clone, beforeNode); - } - else { - this.appendChild(clone); - } - - /* TODO: adjust the field name (to prevent equal field names) - if (this.type == 'object') { - } - */ -}; - -/** - * Remove a child from the node. - * Only applicable when Node value is of type array or object - * @param {Node} node The child node to be removed; - * @return {Node | undefined} node The removed node on success, - * else undefined - */ -Node.prototype.removeChild = function(node) { - if (this.childs) { - var index = this.childs.indexOf(node); - - if (index != -1) { - node.hide(); - - // delete old search results - delete node.searchField; - delete node.searchValue; - - var removedNode = this.childs.splice(index, 1)[0]; - removedNode.parent = null; - - this.updateDom({'updateIndexes': true}); - - return removedNode; - } - } - - return undefined; -}; - -/** - * Remove a child node node from this node - * This method is equal to Node.removeChild, except that _remove fire an - * onChange event. - * @param {Node} node - * @private - */ -Node.prototype._remove = function (node) { - this.removeChild(node); -}; - -/** - * Change the type of the value of this Node - * @param {String} newType - */ -Node.prototype.changeType = function (newType) { - var oldType = this.type; - - if (oldType == newType) { - // type is not changed - return; - } - - if ((newType == 'string' || newType == 'auto') && - (oldType == 'string' || oldType == 'auto')) { - // this is an easy change - this.type = newType; - } - else { - // change from array to object, or from string/auto to object/array - var table = this.dom.tr ? this.dom.tr.parentNode : undefined; - var lastTr; - if (this.expanded) { - lastTr = this.getAppend(); - } - else { - lastTr = this.getDom(); - } - var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined; - - // hide current field and all its childs - this.hide(); - this.clearDom(); - - // adjust the field and the value - this.type = newType; - - // adjust childs - if (newType == 'object') { - if (!this.childs) { - this.childs = []; - } - - this.childs.forEach(function (child, index) { - child.clearDom(); - delete child.index; - child.fieldEditable = true; - if (child.field == undefined) { - child.field = ''; - } - }); - - if (oldType == 'string' || oldType == 'auto') { - this.expanded = true; - } - } - else if (newType == 'array') { - if (!this.childs) { - this.childs = []; - } - - this.childs.forEach(function (child, index) { - child.clearDom(); - child.fieldEditable = false; - child.index = index; - }); - - if (oldType == 'string' || oldType == 'auto') { - this.expanded = true; - } - } - else { - this.expanded = false; - } - - // create new DOM - if (table) { - if (nextTr) { - table.insertBefore(this.getDom(), nextTr); - } - else { - table.appendChild(this.getDom()); - } - } - this.showChilds(); - } - - if (newType == 'auto' || newType == 'string') { - // cast value to the correct type - if (newType == 'string') { - this.value = String(this.value); - } - else { - this.value = this._stringCast(String(this.value)); - } - - this.focus(); - } - - this.updateDom({'updateIndexes': true}); -}; - -/** - * Retrieve value from DOM - * @param {boolean} [silent] If true (default), no errors will be thrown in - * case of invalid data - * @private - */ -Node.prototype._getDomValue = function(silent) { - if (this.dom.value && this.type != 'array' && this.type != 'object') { - this.valueInnerText = util.getInnerText(this.dom.value); - } - - if (this.valueInnerText != undefined) { - try { - // retrieve the value - var value; - if (this.type == 'string') { - value = this._unescapeHTML(this.valueInnerText); - } - else { - var str = this._unescapeHTML(this.valueInnerText); - value = this._stringCast(str); - } - if (value !== this.value) { - this.value = value; - this._debouncedOnChangeValue(); - } - } - catch (err) { - this.value = undefined; - // TODO: sent an action with the new, invalid value? - if (silent !== true) { - throw err; - } - } - } -}; - -/** - * Handle a changed value - * @private - */ -Node.prototype._onChangeValue = function () { - // get current selection, then override the range such that we can select - // the added/removed text on undo/redo - var oldSelection = this.editor.getSelection(); - if (oldSelection.range) { - var undoDiff = util.textDiff(String(this.value), String(this.previousValue)); - oldSelection.range.startOffset = undoDiff.start; - oldSelection.range.endOffset = undoDiff.end; - } - var newSelection = this.editor.getSelection(); - if (newSelection.range) { - var redoDiff = util.textDiff(String(this.previousValue), String(this.value)); - newSelection.range.startOffset = redoDiff.start; - newSelection.range.endOffset = redoDiff.end; - } - - this.editor._onAction('editValue', { - node: this, - oldValue: this.previousValue, - newValue: this.value, - oldSelection: oldSelection, - newSelection: newSelection - }); - - this.previousValue = this.value; -}; - -/** - * Handle a changed field - * @private - */ -Node.prototype._onChangeField = function () { - // get current selection, then override the range such that we can select - // the added/removed text on undo/redo - var oldSelection = this.editor.getSelection(); - if (oldSelection.range) { - var undoDiff = util.textDiff(this.field, this.previousField); - oldSelection.range.startOffset = undoDiff.start; - oldSelection.range.endOffset = undoDiff.end; - } - var newSelection = this.editor.getSelection(); - if (newSelection.range) { - var redoDiff = util.textDiff(this.previousField, this.field); - newSelection.range.startOffset = redoDiff.start; - newSelection.range.endOffset = redoDiff.end; - } - - this.editor._onAction('editField', { - node: this, - oldValue: this.previousField, - newValue: this.field, - oldSelection: oldSelection, - newSelection: newSelection - }); - - this.previousField = this.field; -}; - -/** - * Update dom value: - * - the text color of the value, depending on the type of the value - * - the height of the field, depending on the width - * - background color in case it is empty - * @private - */ -Node.prototype._updateDomValue = function () { - var domValue = this.dom.value; - if (domValue) { - var classNames = ['jsoneditor-value']; - - - // set text color depending on value type - var value = this.value; - var type = (this.type == 'auto') ? util.type(value) : this.type; - var isUrl = type == 'string' && util.isUrl(value); - classNames.push('jsoneditor-' + type); - if (isUrl) { - classNames.push('jsoneditor-url'); - } - - // visual styling when empty - var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object'); - if (isEmpty) { - classNames.push('jsoneditor-empty'); - } - - // highlight when there is a search result - if (this.searchValueActive) { - classNames.push('jsoneditor-highlight-active'); - } - if (this.searchValue) { - classNames.push('jsoneditor-highlight'); - } - - domValue.className = classNames.join(' '); - - // update title - if (type == 'array' || type == 'object') { - var count = this.childs ? this.childs.length : 0; - domValue.title = this.type + ' containing ' + count + ' items'; - } - else if (isUrl && this.editable.value) { - domValue.title = 'Ctrl+Click or Ctrl+Enter to open url in new window'; - } - else { - domValue.title = ''; - } - - // show checkbox when the value is a boolean - if (type === 'boolean' && this.editable.value) { - if (!this.dom.checkbox) { - this.dom.checkbox = document.createElement('input'); - this.dom.checkbox.type = 'checkbox'; - this.dom.tdCheckbox = document.createElement('td'); - this.dom.tdCheckbox.className = 'jsoneditor-tree'; - this.dom.tdCheckbox.appendChild(this.dom.checkbox); - - this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue); - } - - this.dom.checkbox.checked = this.value; - } - else { - // cleanup checkbox when displayed - if (this.dom.tdCheckbox) { - this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox); - delete this.dom.tdCheckbox; - delete this.dom.checkbox; - } - } - - if (this.enum && this.editable.value) { - // create select box when this node has an enum object - if (!this.dom.select) { - this.dom.select = document.createElement('select'); - this.id = this.field + "_" + new Date().getUTCMilliseconds(); - this.dom.select.id = this.id; - this.dom.select.name = this.dom.select.id; - - //Create the default empty option - this.dom.select.option = document.createElement('option'); - this.dom.select.option.value = ''; - this.dom.select.option.innerHTML = '--'; - this.dom.select.appendChild(this.dom.select.option); - - //Iterate all enum values and add them as options - for(var i = 0; i < this.enum.length; i++) { - this.dom.select.option = document.createElement('option'); - this.dom.select.option.value = this.enum[i]; - this.dom.select.option.innerHTML = this.enum[i]; - if(this.dom.select.option.value == this.value){ - this.dom.select.option.selected = true; - } - this.dom.select.appendChild(this.dom.select.option); - } - - this.dom.tdSelect = document.createElement('td'); - this.dom.tdSelect.className = 'jsoneditor-tree'; - this.dom.tdSelect.appendChild(this.dom.select); - this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue); - } - - // If the enum is inside a composite type display - // both the simple input and the dropdown field - if(this.schema && ( - !this.schema.hasOwnProperty("oneOf") && - !this.schema.hasOwnProperty("anyOf") && - !this.schema.hasOwnProperty("allOf")) - ) { - this.valueFieldHTML = this.dom.tdValue.innerHTML; - this.dom.tdValue.style.visibility = 'hidden'; - this.dom.tdValue.innerHTML = ''; - } else { - delete this.valueFieldHTML; - } - } - else { - // cleanup select box when displayed - if (this.dom.tdSelect) { - this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect); - delete this.dom.tdSelect; - delete this.dom.select; - this.dom.tdValue.innerHTML = this.valueFieldHTML; - this.dom.tdValue.style.visibility = ''; - delete this.valueFieldHTML; - } - } - - // strip formatting from the contents of the editable div - util.stripFormatting(domValue); - } -}; - -/** - * Update dom field: - * - the text color of the field, depending on the text - * - the height of the field, depending on the width - * - background color in case it is empty - * @private - */ -Node.prototype._updateDomField = function () { - var domField = this.dom.field; - if (domField) { - // make backgound color lightgray when empty - var isEmpty = (String(this.field) == '' && this.parent.type != 'array'); - if (isEmpty) { - util.addClassName(domField, 'jsoneditor-empty'); - } - else { - util.removeClassName(domField, 'jsoneditor-empty'); - } - - // highlight when there is a search result - if (this.searchFieldActive) { - util.addClassName(domField, 'jsoneditor-highlight-active'); - } - else { - util.removeClassName(domField, 'jsoneditor-highlight-active'); - } - if (this.searchField) { - util.addClassName(domField, 'jsoneditor-highlight'); - } - else { - util.removeClassName(domField, 'jsoneditor-highlight'); - } - - // strip formatting from the contents of the editable div - util.stripFormatting(domField); - } -}; - -/** - * Retrieve field from DOM - * @param {boolean} [silent] If true (default), no errors will be thrown in - * case of invalid data - * @private - */ -Node.prototype._getDomField = function(silent) { - if (this.dom.field && this.fieldEditable) { - this.fieldInnerText = util.getInnerText(this.dom.field); - } - - if (this.fieldInnerText != undefined) { - try { - var field = this._unescapeHTML(this.fieldInnerText); - - if (field !== this.field) { - this.field = field; - this._debouncedOnChangeField(); - } - } - catch (err) { - this.field = undefined; - // TODO: sent an action here, with the new, invalid value? - if (silent !== true) { - throw err; - } - } - } -}; - -/** - * Validate this node and all it's childs - * @return {Array.<{node: Node, error: {message: string}}>} Returns a list with duplicates - */ -Node.prototype.validate = function () { - var errors = []; - - // find duplicate keys - if (this.type === 'object') { - var keys = {}; - var duplicateKeys = []; - for (var i = 0; i < this.childs.length; i++) { - var child = this.childs[i]; - if (keys[child.field]) { - duplicateKeys.push(child.field); - } - keys[child.field] = true; - } - - if (duplicateKeys.length > 0) { - errors = this.childs - .filter(function (node) { - return duplicateKeys.indexOf(node.field) !== -1; - }) - .map(function (node) { - return { - node: node, - error: { - message: 'duplicate key "' + node.field + '"' - } - } - }); - } - } - - // recurse over the childs - if (this.childs) { - for (var i = 0; i < this.childs.length; i++) { - var e = this.childs[i].validate(); - if (e.length > 0) { - errors = errors.concat(e); - } - } - } - - return errors; -}; - -/** - * Clear the dom of the node - */ -Node.prototype.clearDom = function() { - // TODO: hide the node first? - //this.hide(); - // TODO: recursively clear dom? - - this.dom = {}; -}; - -/** - * Get the HTML DOM TR element of the node. - * The dom will be generated when not yet created - * @return {Element} tr HTML DOM TR Element - */ -Node.prototype.getDom = function() { - var dom = this.dom; - if (dom.tr) { - return dom.tr; - } - - this._updateEditability(); - - // create row - dom.tr = document.createElement('tr'); - dom.tr.node = this; - - if (this.editor.options.mode === 'tree') { // note: we take here the global setting - var tdDrag = document.createElement('td'); - if (this.editable.field) { - // create draggable area - if (this.parent) { - var domDrag = document.createElement('button'); - dom.drag = domDrag; - domDrag.className = 'jsoneditor-dragarea'; - domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)'; - tdDrag.appendChild(domDrag); - } - } - dom.tr.appendChild(tdDrag); - - // create context menu - var tdMenu = document.createElement('td'); - var menu = document.createElement('button'); - dom.menu = menu; - menu.className = 'jsoneditor-contextmenu'; - menu.title = 'Click to open the actions menu (Ctrl+M)'; - tdMenu.appendChild(dom.menu); - dom.tr.appendChild(tdMenu); - } - - // create tree and field - var tdField = document.createElement('td'); - dom.tr.appendChild(tdField); - dom.tree = this._createDomTree(); - tdField.appendChild(dom.tree); - - this.updateDom({'updateIndexes': true}); - - return dom.tr; -}; - -/** - * DragStart event, fired on mousedown on the dragarea at the left side of a Node - * @param {Node[] | Node} nodes - * @param {Event} event - */ -Node.onDragStart = function (nodes, event) { - if (!Array.isArray(nodes)) { - return Node.onDragStart([nodes], event); - } - if (nodes.length === 0) { - return; - } - - var firstNode = nodes[0]; - var lastNode = nodes[nodes.length - 1]; - var draggedNode = Node.getNodeFromTarget(event.target); - var beforeNode = lastNode._nextSibling(); - var editor = firstNode.editor; - - // in case of multiple selected nodes, offsetY prevents the selection from - // jumping when you start dragging one of the lower down nodes in the selection - var offsetY = util.getAbsoluteTop(draggedNode.dom.tr) - util.getAbsoluteTop(firstNode.dom.tr); - - if (!editor.mousemove) { - editor.mousemove = util.addEventListener(window, 'mousemove', function (event) { - Node.onDrag(nodes, event); - }); - } - - if (!editor.mouseup) { - editor.mouseup = util.addEventListener(window, 'mouseup',function (event ) { - Node.onDragEnd(nodes, event); - }); - } - - editor.highlighter.lock(); - editor.drag = { - oldCursor: document.body.style.cursor, - oldSelection: editor.getSelection(), - oldBeforeNode: beforeNode, - mouseX: event.pageX, - offsetY: offsetY, - level: firstNode.getLevel() - }; - document.body.style.cursor = 'move'; - - event.preventDefault(); -}; - -/** - * Drag event, fired when moving the mouse while dragging a Node - * @param {Node[] | Node} nodes - * @param {Event} event - */ -Node.onDrag = function (nodes, event) { - if (!Array.isArray(nodes)) { - return Node.onDrag([nodes], event); - } - if (nodes.length === 0) { - return; - } - - // TODO: this method has grown too large. Split it in a number of methods - var editor = nodes[0].editor; - var mouseY = event.pageY - editor.drag.offsetY; - var mouseX = event.pageX; - var trThis, trPrev, trNext, trFirst, trLast, trRoot; - var nodePrev, nodeNext; - var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext; - var moved = false; - - // TODO: add an ESC option, which resets to the original position - - // move up/down - var firstNode = nodes[0]; - trThis = firstNode.dom.tr; - topThis = util.getAbsoluteTop(trThis); - heightThis = trThis.offsetHeight; - if (mouseY < topThis) { - // move up - trPrev = trThis; - do { - trPrev = trPrev.previousSibling; - nodePrev = Node.getNodeFromTarget(trPrev); - topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; - } - while (trPrev && mouseY < topPrev); - - if (nodePrev && !nodePrev.parent) { - nodePrev = undefined; - } - - if (!nodePrev) { - // move to the first node - trRoot = trThis.parentNode.firstChild; - trPrev = trRoot ? trRoot.nextSibling : undefined; - nodePrev = Node.getNodeFromTarget(trPrev); - if (nodePrev == firstNode) { - nodePrev = undefined; - } - } - - if (nodePrev) { - // check if mouseY is really inside the found node - trPrev = nodePrev.dom.tr; - topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0; - if (mouseY > topPrev + heightThis) { - nodePrev = undefined; - } - } - - if (nodePrev) { - nodes.forEach(function (node) { - nodePrev.parent.moveBefore(node, nodePrev); - }); - moved = true; - } - } - else { - // move down - var lastNode = nodes[nodes.length - 1]; - trLast = (lastNode.expanded && lastNode.append) ? lastNode.append.getDom() : lastNode.dom.tr; - trFirst = trLast ? trLast.nextSibling : undefined; - if (trFirst) { - topFirst = util.getAbsoluteTop(trFirst); - trNext = trFirst; - do { - nodeNext = Node.getNodeFromTarget(trNext); - if (trNext) { - bottomNext = trNext.nextSibling ? - util.getAbsoluteTop(trNext.nextSibling) : 0; - heightNext = trNext ? (bottomNext - topFirst) : 0; - - if (nodeNext.parent.childs.length == nodes.length && - nodeNext.parent.childs[nodes.length - 1] == lastNode) { - // We are about to remove the last child of this parent, - // which will make the parents appendNode visible. - topThis += 27; - // TODO: dangerous to suppose the height of the appendNode a constant of 27 px. - } - } - - trNext = trNext.nextSibling; - } - while (trNext && mouseY > topThis + heightNext); - - if (nodeNext && nodeNext.parent) { - // calculate the desired level - var diffX = (mouseX - editor.drag.mouseX); - var diffLevel = Math.round(diffX / 24 / 2); - var level = editor.drag.level + diffLevel; // desired level - var levelNext = nodeNext.getLevel(); // level to be - - // find the best fitting level (move upwards over the append nodes) - trPrev = nodeNext.dom.tr.previousSibling; - while (levelNext < level && trPrev) { - nodePrev = Node.getNodeFromTarget(trPrev); - - var isDraggedNode = nodes.some(function (node) { - return node === nodePrev || nodePrev._isChildOf(node); - }); - - if (isDraggedNode) { - // neglect the dragged nodes themselves and their childs - } - else if (nodePrev instanceof AppendNode) { - var childs = nodePrev.parent.childs; - if (childs.length != nodes.length || childs[nodes.length - 1] != lastNode) { - // non-visible append node of a list of childs - // consisting of not only this node (else the - // append node will change into a visible "empty" - // text when removing this node). - nodeNext = Node.getNodeFromTarget(trPrev); - levelNext = nodeNext.getLevel(); - } - else { - break; - } - } - else { - break; - } - - trPrev = trPrev.previousSibling; - } - - // move the node when its position is changed - if (trLast.nextSibling != nodeNext.dom.tr) { - nodes.forEach(function (node) { - nodeNext.parent.moveBefore(node, nodeNext); - }); - moved = true; - } - } - } - } - - if (moved) { - // update the dragging parameters when moved - editor.drag.mouseX = mouseX; - editor.drag.level = firstNode.getLevel(); - } - - // auto scroll when hovering around the top of the editor - editor.startAutoScroll(mouseY); - - event.preventDefault(); -}; - -/** - * Drag event, fired on mouseup after having dragged a node - * @param {Node[] | Node} nodes - * @param {Event} event - */ -Node.onDragEnd = function (nodes, event) { - if (!Array.isArray(nodes)) { - return Node.onDrag([nodes], event); - } - if (nodes.length === 0) { - return; - } - - var firstNode = nodes[0]; - var editor = firstNode.editor; - var parent = firstNode.parent; - var firstIndex = parent.childs.indexOf(firstNode); - var beforeNode = parent.childs[firstIndex + nodes.length] || parent.append; - - // set focus to the context menu button of the first node - if (nodes[0]) { - nodes[0].dom.menu.focus(); - } - - var params = { - nodes: nodes, - oldSelection: editor.drag.oldSelection, - newSelection: editor.getSelection(), - oldBeforeNode: editor.drag.oldBeforeNode, - newBeforeNode: beforeNode - }; - - if (params.oldBeforeNode != params.newBeforeNode) { - // only register this action if the node is actually moved to another place - editor._onAction('moveNodes', params); - } - - document.body.style.cursor = editor.drag.oldCursor; - editor.highlighter.unlock(); - nodes.forEach(function (node) { - if (event.target !== node.dom.drag && event.target !== node.dom.menu) { - editor.highlighter.unhighlight(); - } - }); - delete editor.drag; - - if (editor.mousemove) { - util.removeEventListener(window, 'mousemove', editor.mousemove); - delete editor.mousemove; - } - if (editor.mouseup) { - util.removeEventListener(window, 'mouseup', editor.mouseup); - delete editor.mouseup; - } - - // Stop any running auto scroll - editor.stopAutoScroll(); - - event.preventDefault(); -}; - -/** - * Test if this node is a child of an other node - * @param {Node} node - * @return {boolean} isChild - * @private - */ -Node.prototype._isChildOf = function (node) { - var n = this.parent; - while (n) { - if (n == node) { - return true; - } - n = n.parent; - } - - return false; -}; - -/** - * Create an editable field - * @return {Element} domField - * @private - */ -Node.prototype._createDomField = function () { - return document.createElement('div'); -}; - -/** - * Set highlighting for this node and all its childs. - * Only applied to the currently visible (expanded childs) - * @param {boolean} highlight - */ -Node.prototype.setHighlight = function (highlight) { - if (this.dom.tr) { - if (highlight) { - util.addClassName(this.dom.tr, 'jsoneditor-highlight'); - } - else { - util.removeClassName(this.dom.tr, 'jsoneditor-highlight'); - } - - if (this.append) { - this.append.setHighlight(highlight); - } - - if (this.childs) { - this.childs.forEach(function (child) { - child.setHighlight(highlight); - }); - } - } -}; - -/** - * Select or deselect a node - * @param {boolean} selected - * @param {boolean} [isFirst] - */ -Node.prototype.setSelected = function (selected, isFirst) { - this.selected = selected; - - if (this.dom.tr) { - if (selected) { - util.addClassName(this.dom.tr, 'jsoneditor-selected'); - } - else { - util.removeClassName(this.dom.tr, 'jsoneditor-selected'); - } - - if (isFirst) { - util.addClassName(this.dom.tr, 'jsoneditor-first'); - } - else { - util.removeClassName(this.dom.tr, 'jsoneditor-first'); - } - - if (this.append) { - this.append.setSelected(selected); - } - - if (this.childs) { - this.childs.forEach(function (child) { - child.setSelected(selected); - }); - } - } -}; - -/** - * Update the value of the node. Only primitive types are allowed, no Object - * or Array is allowed. - * @param {String | Number | Boolean | null} value - */ -Node.prototype.updateValue = function (value) { - this.value = value; - this.updateDom(); -}; - -/** - * Update the field of the node. - * @param {String} field - */ -Node.prototype.updateField = function (field) { - this.field = field; - this.updateDom(); -}; - -/** - * Update the HTML DOM, optionally recursing through the childs - * @param {Object} [options] Available parameters: - * {boolean} [recurse] If true, the - * DOM of the childs will be updated recursively. - * False by default. - * {boolean} [updateIndexes] If true, the childs - * indexes of the node will be updated too. False by - * default. - */ -Node.prototype.updateDom = function (options) { - // update level indentation - var domTree = this.dom.tree; - if (domTree) { - domTree.style.marginLeft = this.getLevel() * 24 + 'px'; - } - - // apply field to DOM - var domField = this.dom.field; - if (domField) { - if (this.fieldEditable) { - // parent is an object - domField.contentEditable = this.editable.field; - domField.spellcheck = false; - domField.className = 'jsoneditor-field'; - } - else { - // parent is an array this is the root node - domField.className = 'jsoneditor-readonly'; - } - - var fieldText; - if (this.index != undefined) { - fieldText = this.index; - } - else if (this.field != undefined) { - fieldText = this.field; - } - else if (this._hasChilds()) { - fieldText = this.type; - } - else { - fieldText = ''; - } - domField.innerHTML = this._escapeHTML(fieldText); - - this._updateSchema(); - } - - // apply value to DOM - var domValue = this.dom.value; - if (domValue) { - var count = this.childs ? this.childs.length : 0; - if (this.type == 'array') { - domValue.innerHTML = '[' + count + ']'; - util.addClassName(this.dom.tr, 'jsoneditor-expandable'); - } - else if (this.type == 'object') { - domValue.innerHTML = '{' + count + '}'; - util.addClassName(this.dom.tr, 'jsoneditor-expandable'); - } - else { - domValue.innerHTML = this._escapeHTML(this.value); - util.removeClassName(this.dom.tr, 'jsoneditor-expandable'); - } - } - - // update field and value - this._updateDomField(); - this._updateDomValue(); - - // update childs indexes - if (options && options.updateIndexes === true) { - // updateIndexes is true or undefined - this._updateDomIndexes(); - } - - if (options && options.recurse === true) { - // recurse is true or undefined. update childs recursively - if (this.childs) { - this.childs.forEach(function (child) { - child.updateDom(options); - }); - } - } - - // update row with append button - if (this.append) { - this.append.updateDom(); - } -}; - -/** - * Locate the JSON schema of the node and check for any enum type - * @private - */ -Node.prototype._updateSchema = function () { - //Locating the schema of the node and checking for any enum type - if(this.editor && this.editor.options) { - // find the part of the json schema matching this nodes path - this.schema = Node._findSchema(this.editor.options.schema, this.getPath()); - if (this.schema) { - this.enum = Node._findEnum(this.schema); - } - else { - delete this.enum; - } - } -}; - -/** - * find an enum definition in a JSON schema, as property `enum` or inside - * one of the schemas composites (`oneOf`, `anyOf`, `allOf`) - * @param {Object} schema - * @return {Array | null} Returns the enum when found, null otherwise. - * @private - */ -Node._findEnum = function (schema) { - if (schema.enum) { - return schema.enum; - } - - var composite = schema.oneOf || schema.anyOf || schema.allOf; - if (composite) { - var match = composite.filter(function (entry) {return entry.enum}); - if (match.length > 0) { - return match[0].enum; - } - } - - return null -}; - -/** - * Return the part of a JSON schema matching given path. - * @param {Object} schema - * @param {Array.} path - * @return {Object | null} - * @private - */ -Node._findSchema = function (schema, path) { - var childSchema = schema; - - for (var i = 0; i < path.length && childSchema; i++) { - var key = path[i]; - if (typeof key === 'string' && childSchema.properties) { - childSchema = childSchema.properties[key] || null - } - else if (typeof key === 'number' && childSchema.items) { - childSchema = childSchema.items - } - } - - return childSchema -}; - -/** - * Update the DOM of the childs of a node: update indexes and undefined field - * names. - * Only applicable when structure is an array or object - * @private - */ -Node.prototype._updateDomIndexes = function () { - var domValue = this.dom.value; - var childs = this.childs; - if (domValue && childs) { - if (this.type == 'array') { - childs.forEach(function (child, index) { - child.index = index; - var childField = child.dom.field; - if (childField) { - childField.innerHTML = index; - } - }); - } - else if (this.type == 'object') { - childs.forEach(function (child) { - if (child.index != undefined) { - delete child.index; - - if (child.field == undefined) { - child.field = ''; - } - } - }); - } - } -}; - -/** - * Create an editable value - * @private - */ -Node.prototype._createDomValue = function () { - var domValue; - - if (this.type == 'array') { - domValue = document.createElement('div'); - domValue.innerHTML = '[...]'; - } - else if (this.type == 'object') { - domValue = document.createElement('div'); - domValue.innerHTML = '{...}'; - } - else { - if (!this.editable.value && util.isUrl(this.value)) { - // create a link in case of read-only editor and value containing an url - domValue = document.createElement('a'); - domValue.href = this.value; - domValue.target = '_blank'; - domValue.innerHTML = this._escapeHTML(this.value); - } - else { - // create an editable or read-only div - domValue = document.createElement('div'); - domValue.contentEditable = this.editable.value; - domValue.spellcheck = false; - domValue.innerHTML = this._escapeHTML(this.value); - } - } - - return domValue; -}; - -/** - * Create an expand/collapse button - * @return {Element} expand - * @private - */ -Node.prototype._createDomExpandButton = function () { - // create expand button - var expand = document.createElement('button'); - if (this._hasChilds()) { - expand.className = this.expanded ? 'jsoneditor-expanded' : 'jsoneditor-collapsed'; - expand.title = - 'Click to expand/collapse this field (Ctrl+E). \n' + - 'Ctrl+Click to expand/collapse including all childs.'; - } - else { - expand.className = 'jsoneditor-invisible'; - expand.title = ''; - } - - return expand; -}; - - -/** - * Create a DOM tree element, containing the expand/collapse button - * @return {Element} domTree - * @private - */ -Node.prototype._createDomTree = function () { - var dom = this.dom; - var domTree = document.createElement('table'); - var tbody = document.createElement('tbody'); - domTree.style.borderCollapse = 'collapse'; // TODO: put in css - domTree.className = 'jsoneditor-values'; - domTree.appendChild(tbody); - var tr = document.createElement('tr'); - tbody.appendChild(tr); - - // create expand button - var tdExpand = document.createElement('td'); - tdExpand.className = 'jsoneditor-tree'; - tr.appendChild(tdExpand); - dom.expand = this._createDomExpandButton(); - tdExpand.appendChild(dom.expand); - dom.tdExpand = tdExpand; - - // create the field - var tdField = document.createElement('td'); - tdField.className = 'jsoneditor-tree'; - tr.appendChild(tdField); - dom.field = this._createDomField(); - tdField.appendChild(dom.field); - dom.tdField = tdField; - - // create a separator - var tdSeparator = document.createElement('td'); - tdSeparator.className = 'jsoneditor-tree'; - tr.appendChild(tdSeparator); - if (this.type != 'object' && this.type != 'array') { - tdSeparator.appendChild(document.createTextNode(':')); - tdSeparator.className = 'jsoneditor-separator'; - } - dom.tdSeparator = tdSeparator; - - // create the value - var tdValue = document.createElement('td'); - tdValue.className = 'jsoneditor-tree'; - tr.appendChild(tdValue); - dom.value = this._createDomValue(); - tdValue.appendChild(dom.value); - dom.tdValue = tdValue; - - return domTree; -}; - -/** - * Handle an event. The event is caught centrally by the editor - * @param {Event} event - */ -Node.prototype.onEvent = function (event) { - var type = event.type, - target = event.target || event.srcElement, - dom = this.dom, - node = this, - expandable = this._hasChilds(); - - // check if mouse is on menu or on dragarea. - // If so, highlight current row and its childs - if (target == dom.drag || target == dom.menu) { - if (type == 'mouseover') { - this.editor.highlighter.highlight(this); - } - else if (type == 'mouseout') { - this.editor.highlighter.unhighlight(); - } - } - - // context menu events - if (type == 'click' && target == dom.menu) { - var highlighter = node.editor.highlighter; - highlighter.highlight(node); - highlighter.lock(); - util.addClassName(dom.menu, 'jsoneditor-selected'); - this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'jsoneditor-selected'); - highlighter.unlock(); - highlighter.unhighlight(); - }); - } - - // expand events - if (type == 'click') { - if (target == dom.expand || - ((node.editor.options.mode === 'view' || node.editor.options.mode === 'form') && target.nodeName === 'DIV')) { - if (expandable) { - var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all - this._onExpand(recurse); - } - } - } - - // swap the value of a boolean when the checkbox displayed left is clicked - if (type == 'change' && target == dom.checkbox) { - this.dom.value.innerHTML = !this.value; - this._getDomValue(); - } - - // update the value of the node based on the selected option - if (type == 'change' && target == dom.select) { - this.dom.value.innerHTML = dom.select.value; - this._getDomValue(); - this._updateDomValue(); - } - - // value events - var domValue = dom.value; - if (target == domValue) { - //noinspection FallthroughInSwitchStatementJS - switch (type) { - case 'blur': - case 'change': - this._getDomValue(true); - this._updateDomValue(); - if (this.value) { - domValue.innerHTML = this._escapeHTML(this.value); - } - break; - - case 'input': - //this._debouncedGetDomValue(true); // TODO - this._getDomValue(true); - this._updateDomValue(); - break; - - case 'keydown': - case 'mousedown': - // TODO: cleanup - this.editor.selection = this.editor.getSelection(); - break; - - case 'click': - if (event.ctrlKey || !this.editable.value) { - if (util.isUrl(this.value)) { - window.open(this.value, '_blank'); - } - } - break; - - case 'keyup': - //this._debouncedGetDomValue(true); // TODO - this._getDomValue(true); - this._updateDomValue(); - break; - - case 'cut': - case 'paste': - setTimeout(function () { - node._getDomValue(true); - node._updateDomValue(); - }, 1); - break; - } - } - - // field events - var domField = dom.field; - if (target == domField) { - switch (type) { - case 'blur': - case 'change': - this._getDomField(true); - this._updateDomField(); - if (this.field) { - domField.innerHTML = this._escapeHTML(this.field); - } - break; - - case 'input': - this._getDomField(true); - this._updateSchema(); - this._updateDomField(); - this._updateDomValue(); - break; - - case 'keydown': - case 'mousedown': - this.editor.selection = this.editor.getSelection(); - break; - - case 'keyup': - this._getDomField(true); - this._updateDomField(); - break; - - case 'cut': - case 'paste': - setTimeout(function () { - node._getDomField(true); - node._updateDomField(); - }, 1); - break; - } - } - - // focus - // when clicked in whitespace left or right from the field or value, set focus - var domTree = dom.tree; - if (target == domTree.parentNode && type == 'click' && !event.hasMoved) { - var left = (event.offsetX != undefined) ? - (event.offsetX < (this.getLevel() + 1) * 24) : - (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF - if (left || expandable) { - // node is expandable when it is an object or array - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - } - else { - if (domValue && !this.enum) { - util.setEndOfContentEditable(domValue); - domValue.focus(); - } - } - } - if (((target == dom.tdExpand && !expandable) || target == dom.tdField || target == dom.tdSeparator) && - (type == 'click' && !event.hasMoved)) { - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - } - - if (type == 'keydown') { - this.onKeyDown(event); - } -}; - -/** - * Key down event handler - * @param {Event} event - */ -Node.prototype.onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var target = event.target || event.srcElement; - var ctrlKey = event.ctrlKey; - var shiftKey = event.shiftKey; - var altKey = event.altKey; - var handled = false; - var prevNode, nextNode, nextDom, nextDom2; - var editable = this.editor.options.mode === 'tree'; - var oldSelection; - var oldBeforeNode; - var nodes; - var multiselection; - var selectedNodes = this.editor.multiselection.nodes.length > 0 - ? this.editor.multiselection.nodes - : [this]; - var firstNode = selectedNodes[0]; - var lastNode = selectedNodes[selectedNodes.length - 1]; - - // console.log(ctrlKey, keynum, event.charCode); // TODO: cleanup - if (keynum == 13) { // Enter - if (target == this.dom.value) { - if (!this.editable.value || event.ctrlKey) { - if (util.isUrl(this.value)) { - window.open(this.value, '_blank'); - handled = true; - } - } - } - else if (target == this.dom.expand) { - var expandable = this._hasChilds(); - if (expandable) { - var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all - this._onExpand(recurse); - target.focus(); - handled = true; - } - } - } - else if (keynum == 68) { // D - if (ctrlKey && editable) { // Ctrl+D - Node.onDuplicate(selectedNodes); - handled = true; - } - } - else if (keynum == 69) { // E - if (ctrlKey) { // Ctrl+E and Ctrl+Shift+E - this._onExpand(shiftKey); // recurse = shiftKey - target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline) - handled = true; - } - } - else if (keynum == 77 && editable) { // M - if (ctrlKey) { // Ctrl+M - this.showContextMenu(target); - handled = true; - } - } - else if (keynum == 46 && editable) { // Del - if (ctrlKey) { // Ctrl+Del - Node.onRemove(selectedNodes); - handled = true; - } - } - else if (keynum == 45 && editable) { // Ins - if (ctrlKey && !shiftKey) { // Ctrl+Ins - this._onInsertBefore(); - handled = true; - } - else if (ctrlKey && shiftKey) { // Ctrl+Shift+Ins - this._onInsertAfter(); - handled = true; - } - } - else if (keynum == 35) { // End - if (altKey) { // Alt+End - // find the last node - var endNode = this._lastNode(); - if (endNode) { - endNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - else if (keynum == 36) { // Home - if (altKey) { // Alt+Home - // find the first node - var homeNode = this._firstNode(); - if (homeNode) { - homeNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - } - else if (keynum == 37) { // Arrow Left - if (altKey && !shiftKey) { // Alt + Arrow Left - // move to left element - var prevElement = this._previousElement(target); - if (prevElement) { - this.focus(this._getElementName(prevElement)); - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow left - if (lastNode.expanded) { - var appendDom = lastNode.getAppend(); - nextDom = appendDom ? appendDom.nextSibling : undefined; - } - else { - var dom = lastNode.getDom(); - nextDom = dom.nextSibling; - } - if (nextDom) { - nextNode = Node.getNodeFromTarget(nextDom); - nextDom2 = nextDom.nextSibling; - nextNode2 = Node.getNodeFromTarget(nextDom2); - if (nextNode && nextNode instanceof AppendNode && - !(lastNode.parent.childs.length == 1) && - nextNode2 && nextNode2.parent) { - oldSelection = this.editor.getSelection(); - oldBeforeNode = lastNode._nextSibling(); - - selectedNodes.forEach(function (node) { - nextNode2.parent.moveBefore(node, nextNode2); - }); - this.focus(Node.focusElement || this._getElementName(target)); - - this.editor._onAction('moveNodes', { - nodes: selectedNodes, - oldBeforeNode: oldBeforeNode, - newBeforeNode: nextNode2, - oldSelection: oldSelection, - newSelection: this.editor.getSelection() - }); - } - } - } - } - else if (keynum == 38) { // Arrow Up - if (altKey && !shiftKey) { // Alt + Arrow Up - // find the previous node - prevNode = this._previousNode(); - if (prevNode) { - this.editor.deselect(true); - prevNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Up - // select multiple nodes - prevNode = this._previousNode(); - if (prevNode) { - multiselection = this.editor.multiselection; - multiselection.start = multiselection.start || this; - multiselection.end = prevNode; - nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end); - - this.editor.select(nodes); - prevNode.focus('field'); // select field as we know this always exists - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Up - // find the previous node - prevNode = firstNode._previousNode(); - if (prevNode && prevNode.parent) { - oldSelection = this.editor.getSelection(); - oldBeforeNode = lastNode._nextSibling(); - - selectedNodes.forEach(function (node) { - prevNode.parent.moveBefore(node, prevNode); - }); - this.focus(Node.focusElement || this._getElementName(target)); - - this.editor._onAction('moveNodes', { - nodes: selectedNodes, - oldBeforeNode: oldBeforeNode, - newBeforeNode: prevNode, - oldSelection: oldSelection, - newSelection: this.editor.getSelection() - }); - } - handled = true; - } - } - else if (keynum == 39) { // Arrow Right - if (altKey && !shiftKey) { // Alt + Arrow Right - // move to right element - var nextElement = this._nextElement(target); - if (nextElement) { - this.focus(this._getElementName(nextElement)); - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Right - dom = firstNode.getDom(); - var prevDom = dom.previousSibling; - if (prevDom) { - prevNode = Node.getNodeFromTarget(prevDom); - if (prevNode && prevNode.parent && - (prevNode instanceof AppendNode) - && !prevNode.isVisible()) { - oldSelection = this.editor.getSelection(); - oldBeforeNode = lastNode._nextSibling(); - - selectedNodes.forEach(function (node) { - prevNode.parent.moveBefore(node, prevNode); - }); - this.focus(Node.focusElement || this._getElementName(target)); - - this.editor._onAction('moveNodes', { - nodes: selectedNodes, - oldBeforeNode: oldBeforeNode, - newBeforeNode: prevNode, - oldSelection: oldSelection, - newSelection: this.editor.getSelection() - }); - } - } - } - } - else if (keynum == 40) { // Arrow Down - if (altKey && !shiftKey) { // Alt + Arrow Down - // find the next node - nextNode = this._nextNode(); - if (nextNode) { - this.editor.deselect(true); - nextNode.focus(Node.focusElement || this._getElementName(target)); - } - handled = true; - } - else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Down - // select multiple nodes - nextNode = this._nextNode(); - if (nextNode) { - multiselection = this.editor.multiselection; - multiselection.start = multiselection.start || this; - multiselection.end = nextNode; - nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end); - - this.editor.select(nodes); - nextNode.focus('field'); // select field as we know this always exists - } - handled = true; - } - else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down - // find the 2nd next node and move before that one - if (lastNode.expanded) { - nextNode = lastNode.append ? lastNode.append._nextNode() : undefined; - } - else { - nextNode = lastNode._nextNode(); - } - var nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append); - if (nextNode2 && nextNode2.parent) { - oldSelection = this.editor.getSelection(); - oldBeforeNode = lastNode._nextSibling(); - - selectedNodes.forEach(function (node) { - nextNode2.parent.moveBefore(node, nextNode2); - }); - this.focus(Node.focusElement || this._getElementName(target)); - - this.editor._onAction('moveNodes', { - nodes: selectedNodes, - oldBeforeNode: oldBeforeNode, - newBeforeNode: nextNode2, - oldSelection: oldSelection, - newSelection: this.editor.getSelection() - }); - } - handled = true; - } - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } -}; - -/** - * Handle the expand event, when clicked on the expand button - * @param {boolean} recurse If true, child nodes will be expanded too - * @private - */ -Node.prototype._onExpand = function (recurse) { - if (recurse) { - // Take the table offline - var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this - var frame = table.parentNode; - var scrollTop = frame.scrollTop; - frame.removeChild(table); - } - - if (this.expanded) { - this.collapse(recurse); - } - else { - this.expand(recurse); - } - - if (recurse) { - // Put the table online again - frame.appendChild(table); - frame.scrollTop = scrollTop; - } -}; - -/** - * Remove nodes - * @param {Node[] | Node} nodes - */ -Node.onRemove = function(nodes) { - if (!Array.isArray(nodes)) { - return Node.onRemove([nodes]); - } - - if (nodes && nodes.length > 0) { - var firstNode = nodes[0]; - var parent = firstNode.parent; - var editor = firstNode.editor; - var firstIndex = firstNode.getIndex(); - editor.highlighter.unhighlight(); - - // adjust the focus - var oldSelection = editor.getSelection(); - Node.blurNodes(nodes); - var newSelection = editor.getSelection(); - - // remove the nodes - nodes.forEach(function (node) { - node.parent._remove(node); - }); - - // store history action - editor._onAction('removeNodes', { - nodes: nodes.slice(0), // store a copy of the array! - parent: parent, - index: firstIndex, - oldSelection: oldSelection, - newSelection: newSelection - }); - } -}; - - -/** - * Duplicate nodes - * duplicated nodes will be added right after the original nodes - * @param {Node[] | Node} nodes - */ -Node.onDuplicate = function(nodes) { - if (!Array.isArray(nodes)) { - return Node.onDuplicate([nodes]); - } - - if (nodes && nodes.length > 0) { - var lastNode = nodes[nodes.length - 1]; - var parent = lastNode.parent; - var editor = lastNode.editor; - - editor.deselect(editor.multiselection.nodes); - - // duplicate the nodes - var oldSelection = editor.getSelection(); - var afterNode = lastNode; - var clones = nodes.map(function (node) { - var clone = node.clone(); - parent.insertAfter(clone, afterNode); - afterNode = clone; - return clone; - }); - - // set selection to the duplicated nodes - if (nodes.length === 1) { - clones[0].focus(); - } - else { - editor.select(clones); - } - var newSelection = editor.getSelection(); - - editor._onAction('duplicateNodes', { - afterNode: lastNode, - nodes: clones, - parent: parent, - oldSelection: oldSelection, - newSelection: newSelection - }); - } -}; - -/** - * Handle insert before event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ -Node.prototype._onInsertBefore = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.insertBefore(newNode, this); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('insertBeforeNodes', { - nodes: [newNode], - beforeNode: this, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); -}; - -/** - * Handle insert after event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ -Node.prototype._onInsertAfter = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.insertAfter(newNode, this); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('insertAfterNodes', { - nodes: [newNode], - afterNode: this, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); -}; - -/** - * Handle append event - * @param {String} [field] - * @param {*} [value] - * @param {String} [type] Can be 'auto', 'array', 'object', or 'string' - * @private - */ -Node.prototype._onAppend = function (field, value, type) { - var oldSelection = this.editor.getSelection(); - - var newNode = new Node(this.editor, { - field: (field != undefined) ? field : '', - value: (value != undefined) ? value : '', - type: type - }); - newNode.expand(true); - this.parent.appendChild(newNode); - this.editor.highlighter.unhighlight(); - newNode.focus('field'); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('appendNodes', { - nodes: [newNode], - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); -}; - -/** - * Change the type of the node's value - * @param {String} newType - * @private - */ -Node.prototype._onChangeType = function (newType) { - var oldType = this.type; - if (newType != oldType) { - var oldSelection = this.editor.getSelection(); - this.changeType(newType); - var newSelection = this.editor.getSelection(); - - this.editor._onAction('changeType', { - node: this, - oldType: oldType, - newType: newType, - oldSelection: oldSelection, - newSelection: newSelection - }); - } -}; - -/** - * Sort the child's of the node. Only applicable when the node has type 'object' - * or 'array'. - * @param {String} direction Sorting direction. Available values: "asc", "desc" - * @private - */ -Node.prototype.sort = function (direction) { - if (!this._hasChilds()) { - return; - } - - var order = (direction == 'desc') ? -1 : 1; - var prop = (this.type == 'array') ? 'value': 'field'; - this.hideChilds(); - - var oldChilds = this.childs; - var oldSortOrder = this.sortOrder; - - // copy the array (the old one will be kept for an undo action - this.childs = this.childs.concat(); - - // sort the arrays - this.childs.sort(function (a, b) { - return order * naturalSort(a[prop], b[prop]); - }); - this.sortOrder = (order == 1) ? 'asc' : 'desc'; - - this.editor._onAction('sort', { - node: this, - oldChilds: oldChilds, - oldSort: oldSortOrder, - newChilds: this.childs, - newSort: this.sortOrder - }); - - this.showChilds(); -}; - -/** - * Create a table row with an append button. - * @return {HTMLElement | undefined} buttonAppend or undefined when inapplicable - */ -Node.prototype.getAppend = function () { - if (!this.append) { - this.append = new AppendNode(this.editor); - this.append.setParent(this); - } - return this.append.getDom(); -}; - -/** - * Find the node from an event target - * @param {Node} target - * @return {Node | undefined} node or undefined when not found - * @static - */ -Node.getNodeFromTarget = function (target) { - while (target) { - if (target.node) { - return target.node; - } - target = target.parentNode; - } - - return undefined; -}; - -/** - * Remove the focus of given nodes, and move the focus to the (a) node before, - * (b) the node after, or (c) the parent node. - * @param {Array. | Node} nodes - */ -Node.blurNodes = function (nodes) { - if (!Array.isArray(nodes)) { - Node.blurNodes([nodes]); - return; - } - - var firstNode = nodes[0]; - var parent = firstNode.parent; - var firstIndex = firstNode.getIndex(); - - if (parent.childs[firstIndex + nodes.length]) { - parent.childs[firstIndex + nodes.length].focus(); - } - else if (parent.childs[firstIndex - 1]) { - parent.childs[firstIndex - 1].focus(); - } - else { - parent.focus(); - } -}; - -/** - * Get the next sibling of current node - * @return {Node} nextSibling - * @private - */ -Node.prototype._nextSibling = function () { - var index = this.parent.childs.indexOf(this); - return this.parent.childs[index + 1] || this.parent.append; -}; - -/** - * Get the previously rendered node - * @return {Node | null} previousNode - * @private - */ -Node.prototype._previousNode = function () { - var prevNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - // find the previous field - var prevDom = dom; - do { - prevDom = prevDom.previousSibling; - prevNode = Node.getNodeFromTarget(prevDom); - } - while (prevDom && (prevNode instanceof AppendNode && !prevNode.isVisible())); - } - return prevNode; -}; - -/** - * Get the next rendered node - * @return {Node | null} nextNode - * @private - */ -Node.prototype._nextNode = function () { - var nextNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - // find the previous field - var nextDom = dom; - do { - nextDom = nextDom.nextSibling; - nextNode = Node.getNodeFromTarget(nextDom); - } - while (nextDom && (nextNode instanceof AppendNode && !nextNode.isVisible())); - } - - return nextNode; -}; - -/** - * Get the first rendered node - * @return {Node | null} firstNode - * @private - */ -Node.prototype._firstNode = function () { - var firstNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - var firstDom = dom.parentNode.firstChild; - firstNode = Node.getNodeFromTarget(firstDom); - } - - return firstNode; -}; - -/** - * Get the last rendered node - * @return {Node | null} lastNode - * @private - */ -Node.prototype._lastNode = function () { - var lastNode = null; - var dom = this.getDom(); - if (dom && dom.parentNode) { - var lastDom = dom.parentNode.lastChild; - lastNode = Node.getNodeFromTarget(lastDom); - while (lastDom && (lastNode instanceof AppendNode && !lastNode.isVisible())) { - lastDom = lastDom.previousSibling; - lastNode = Node.getNodeFromTarget(lastDom); - } - } - return lastNode; -}; - -/** - * Get the next element which can have focus. - * @param {Element} elem - * @return {Element | null} nextElem - * @private - */ -Node.prototype._previousElement = function (elem) { - var dom = this.dom; - // noinspection FallthroughInSwitchStatementJS - switch (elem) { - case dom.value: - if (this.fieldEditable) { - return dom.field; - } - // intentional fall through - case dom.field: - if (this._hasChilds()) { - return dom.expand; - } - // intentional fall through - case dom.expand: - return dom.menu; - case dom.menu: - if (dom.drag) { - return dom.drag; - } - // intentional fall through - default: - return null; - } -}; - -/** - * Get the next element which can have focus. - * @param {Element} elem - * @return {Element | null} nextElem - * @private - */ -Node.prototype._nextElement = function (elem) { - var dom = this.dom; - // noinspection FallthroughInSwitchStatementJS - switch (elem) { - case dom.drag: - return dom.menu; - case dom.menu: - if (this._hasChilds()) { - return dom.expand; - } - // intentional fall through - case dom.expand: - if (this.fieldEditable) { - return dom.field; - } - // intentional fall through - case dom.field: - if (!this._hasChilds()) { - return dom.value; - } - default: - return null; - } -}; - -/** - * Get the dom name of given element. returns null if not found. - * For example when element == dom.field, "field" is returned. - * @param {Element} element - * @return {String | null} elementName Available elements with name: 'drag', - * 'menu', 'expand', 'field', 'value' - * @private - */ -Node.prototype._getElementName = function (element) { - var dom = this.dom; - for (var name in dom) { - if (dom.hasOwnProperty(name)) { - if (dom[name] == element) { - return name; - } - } - } - return null; -}; - -/** - * Test if this node has childs. This is the case when the node is an object - * or array. - * @return {boolean} hasChilds - * @private - */ -Node.prototype._hasChilds = function () { - return this.type == 'array' || this.type == 'object'; -}; - -// titles with explanation for the different types -Node.TYPE_TITLES = { - 'auto': 'Field type "auto". ' + - 'The field type is automatically determined from the value ' + - 'and can be a string, number, boolean, or null.', - 'object': 'Field type "object". ' + - 'An object contains an unordered set of key/value pairs.', - 'array': 'Field type "array". ' + - 'An array contains an ordered collection of values.', - 'string': 'Field type "string". ' + - 'Field type is not determined from the value, ' + - 'but always returned as string.' -}; - -/** - * Show a contextmenu for this node - * @param {HTMLElement} anchor Anchor element to attach the context menu to - * as sibling. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ -Node.prototype.showContextMenu = function (anchor, onClose) { - var node = this; - var titles = Node.TYPE_TITLES; - var items = []; - - if (this.editable.value) { - items.push({ - text: 'Type', - title: 'Change the type of this field', - className: 'jsoneditor-type-' + this.type, - submenu: [ - { - text: 'Auto', - className: 'jsoneditor-type-auto' + - (this.type == 'auto' ? ' jsoneditor-selected' : ''), - title: titles.auto, - click: function () { - node._onChangeType('auto'); - } - }, - { - text: 'Array', - className: 'jsoneditor-type-array' + - (this.type == 'array' ? ' jsoneditor-selected' : ''), - title: titles.array, - click: function () { - node._onChangeType('array'); - } - }, - { - text: 'Object', - className: 'jsoneditor-type-object' + - (this.type == 'object' ? ' jsoneditor-selected' : ''), - title: titles.object, - click: function () { - node._onChangeType('object'); - } - }, - { - text: 'String', - className: 'jsoneditor-type-string' + - (this.type == 'string' ? ' jsoneditor-selected' : ''), - title: titles.string, - click: function () { - node._onChangeType('string'); - } - } - ] - }); - } - - if (this._hasChilds()) { - var direction = ((this.sortOrder == 'asc') ? 'desc': 'asc'); - items.push({ - text: 'Sort', - title: 'Sort the childs of this ' + this.type, - className: 'jsoneditor-sort-' + direction, - click: function () { - node.sort(direction); - }, - submenu: [ - { - text: 'Ascending', - className: 'jsoneditor-sort-asc', - title: 'Sort the childs of this ' + this.type + ' in ascending order', - click: function () { - node.sort('asc'); - } - }, - { - text: 'Descending', - className: 'jsoneditor-sort-desc', - title: 'Sort the childs of this ' + this.type +' in descending order', - click: function () { - node.sort('desc'); - } - } - ] - }); - } - - if (this.parent && this.parent._hasChilds()) { - if (items.length) { - // create a separator - items.push({ - 'type': 'separator' - }); - } - - // create append button (for last child node only) - var childs = node.parent.childs; - if (node == childs[childs.length - 1]) { - items.push({ - text: 'Append', - title: 'Append a new field with type \'auto\' after this field (Ctrl+Shift+Ins)', - submenuTitle: 'Select the type of the field to be appended', - className: 'jsoneditor-append', - click: function () { - node._onAppend('', '', 'auto'); - }, - submenu: [ - { - text: 'Auto', - className: 'jsoneditor-type-auto', - title: titles.auto, - click: function () { - node._onAppend('', '', 'auto'); - } - }, - { - text: 'Array', - className: 'jsoneditor-type-array', - title: titles.array, - click: function () { - node._onAppend('', []); - } - }, - { - text: 'Object', - className: 'jsoneditor-type-object', - title: titles.object, - click: function () { - node._onAppend('', {}); - } - }, - { - text: 'String', - className: 'jsoneditor-type-string', - title: titles.string, - click: function () { - node._onAppend('', '', 'string'); - } - } - ] - }); - } - - // create insert button - items.push({ - text: 'Insert', - title: 'Insert a new field with type \'auto\' before this field (Ctrl+Ins)', - submenuTitle: 'Select the type of the field to be inserted', - className: 'jsoneditor-insert', - click: function () { - node._onInsertBefore('', '', 'auto'); - }, - submenu: [ - { - text: 'Auto', - className: 'jsoneditor-type-auto', - title: titles.auto, - click: function () { - node._onInsertBefore('', '', 'auto'); - } - }, - { - text: 'Array', - className: 'jsoneditor-type-array', - title: titles.array, - click: function () { - node._onInsertBefore('', []); - } - }, - { - text: 'Object', - className: 'jsoneditor-type-object', - title: titles.object, - click: function () { - node._onInsertBefore('', {}); - } - }, - { - text: 'String', - className: 'jsoneditor-type-string', - title: titles.string, - click: function () { - node._onInsertBefore('', '', 'string'); - } - } - ] - }); - - if (this.editable.field) { - // create duplicate button - items.push({ - text: 'Duplicate', - title: 'Duplicate this field (Ctrl+D)', - className: 'jsoneditor-duplicate', - click: function () { - Node.onDuplicate(node); - } - }); - - // create remove button - items.push({ - text: 'Remove', - title: 'Remove this field (Ctrl+Del)', - className: 'jsoneditor-remove', - click: function () { - Node.onRemove(node); - } - }); - } - } - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor, this.editor.content); -}; - -/** - * get the type of a value - * @param {*} value - * @return {String} type Can be 'object', 'array', 'string', 'auto' - * @private - */ -Node.prototype._getType = function(value) { - if (value instanceof Array) { - return 'array'; - } - if (value instanceof Object) { - return 'object'; - } - if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') { - return 'string'; - } - - return 'auto'; -}; - -/** - * cast contents of a string to the correct type. This can be a string, - * a number, a boolean, etc - * @param {String} str - * @return {*} castedStr - * @private - */ -Node.prototype._stringCast = function(str) { - var lower = str.toLowerCase(), - num = Number(str), // will nicely fail with '123ab' - numFloat = parseFloat(str); // will nicely fail with ' ' - - if (str == '') { - return ''; - } - else if (lower == 'null') { - return null; - } - else if (lower == 'true') { - return true; - } - else if (lower == 'false') { - return false; - } - else if (!isNaN(num) && !isNaN(numFloat)) { - return num; - } - else { - return str; - } -}; - -/** - * escape a text, such that it can be displayed safely in an HTML element - * @param {String} text - * @return {String} escapedText - * @private - */ -Node.prototype._escapeHTML = function (text) { - if (typeof text !== 'string') { - return String(text); - } - else { - var htmlEscaped = String(text) - .replace(/&/g, '&') // must be replaced first! - .replace(//g, '>') - .replace(/ /g, '  ') // replace double space with an nbsp and space - .replace(/^ /, ' ') // space at start - .replace(/ $/, ' '); // space at end - - var json = JSON.stringify(htmlEscaped); - var html = json.substring(1, json.length - 1); - if (this.editor.options.escapeUnicode === true) { - html = util.escapeUnicodeChars(html); - } - return html; - } -}; - -/** - * unescape a string. - * @param {String} escapedText - * @return {String} text - * @private - */ -Node.prototype._unescapeHTML = function (escapedText) { - var json = '"' + this._escapeJSON(escapedText) + '"'; - var htmlEscaped = util.parse(json); - - return htmlEscaped - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/ |\u00A0/g, ' ') - .replace(/&/g, '&'); // must be replaced last -}; - -/** - * escape a text to make it a valid JSON string. The method will: - * - replace unescaped double quotes with '\"' - * - replace unescaped backslash with '\\' - * - replace returns with '\n' - * @param {String} text - * @return {String} escapedText - * @private - */ -Node.prototype._escapeJSON = function (text) { - // TODO: replace with some smart regex (only when a new solution is faster!) - var escaped = ''; - var i = 0; - while (i < text.length) { - var c = text.charAt(i); - if (c == '\n') { - escaped += '\\n'; - } - else if (c == '\\') { - escaped += c; - i++; - - c = text.charAt(i); - if (c === '' || '"\\/bfnrtu'.indexOf(c) == -1) { - escaped += '\\'; // no valid escape character - } - escaped += c; - } - else if (c == '"') { - escaped += '\\"'; - } - else { - escaped += c; - } - i++; - } - - return escaped; -}; - -// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode -var AppendNode = appendNodeFactory(Node); - -module.exports = Node; diff --git a/src_old/js/SearchBox.js b/src_old/js/SearchBox.js deleted file mode 100644 index 43ff961..0000000 --- a/src_old/js/SearchBox.js +++ /dev/null @@ -1,312 +0,0 @@ -'use strict'; - -/** - * @constructor SearchBox - * Create a search box in given HTML container - * @param {JSONEditor} editor The JSON Editor to attach to - * @param {Element} container HTML container element of where to - * create the search box - */ -function SearchBox (editor, container) { - var searchBox = this; - - this.editor = editor; - this.timeout = undefined; - this.delay = 200; // ms - this.lastText = undefined; - - this.dom = {}; - this.dom.container = container; - - var table = document.createElement('table'); - this.dom.table = table; - table.className = 'jsoneditor-search'; - container.appendChild(table); - var tbody = document.createElement('tbody'); - this.dom.tbody = tbody; - table.appendChild(tbody); - var tr = document.createElement('tr'); - tbody.appendChild(tr); - - var td = document.createElement('td'); - tr.appendChild(td); - var results = document.createElement('div'); - this.dom.results = results; - results.className = 'jsoneditor-results'; - td.appendChild(results); - - td = document.createElement('td'); - tr.appendChild(td); - var divInput = document.createElement('div'); - this.dom.input = divInput; - divInput.className = 'jsoneditor-frame'; - divInput.title = 'Search fields and values'; - td.appendChild(divInput); - - // table to contain the text input and search button - var tableInput = document.createElement('table'); - divInput.appendChild(tableInput); - var tbodySearch = document.createElement('tbody'); - tableInput.appendChild(tbodySearch); - tr = document.createElement('tr'); - tbodySearch.appendChild(tr); - - var refreshSearch = document.createElement('button'); - refreshSearch.className = 'jsoneditor-refresh'; - td = document.createElement('td'); - td.appendChild(refreshSearch); - tr.appendChild(td); - - var search = document.createElement('input'); - this.dom.search = search; - search.oninput = function (event) { - searchBox._onDelayedSearch(event); - }; - search.onchange = function (event) { // For IE 9 - searchBox._onSearch(); - }; - search.onkeydown = function (event) { - searchBox._onKeyDown(event); - }; - search.onkeyup = function (event) { - searchBox._onKeyUp(event); - }; - refreshSearch.onclick = function (event) { - search.select(); - }; - - // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819 - td = document.createElement('td'); - td.appendChild(search); - tr.appendChild(td); - - var searchNext = document.createElement('button'); - searchNext.title = 'Next result (Enter)'; - searchNext.className = 'jsoneditor-next'; - searchNext.onclick = function () { - searchBox.next(); - }; - td = document.createElement('td'); - td.appendChild(searchNext); - tr.appendChild(td); - - var searchPrevious = document.createElement('button'); - searchPrevious.title = 'Previous result (Shift+Enter)'; - searchPrevious.className = 'jsoneditor-previous'; - searchPrevious.onclick = function () { - searchBox.previous(); - }; - td = document.createElement('td'); - td.appendChild(searchPrevious); - tr.appendChild(td); -} - -/** - * Go to the next search result - * @param {boolean} [focus] If true, focus will be set to the next result - * focus is false by default. - */ -SearchBox.prototype.next = function(focus) { - if (this.results != undefined) { - var index = (this.resultIndex != undefined) ? this.resultIndex + 1 : 0; - if (index > this.results.length - 1) { - index = 0; - } - this._setActiveResult(index, focus); - } -}; - -/** - * Go to the prevous search result - * @param {boolean} [focus] If true, focus will be set to the next result - * focus is false by default. - */ -SearchBox.prototype.previous = function(focus) { - if (this.results != undefined) { - var max = this.results.length - 1; - var index = (this.resultIndex != undefined) ? this.resultIndex - 1 : max; - if (index < 0) { - index = max; - } - this._setActiveResult(index, focus); - } -}; - -/** - * Set new value for the current active result - * @param {Number} index - * @param {boolean} [focus] If true, focus will be set to the next result. - * focus is false by default. - * @private - */ -SearchBox.prototype._setActiveResult = function(index, focus) { - // de-activate current active result - if (this.activeResult) { - var prevNode = this.activeResult.node; - var prevElem = this.activeResult.elem; - if (prevElem == 'field') { - delete prevNode.searchFieldActive; - } - else { - delete prevNode.searchValueActive; - } - prevNode.updateDom(); - } - - if (!this.results || !this.results[index]) { - // out of range, set to undefined - this.resultIndex = undefined; - this.activeResult = undefined; - return; - } - - this.resultIndex = index; - - // set new node active - var node = this.results[this.resultIndex].node; - var elem = this.results[this.resultIndex].elem; - if (elem == 'field') { - node.searchFieldActive = true; - } - else { - node.searchValueActive = true; - } - this.activeResult = this.results[this.resultIndex]; - node.updateDom(); - - // TODO: not so nice that the focus is only set after the animation is finished - node.scrollTo(function () { - if (focus) { - node.focus(elem); - } - }); -}; - -/** - * Cancel any running onDelayedSearch. - * @private - */ -SearchBox.prototype._clearDelay = function() { - if (this.timeout != undefined) { - clearTimeout(this.timeout); - delete this.timeout; - } -}; - -/** - * Start a timer to execute a search after a short delay. - * Used for reducing the number of searches while typing. - * @param {Event} event - * @private - */ -SearchBox.prototype._onDelayedSearch = function (event) { - // execute the search after a short delay (reduces the number of - // search actions while typing in the search text box) - this._clearDelay(); - var searchBox = this; - this.timeout = setTimeout(function (event) { - searchBox._onSearch(); - }, - this.delay); -}; - -/** - * Handle onSearch event - * @param {boolean} [forceSearch] If true, search will be executed again even - * when the search text is not changed. - * Default is false. - * @private - */ -SearchBox.prototype._onSearch = function (forceSearch) { - this._clearDelay(); - - var value = this.dom.search.value; - var text = (value.length > 0) ? value : undefined; - if (text != this.lastText || forceSearch) { - // only search again when changed - this.lastText = text; - this.results = this.editor.search(text); - this._setActiveResult(undefined); - - // display search results - if (text != undefined) { - var resultCount = this.results.length; - switch (resultCount) { - case 0: this.dom.results.innerHTML = 'no results'; break; - case 1: this.dom.results.innerHTML = '1 result'; break; - default: this.dom.results.innerHTML = resultCount + ' results'; break; - } - } - else { - this.dom.results.innerHTML = ''; - } - } -}; - -/** - * Handle onKeyDown event in the input box - * @param {Event} event - * @private - */ -SearchBox.prototype._onKeyDown = function (event) { - var keynum = event.which; - if (keynum == 27) { // ESC - this.dom.search.value = ''; // clear search - this._onSearch(); - event.preventDefault(); - event.stopPropagation(); - } - else if (keynum == 13) { // Enter - if (event.ctrlKey) { - // force to search again - this._onSearch(true); - } - else if (event.shiftKey) { - // move to the previous search result - this.previous(); - } - else { - // move to the next search result - this.next(); - } - event.preventDefault(); - event.stopPropagation(); - } -}; - -/** - * Handle onKeyUp event in the input box - * @param {Event} event - * @private - */ -SearchBox.prototype._onKeyUp = function (event) { - var keynum = event.keyCode; - if (keynum != 27 && keynum != 13) { // !show and !Enter - this._onDelayedSearch(event); // For IE 9 - } -}; - -/** - * Clear the search results - */ -SearchBox.prototype.clear = function () { - this.dom.search.value = ''; - this._onSearch(); -}; - -/** - * Destroy the search box - */ -SearchBox.prototype.destroy = function () { - this.editor = null; - this.dom.container.removeChild(this.dom.table); - this.dom = null; - - this.results = null; - this.activeResult = null; - - this._clearDelay(); - -}; - -module.exports = SearchBox; diff --git a/src_old/js/ace/index.js b/src_old/js/ace/index.js deleted file mode 100644 index 846ae0a..0000000 --- a/src_old/js/ace/index.js +++ /dev/null @@ -1,9 +0,0 @@ -// load brace -var ace = require('brace'); - -// load required ace modules -require('brace/mode/json'); -require('brace/ext/searchbox'); -require('./theme-jsoneditor'); - -module.exports = ace; diff --git a/src_old/js/ace/theme-jsoneditor.js b/src_old/js/ace/theme-jsoneditor.js deleted file mode 100644 index 6cec3a6..0000000 --- a/src_old/js/ace/theme-jsoneditor.js +++ /dev/null @@ -1,144 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-jsoneditor"; -exports.cssText = ".ace-jsoneditor .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -\ -.ace-jsoneditor.ace_editor {\ -font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ -line-height: 1.3;\ -}\ -.ace-jsoneditor .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-jsoneditor .ace_scroller {\ -background-color: #FFFFFF\ -}\ -.ace-jsoneditor .ace_text-layer {\ -color: gray\ -}\ -.ace-jsoneditor .ace_variable {\ -color: #1a1a1a\ -}\ -.ace-jsoneditor .ace_cursor {\ -border-left: 2px solid #000000\ -}\ -.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\ -border-left: 0px;\ -border-bottom: 1px solid #000000\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_selection {\ -background: lightgray\ -}\ -.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -border-radius: 2px\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_active-line {\ -background: #FFFBD1\ -}\ -.ace-jsoneditor .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-jsoneditor .ace_marker-layer .ace_selected-word {\ -border: 1px solid lightgray\ -}\ -.ace-jsoneditor .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-jsoneditor .ace_keyword,\ -.ace-jsoneditor .ace_meta,\ -.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ -color: #AF956F\ -}\ -.ace-jsoneditor .ace_keyword.ace_operator {\ -color: #484848\ -}\ -.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ -color: #96DC5F\ -}\ -.ace-jsoneditor .ace_constant.ace_language {\ -color: darkorange\ -}\ -.ace-jsoneditor .ace_constant.ace_numeric {\ -color: red\ -}\ -.ace-jsoneditor .ace_constant.ace_character.ace_entity {\ -color: #BF78CC\ -}\ -.ace-jsoneditor .ace_invalid {\ -color: #FFFFFF;\ -background-color: #FF002A;\ -}\ -.ace-jsoneditor .ace_fold {\ -background-color: #AF956F;\ -border-color: #000000\ -}\ -.ace-jsoneditor .ace_storage,\ -.ace-jsoneditor .ace_support.ace_class,\ -.ace-jsoneditor .ace_support.ace_function,\ -.ace-jsoneditor .ace_support.ace_other,\ -.ace-jsoneditor .ace_support.ace_type {\ -color: #C52727\ -}\ -.ace-jsoneditor .ace_string {\ -color: green\ -}\ -.ace-jsoneditor .ace_comment {\ -color: #BCC8BA\ -}\ -.ace-jsoneditor .ace_entity.ace_name.ace_tag,\ -.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-jsoneditor .ace_markup.ace_underline {\ -text-decoration: underline\ -}\ -.ace-jsoneditor .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ -}"; - -var dom = acequire("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/src_old/js/appendNodeFactory.js b/src_old/js/appendNodeFactory.js deleted file mode 100644 index 12b7466..0000000 --- a/src_old/js/appendNodeFactory.js +++ /dev/null @@ -1,228 +0,0 @@ -'use strict'; - -var util = require('./util'); -var ContextMenu = require('./ContextMenu'); - -/** - * A factory function to create an AppendNode, which depends on a Node - * @param {Node} Node - */ -function appendNodeFactory(Node) { - /** - * @constructor AppendNode - * @extends Node - * @param {TreeEditor} editor - * Create a new AppendNode. This is a special node which is created at the - * end of the list with childs for an object or array - */ - function AppendNode (editor) { - /** @type {TreeEditor} */ - this.editor = editor; - this.dom = {}; - } - - AppendNode.prototype = new Node(); - - /** - * Return a table row with an append button. - * @return {Element} dom TR element - */ - AppendNode.prototype.getDom = function () { - // TODO: implement a new solution for the append node - var dom = this.dom; - - if (dom.tr) { - return dom.tr; - } - - this._updateEditability(); - - // a row for the append button - var trAppend = document.createElement('tr'); - trAppend.node = this; - dom.tr = trAppend; - - // TODO: consistent naming - - if (this.editor.options.mode === 'tree') { - // a cell for the dragarea column - dom.tdDrag = document.createElement('td'); - - // create context menu - var tdMenu = document.createElement('td'); - dom.tdMenu = tdMenu; - var menu = document.createElement('button'); - menu.className = 'jsoneditor-contextmenu'; - menu.title = 'Click to open the actions menu (Ctrl+M)'; - dom.menu = menu; - tdMenu.appendChild(dom.menu); - } - - // a cell for the contents (showing text 'empty') - var tdAppend = document.createElement('td'); - var domText = document.createElement('div'); - domText.innerHTML = '(empty)'; - domText.className = 'jsoneditor-readonly'; - tdAppend.appendChild(domText); - dom.td = tdAppend; - dom.text = domText; - - this.updateDom(); - - return trAppend; - }; - - /** - * Update the HTML dom of the Node - */ - AppendNode.prototype.updateDom = function () { - var dom = this.dom; - var tdAppend = dom.td; - if (tdAppend) { - tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; - // TODO: not so nice hard coded offset - } - - var domText = dom.text; - if (domText) { - domText.innerHTML = '(empty ' + this.parent.type + ')'; - } - - // attach or detach the contents of the append node: - // hide when the parent has childs, show when the parent has no childs - var trAppend = dom.tr; - if (!this.isVisible()) { - if (dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.removeChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.removeChild(dom.tdMenu); - } - trAppend.removeChild(tdAppend); - } - } - else { - if (!dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.appendChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.appendChild(dom.tdMenu); - } - trAppend.appendChild(tdAppend); - } - } - }; - - /** - * Check whether the AppendNode is currently visible. - * the AppendNode is visible when its parent has no childs (i.e. is empty). - * @return {boolean} isVisible - */ - AppendNode.prototype.isVisible = function () { - return (this.parent.childs.length == 0); - }; - - /** - * Show a contextmenu for this node - * @param {HTMLElement} anchor The element to attach the menu to. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ - AppendNode.prototype.showContextMenu = function (anchor, onClose) { - var node = this; - var titles = Node.TYPE_TITLES; - var items = [ - // create append button - { - 'text': 'Append', - 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)', - 'submenuTitle': 'Select the type of the field to be appended', - 'className': 'jsoneditor-insert', - 'click': function () { - node._onAppend('', '', 'auto'); - }, - 'submenu': [ - { - 'text': 'Auto', - 'className': 'jsoneditor-type-auto', - 'title': titles.auto, - 'click': function () { - node._onAppend('', '', 'auto'); - } - }, - { - 'text': 'Array', - 'className': 'jsoneditor-type-array', - 'title': titles.array, - 'click': function () { - node._onAppend('', []); - } - }, - { - 'text': 'Object', - 'className': 'jsoneditor-type-object', - 'title': titles.object, - 'click': function () { - node._onAppend('', {}); - } - }, - { - 'text': 'String', - 'className': 'jsoneditor-type-string', - 'title': titles.string, - 'click': function () { - node._onAppend('', '', 'string'); - } - } - ] - } - ]; - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor, this.editor.content); - }; - - /** - * Handle an event. The event is catched centrally by the editor - * @param {Event} event - */ - AppendNode.prototype.onEvent = function (event) { - var type = event.type; - var target = event.target || event.srcElement; - var dom = this.dom; - - // highlight the append nodes parent - var menu = dom.menu; - if (target == menu) { - if (type == 'mouseover') { - this.editor.highlighter.highlight(this.parent); - } - else if (type == 'mouseout') { - this.editor.highlighter.unhighlight(); - } - } - - // context menu events - if (type == 'click' && target == dom.menu) { - var highlighter = this.editor.highlighter; - highlighter.highlight(this.parent); - highlighter.lock(); - util.addClassName(dom.menu, 'jsoneditor-selected'); - this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'jsoneditor-selected'); - highlighter.unlock(); - highlighter.unhighlight(); - }); - } - - if (type == 'keydown') { - this.onKeyDown(event); - } - }; - - return AppendNode; -} - -module.exports = appendNodeFactory; diff --git a/src_old/js/assets/jsonlint/README.md b/src_old/js/assets/jsonlint/README.md deleted file mode 100644 index ae26ff6..0000000 --- a/src_old/js/assets/jsonlint/README.md +++ /dev/null @@ -1,15 +0,0 @@ -The file jsonlint.js is copied from the following project: - -https://github.com/josdejong/jsonlint at 85a19d7 - -which is a fork of the (currently not maintained) project: - -https://github.com/zaach/jsonlint - -The forked project contains some fixes to allow the file to be bundled with -browserify. The file is copied in this project to prevent issues with linking -to a github project from package.json, which is for example not supported -by jspm. - -As soon as zaach/jsonlint is being maintained again we can push the fix -to the original library and use it as dependency again. diff --git a/src_old/js/assets/jsonlint/jsonlint.js b/src_old/js/assets/jsonlint/jsonlint.js deleted file mode 100644 index ae9b2f4..0000000 --- a/src_old/js/assets/jsonlint/jsonlint.js +++ /dev/null @@ -1,418 +0,0 @@ -/* Jison generated parser */ -var jsonlint = (function(){ -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, -terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, -productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], -performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - -var $0 = $$.length - 1; -switch (yystate) { -case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - -break; -case 2:this.$ = Number(yytext); -break; -case 3:this.$ = null; -break; -case 4:this.$ = true; -break; -case 5:this.$ = false; -break; -case 6:return this.$ = $$[$0-1]; -break; -case 13:this.$ = {}; -break; -case 14:this.$ = $$[$0-1]; -break; -case 15:this.$ = [$$[$0-2], $$[$0]]; -break; -case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; -break; -case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; -break; -case 18:this.$ = []; -break; -case 19:this.$ = $$[$0-1]; -break; -case 20:this.$ = [$$[$0]]; -break; -case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); -break; -} -}, -table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], -defaultActions: {16:[2,6]}, -parseError: function parseError(str, hash) { - throw new Error(str); -}, -parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; -}}; -/* Jison generated lexer */ -var lexer = (function(){ -var lexer = ({EOF:1, -parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, -setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, -input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, -unput:function (ch) { - this._input = ch + this._input; - return this; - }, -more:function () { - this._more = true; - return this; - }, -less:function (n) { - this._input = this.match.slice(n) + this._input; - }, -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - tempMatch, - index, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, -lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, -begin:function begin(condition) { - this.conditionStack.push(condition); - }, -popState:function popState() { - return this.conditionStack.pop(); - }, -_currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, -topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, -pushState:function begin(condition) { - this.begin(condition); - }}); -lexer.options = {}; -lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - -var YYSTATE=YY_START -switch($avoiding_name_collisions) { -case 0:/* skip whitespace */ -break; -case 1:return 6 -break; -case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 -break; -case 3:return 17 -break; -case 4:return 18 -break; -case 5:return 23 -break; -case 6:return 24 -break; -case 7:return 22 -break; -case 8:return 21 -break; -case 9:return 10 -break; -case 10:return 11 -break; -case 11:return 8 -break; -case 12:return 14 -break; -case 13:return 'INVALID' -break; -} -}; -lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; -lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - - -; -return lexer;})() -parser.lexer = lexer; -return parser; -})(); -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { - exports.parser = jsonlint; - exports.parse = jsonlint.parse.bind(jsonlint); -} \ No newline at end of file diff --git a/src_old/js/header.js b/src_old/js/header.js deleted file mode 100644 index 52ef8d3..0000000 --- a/src_old/js/header.js +++ /dev/null @@ -1,29 +0,0 @@ -/*! - * jsoneditor.js - * - * @brief - * JSONEditor is a web-based tool to view, edit, format, and validate JSON. - * It has various modes such as a tree editor, a code editor, and a plain text - * editor. - * - * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ - * - * @license - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - * - * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org - * - * @author Jos de Jong, - * @version @@version - * @date @@date - */ \ No newline at end of file diff --git a/src_old/js/textmode.js b/src_old/js/textmode.js deleted file mode 100644 index 91a5741..0000000 --- a/src_old/js/textmode.js +++ /dev/null @@ -1,489 +0,0 @@ -'use strict'; - -var ace; -try { - ace = require('./ace'); -} -catch (err) { - // failed to load ace, no problem, we will fall back to plain text -} - -var ModeSwitcher = require('./ModeSwitcher'); -var util = require('./util'); - -// create a mixin with the functions for text mode -var textmode = {}; - -var MAX_ERRORS = 3; // maximum number of displayed errors at the bottom - -/** - * Create a text editor - * @param {Element} container - * @param {Object} [options] Object with options. available options: - * {String} mode Available values: - * "text" (default) - * or "code". - * {Number} indentation Number of indentation - * spaces. 2 by default. - * {function} onChange Callback method - * triggered on change - * {function} onModeChange Callback method - * triggered after setMode - * {Object} ace A custom instance of - * Ace editor. - * {boolean} escapeUnicode If true, unicode - * characters are escaped. - * false by default. - * @private - */ -textmode.create = function (container, options) { - // read options - options = options || {}; - this.options = options; - - // indentation - if (options.indentation) { - this.indentation = Number(options.indentation); - } - else { - this.indentation = 2; // number of spaces - } - - // grab ace from options if provided - var _ace = options.ace ? options.ace : ace; - - // determine mode - this.mode = (options.mode == 'code') ? 'code' : 'text'; - if (this.mode == 'code') { - // verify whether Ace editor is available and supported - if (typeof _ace === 'undefined') { - this.mode = 'text'; - console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.'); - } - } - - // determine theme - this.theme = options.theme || 'ace/theme/jsoneditor'; - - var me = this; - this.container = container; - this.dom = {}; - this.aceEditor = undefined; // ace code editor - this.textarea = undefined; // plain text editor (fallback when Ace is not available) - this.validateSchema = null; - - // create a debounced validate function - this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL); - - this.width = container.clientWidth; - this.height = container.clientHeight; - - this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; - this.frame.onclick = function (event) { - // prevent default submit action when the editor is located inside a form - event.preventDefault(); - }; - this.frame.onkeydown = function (event) { - me._onKeyDown(event); - }; - - // create menu - this.menu = document.createElement('div'); - this.menu.className = 'jsoneditor-menu'; - this.frame.appendChild(this.menu); - - // create format button - var buttonFormat = document.createElement('button'); - buttonFormat.className = 'jsoneditor-format'; - buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)'; - this.menu.appendChild(buttonFormat); - buttonFormat.onclick = function () { - try { - me.format(); - me._onChange(); - } - catch (err) { - me._onError(err); - } - }; - - // create compact button - var buttonCompact = document.createElement('button'); - buttonCompact.className = 'jsoneditor-compact'; - buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)'; - this.menu.appendChild(buttonCompact); - buttonCompact.onclick = function () { - try { - me.compact(); - me._onChange(); - } - catch (err) { - me._onError(err); - } - }; - - // create mode box - if (this.options && this.options.modes && this.options.modes.length) { - this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) { - // switch mode and restore focus - me.setMode(mode); - me.modeSwitcher.focus(); - }); - } - - this.content = document.createElement('div'); - this.content.className = 'jsoneditor-outer'; - this.frame.appendChild(this.content); - - this.container.appendChild(this.frame); - - if (this.mode == 'code') { - this.editorDom = document.createElement('div'); - this.editorDom.style.height = '100%'; // TODO: move to css - this.editorDom.style.width = '100%'; // TODO: move to css - this.content.appendChild(this.editorDom); - - var aceEditor = _ace.edit(this.editorDom); - aceEditor.$blockScrolling = Infinity; - aceEditor.setTheme(this.theme); - aceEditor.setShowPrintMargin(false); - aceEditor.setFontSize(13); - aceEditor.getSession().setMode('ace/mode/json'); - aceEditor.getSession().setTabSize(this.indentation); - aceEditor.getSession().setUseSoftTabs(true); - aceEditor.getSession().setUseWrapMode(true); - aceEditor.commands.bindKey('Ctrl-L', null); // disable Ctrl+L (is used by the browser to select the address bar) - aceEditor.commands.bindKey('Command-L', null); // disable Ctrl+L (is used by the browser to select the address bar) - this.aceEditor = aceEditor; - - // TODO: deprecated since v5.0.0. Cleanup backward compatibility some day - if (!this.hasOwnProperty('editor')) { - Object.defineProperty(this, 'editor', { - get: function () { - console.warn('Property "editor" has been renamed to "aceEditor".'); - return me.aceEditor; - }, - set: function (aceEditor) { - console.warn('Property "editor" has been renamed to "aceEditor".'); - me.aceEditor = aceEditor; - } - }); - } - - var poweredBy = document.createElement('a'); - poweredBy.appendChild(document.createTextNode('powered by ace')); - poweredBy.href = 'http://ace.ajax.org'; - poweredBy.target = '_blank'; - poweredBy.className = 'jsoneditor-poweredBy'; - poweredBy.onclick = function () { - // TODO: this anchor falls below the margin of the content, - // therefore the normal a.href does not work. We use a click event - // for now, but this should be fixed. - window.open(poweredBy.href, poweredBy.target); - }; - this.menu.appendChild(poweredBy); - - // register onchange event - aceEditor.on('change', this._onChange.bind(this)); - } - else { - // load a plain text textarea - var textarea = document.createElement('textarea'); - textarea.className = 'jsoneditor-text'; - textarea.spellcheck = false; - this.content.appendChild(textarea); - this.textarea = textarea; - - // register onchange event - if (this.textarea.oninput === null) { - this.textarea.oninput = this._onChange.bind(this); - } - else { - // oninput is undefined. For IE8- - this.textarea.onchange = this._onChange.bind(this); - } - } - - this.setSchema(this.options.schema); -}; - -/** - * Handle a change: - * - Validate JSON schema - * - Send a callback to the onChange listener if provided - * @private - */ -textmode._onChange = function () { - // validate JSON schema (if configured) - this._debouncedValidate(); - - // trigger the onChange callback - if (this.options.onChange) { - try { - this.options.onChange(); - } - catch (err) { - console.error('Error in onChange callback: ', err); - } - } -}; - -/** - * Event handler for keydown. Handles shortcut keys - * @param {Event} event - * @private - */ -textmode._onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var handled = false; - - if (keynum == 220 && event.ctrlKey) { - if (event.shiftKey) { // Ctrl+Shift+\ - this.compact(); - this._onChange(); - } - else { // Ctrl+\ - this.format(); - this._onChange(); - } - handled = true; - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } -}; - -/** - * Destroy the editor. Clean up DOM, event listeners, and web workers. - */ -textmode.destroy = function () { - // remove old ace editor - if (this.aceEditor) { - this.aceEditor.destroy(); - this.aceEditor = null; - } - - if (this.frame && this.container && this.frame.parentNode == this.container) { - this.container.removeChild(this.frame); - } - - if (this.modeSwitcher) { - this.modeSwitcher.destroy(); - this.modeSwitcher = null; - } - - this.textarea = null; - - this._debouncedValidate = null; -}; - -/** - * Compact the code in the formatter - */ -textmode.compact = function () { - var json = this.get(); - var text = JSON.stringify(json); - this.setText(text); -}; - -/** - * Format the code in the formatter - */ -textmode.format = function () { - var json = this.get(); - var text = JSON.stringify(json, null, this.indentation); - this.setText(text); -}; - -/** - * Set focus to the formatter - */ -textmode.focus = function () { - if (this.textarea) { - this.textarea.focus(); - } - if (this.aceEditor) { - this.aceEditor.focus(); - } -}; - -/** - * Resize the formatter - */ -textmode.resize = function () { - if (this.aceEditor) { - var force = false; - this.aceEditor.resize(force); - } -}; - -/** - * Set json data in the formatter - * @param {Object} json - */ -textmode.set = function(json) { - this.setText(JSON.stringify(json, null, this.indentation)); -}; - -/** - * Get json data from the formatter - * @return {Object} json - */ -textmode.get = function() { - var text = this.getText(); - var json; - - try { - json = util.parse(text); // this can throw an error - } - catch (err) { - // try to sanitize json, replace JavaScript notation with JSON notation - text = util.sanitize(text); - - // try to parse again - json = util.parse(text); // this can throw an error - } - - return json; -}; - -/** - * Get the text contents of the editor - * @return {String} jsonText - */ -textmode.getText = function() { - if (this.textarea) { - return this.textarea.value; - } - if (this.aceEditor) { - return this.aceEditor.getValue(); - } - return ''; -}; - -/** - * Set the text contents of the editor - * @param {String} jsonText - */ -textmode.setText = function(jsonText) { - var text; - - if (this.options.escapeUnicode === true) { - text = util.escapeUnicodeChars(jsonText); - } - else { - text = jsonText; - } - - if (this.textarea) { - this.textarea.value = text; - } - if (this.aceEditor) { - // prevent emitting onChange events while setting new text - var originalOnChange = this.options.onChange; - this.options.onChange = null; - - this.aceEditor.setValue(text, -1); - - this.options.onChange = originalOnChange; - } - - // validate JSON schema - this.validate(); -}; - -/** - * Validate current JSON object against the configured JSON schema - * Throws an exception when no JSON schema is configured - */ -textmode.validate = function () { - // clear all current errors - if (this.dom.validationErrors) { - this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors); - this.dom.validationErrors = null; - - this.content.style.marginBottom = ''; - this.content.style.paddingBottom = ''; - } - - var doValidate = false; - var errors = []; - var json; - try { - json = this.get(); // this can fail when there is no valid json - doValidate = true; - } - catch (err) { - // no valid JSON, don't validate - } - - // only validate the JSON when parsing the JSON succeeded - if (doValidate && this.validateSchema) { - var valid = this.validateSchema(json); - if (!valid) { - errors = this.validateSchema.errors.map(function (error) { - return util.improveSchemaError(error); - }); - } - } - - if (errors.length > 0) { - // limit the number of displayed errors - var limit = errors.length > MAX_ERRORS; - if (limit) { - errors = errors.slice(0, MAX_ERRORS); - var hidden = this.validateSchema.errors.length - MAX_ERRORS; - errors.push('(' + hidden + ' more errors...)') - } - - var validationErrors = document.createElement('div'); - validationErrors.innerHTML = '' + - '' + - errors.map(function (error) { - var message; - if (typeof error === 'string') { - message = ''; - } - else { - message = '' + - ''; - } - - return '' + message + '' - }).join('') + - '' + - '
' + error + '
' + error.dataPath + '' + error.message + '
'; - - this.dom.validationErrors = validationErrors; - this.frame.appendChild(validationErrors); - - var height = validationErrors.clientHeight; - this.content.style.marginBottom = (-height) + 'px'; - this.content.style.paddingBottom = height + 'px'; - } - - // update the height of the ace editor - if (this.aceEditor) { - var force = false; - this.aceEditor.resize(force); - } -}; - -// define modes -module.exports = [ - { - mode: 'text', - mixin: textmode, - data: 'text', - load: textmode.format - }, - { - mode: 'code', - mixin: textmode, - data: 'text', - load: textmode.format - } -]; diff --git a/src_old/js/treemode.js b/src_old/js/treemode.js deleted file mode 100644 index f36cdee..0000000 --- a/src_old/js/treemode.js +++ /dev/null @@ -1,1194 +0,0 @@ -'use strict'; - - -var Highlighter = require('./Highlighter'); -var History = require('./History'); -var SearchBox = require('./SearchBox'); -var ContextMenu = require('./ContextMenu'); -var Node = require('./Node'); -var ModeSwitcher = require('./ModeSwitcher'); -var util = require('./util'); - -// create a mixin with the functions for tree mode -var treemode = {}; - -/** - * Create a tree editor - * @param {Element} container Container element - * @param {Object} [options] Object with options. available options: - * {String} mode Editor mode. Available values: - * 'tree' (default), 'view', - * and 'form'. - * {Boolean} search Enable search box. - * True by default - * {Boolean} history Enable history (undo/redo). - * True by default - * {function} onChange Callback method, triggered - * on change of contents - * {String} name Field name for the root node. - * {boolean} escapeUnicode If true, unicode - * characters are escaped. - * false by default. - * {Object} schema A JSON Schema for validation - * @private - */ -treemode.create = function (container, options) { - if (!container) { - throw new Error('No container element provided.'); - } - this.container = container; - this.dom = {}; - this.highlighter = new Highlighter(); - this.selection = undefined; // will hold the last input selection - this.multiselection = { - nodes: [] - }; - this.validateSchema = null; // will be set in .setSchema(schema) - this.errorNodes = []; - - this.node = null; - this.focusTarget = null; - - this._setOptions(options); - - if (this.options.history && this.options.mode !== 'view') { - this.history = new History(this); - } - - this._createFrame(); - this._createTable(); -}; - -/** - * Destroy the editor. Clean up DOM, event listeners, and web workers. - */ -treemode.destroy = function () { - if (this.frame && this.container && this.frame.parentNode == this.container) { - this.container.removeChild(this.frame); - this.frame = null; - } - this.container = null; - - this.dom = null; - - this.clear(); - this.node = null; - this.focusTarget = null; - this.selection = null; - this.multiselection = null; - this.errorNodes = null; - this.validateSchema = null; - this._debouncedValidate = null; - - if (this.history) { - this.history.destroy(); - this.history = null; - } - - if (this.searchBox) { - this.searchBox.destroy(); - this.searchBox = null; - } - - if (this.modeSwitcher) { - this.modeSwitcher.destroy(); - this.modeSwitcher = null; - } -}; - -/** - * Initialize and set default options - * @param {Object} [options] See description in constructor - * @private - */ -treemode._setOptions = function (options) { - this.options = { - search: true, - history: true, - mode: 'tree', - name: undefined, // field name of root node - schema: null - }; - - // copy all options - if (options) { - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - this.options[prop] = options[prop]; - } - } - } - - // compile a JSON schema validator if a JSON schema is provided - this.setSchema(this.options.schema); - - // create a debounced validate function - this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL); -}; - -/** - * Set JSON object in editor - * @param {Object | undefined} json JSON data - * @param {String} [name] Optional field name for the root node. - * Can also be set using setName(name). - */ -treemode.set = function (json, name) { - // adjust field name for root node - if (name) { - // TODO: deprecated since version 2.2.0. Cleanup some day. - console.warn('Second parameter "name" is deprecated. Use setName(name) instead.'); - this.options.name = name; - } - - // verify if json is valid JSON, ignore when a function - if (json instanceof Function || (json === undefined)) { - this.clear(); - } - else { - this.content.removeChild(this.table); // Take the table offline - - // replace the root node - var params = { - field: this.options.name, - value: json - }; - var node = new Node(this, params); - this._setRoot(node); - - // validate JSON schema (if configured) - this.validate(); - - // expand - var recurse = false; - this.node.expand(recurse); - - this.content.appendChild(this.table); // Put the table online again - } - - // TODO: maintain history, store last state and previous document - if (this.history) { - this.history.clear(); - } - - // clear search - if (this.searchBox) { - this.searchBox.clear(); - } -}; - -/** - * Get JSON object from editor - * @return {Object | undefined} json - */ -treemode.get = function () { - // remove focus from currently edited node - if (this.focusTarget) { - var node = Node.getNodeFromTarget(this.focusTarget); - if (node) { - node.blur(); - } - } - - if (this.node) { - return this.node.getValue(); - } - else { - return undefined; - } -}; - -/** - * Get the text contents of the editor - * @return {String} jsonText - */ -treemode.getText = function() { - return JSON.stringify(this.get()); -}; - -/** - * Set the text contents of the editor - * @param {String} jsonText - */ -treemode.setText = function(jsonText) { - this.set(util.parse(jsonText)); -}; - -/** - * Set a field name for the root node. - * @param {String | undefined} name - */ -treemode.setName = function (name) { - this.options.name = name; - if (this.node) { - this.node.updateField(this.options.name); - } -}; - -/** - * Get the field name for the root node. - * @return {String | undefined} name - */ -treemode.getName = function () { - return this.options.name; -}; - -/** - * Set focus to the editor. Focus will be set to: - * - the first editable field or value, or else - * - to the expand button of the root node, or else - * - to the context menu button of the root node, or else - * - to the first button in the top menu - */ -treemode.focus = function () { - var input = this.content.querySelector('[contenteditable=true]'); - if (input) { - input.focus(); - } - else if (this.node.dom.expand) { - this.node.dom.expand.focus(); - } - else if (this.node.dom.menu) { - this.node.dom.menu.focus(); - } - else { - // focus to the first button in the menu - input = this.frame.querySelector('button'); - if (input) { - input.focus(); - } - } -}; - -/** - * Remove the root node from the editor - */ -treemode.clear = function () { - if (this.node) { - this.node.collapse(); - this.tbody.removeChild(this.node.getDom()); - delete this.node; - } -}; - -/** - * Set the root node for the json editor - * @param {Node} node - * @private - */ -treemode._setRoot = function (node) { - this.clear(); - - this.node = node; - - // append to the dom - this.tbody.appendChild(node.getDom()); -}; - -/** - * Search text in all nodes - * The nodes will be expanded when the text is found one of its childs, - * else it will be collapsed. Searches are case insensitive. - * @param {String} text - * @return {Object[]} results Array with nodes containing the search results - * The result objects contains fields: - * - {Node} node, - * - {String} elem the dom element name where - * the result is found ('field' or - * 'value') - */ -treemode.search = function (text) { - var results; - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - results = this.node.search(text); - this.content.appendChild(this.table); // Put the table online again - } - else { - results = []; - } - - return results; -}; - -/** - * Expand all nodes - */ -treemode.expandAll = function () { - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - this.node.expand(); - this.content.appendChild(this.table); // Put the table online again - } -}; - -/** - * Collapse all nodes - */ -treemode.collapseAll = function () { - if (this.node) { - this.content.removeChild(this.table); // Take the table offline - this.node.collapse(); - this.content.appendChild(this.table); // Put the table online again - } -}; - -/** - * The method onChange is called whenever a field or value is changed, created, - * deleted, duplicated, etc. - * @param {String} action Change action. Available values: "editField", - * "editValue", "changeType", "appendNode", - * "removeNode", "duplicateNode", "moveNode", "expand", - * "collapse". - * @param {Object} params Object containing parameters describing the change. - * The parameters in params depend on the action (for - * example for "editValue" the Node, old value, and new - * value are provided). params contains all information - * needed to undo or redo the action. - * @private - */ -treemode._onAction = function (action, params) { - // add an action to the history - if (this.history) { - this.history.add(action, params); - } - - this._onChange(); -}; - -/** - * Handle a change: - * - Validate JSON schema - * - Send a callback to the onChange listener if provided - * @private - */ -treemode._onChange = function () { - // validate JSON schema (if configured) - this._debouncedValidate(); - - // trigger the onChange callback - if (this.options.onChange) { - try { - this.options.onChange(); - } - catch (err) { - console.error('Error in onChange callback: ', err); - } - } -}; - -/** - * Validate current JSON object against the configured JSON schema - * Throws an exception when no JSON schema is configured - */ -treemode.validate = function () { - // clear all current errors - if (this.errorNodes) { - this.errorNodes.forEach(function (node) { - node.setError(null); - }); - } - - var root = this.node; - if (!root) { // TODO: this should be redundant but is needed on mode switch - return; - } - - // check for duplicate keys - var duplicateErrors = root.validate(); - - // validate the JSON - var schemaErrors = []; - if (this.validateSchema) { - var valid = this.validateSchema(root.getValue()); - if (!valid) { - // apply all new errors - schemaErrors = this.validateSchema.errors - .map(function (error) { - return util.improveSchemaError(error); - }) - .map(function findNode (error) { - return { - node: root.findNode(error.dataPath), - error: error - } - }) - .filter(function hasNode (entry) { - return entry.node != null - }); - } - } - - // display the error in the nodes with a problem - this.errorNodes = duplicateErrors - .concat(schemaErrors) - .reduce(function expandParents (all, entry) { - // expand parents, then merge such that parents come first and - // original entries last - return entry.node - .findParents() - .map(function (parent) { - return { - node: parent, - child: entry.node, - error: { - message: parent.type === 'object' - ? 'Contains invalid properties' // object - : 'Contains invalid items' // array - } - }; - }) - .concat(all, [entry]); - }, []) - // TODO: dedupe the parent nodes - .map(function setError (entry) { - entry.node.setError(entry.error, entry.child); - return entry.node; - }); -}; - -/** - * Refresh the rendered contents - */ -treemode.refresh = function () { - if (this.node) { - this.node.updateDom({recurse: true}); - } -}; - -/** - * Start autoscrolling when given mouse position is above the top of the - * editor contents, or below the bottom. - * @param {Number} mouseY Absolute mouse position in pixels - */ -treemode.startAutoScroll = function (mouseY) { - var me = this; - var content = this.content; - var top = util.getAbsoluteTop(content); - var height = content.clientHeight; - var bottom = top + height; - var margin = 24; - var interval = 50; // ms - - if ((mouseY < top + margin) && content.scrollTop > 0) { - this.autoScrollStep = ((top + margin) - mouseY) / 3; - } - else if (mouseY > bottom - margin && - height + content.scrollTop < content.scrollHeight) { - this.autoScrollStep = ((bottom - margin) - mouseY) / 3; - } - else { - this.autoScrollStep = undefined; - } - - if (this.autoScrollStep) { - if (!this.autoScrollTimer) { - this.autoScrollTimer = setInterval(function () { - if (me.autoScrollStep) { - content.scrollTop -= me.autoScrollStep; - } - else { - me.stopAutoScroll(); - } - }, interval); - } - } - else { - this.stopAutoScroll(); - } -}; - -/** - * Stop auto scrolling. Only applicable when scrolling - */ -treemode.stopAutoScroll = function () { - if (this.autoScrollTimer) { - clearTimeout(this.autoScrollTimer); - delete this.autoScrollTimer; - } - if (this.autoScrollStep) { - delete this.autoScrollStep; - } -}; - - -/** - * Set the focus to an element in the editor, set text selection, and - * set scroll position. - * @param {Object} selection An object containing fields: - * {Element | undefined} dom The dom element - * which has focus - * {Range | TextRange} range A text selection - * {Node[]} nodes Nodes in case of multi selection - * {Number} scrollTop Scroll position - */ -treemode.setSelection = function (selection) { - if (!selection) { - return; - } - - if ('scrollTop' in selection && this.content) { - // TODO: animated scroll - this.content.scrollTop = selection.scrollTop; - } - if (selection.nodes) { - // multi-select - this.select(selection.nodes); - } - if (selection.range) { - util.setSelectionOffset(selection.range); - } - if (selection.dom) { - selection.dom.focus(); - } -}; - -/** - * Get the current focus - * @return {Object} selection An object containing fields: - * {Element | undefined} dom The dom element - * which has focus - * {Range | TextRange} range A text selection - * {Node[]} nodes Nodes in case of multi selection - * {Number} scrollTop Scroll position - */ -treemode.getSelection = function () { - var range = util.getSelectionOffset(); - if (range && range.container.nodeName !== 'DIV') { // filter on (editable) divs) - range = null; - } - - return { - dom: this.focusTarget, - range: range, - nodes: this.multiselection.nodes.slice(0), - scrollTop: this.content ? this.content.scrollTop : 0 - }; -}; - -/** - * Adjust the scroll position such that given top position is shown at 1/4 - * of the window height. - * @param {Number} top - * @param {function(boolean)} [callback] Callback, executed when animation is - * finished. The callback returns true - * when animation is finished, or false - * when not. - */ -treemode.scrollTo = function (top, callback) { - var content = this.content; - if (content) { - var editor = this; - // cancel any running animation - if (editor.animateTimeout) { - clearTimeout(editor.animateTimeout); - delete editor.animateTimeout; - } - if (editor.animateCallback) { - editor.animateCallback(false); - delete editor.animateCallback; - } - - // calculate final scroll position - var height = content.clientHeight; - var bottom = content.scrollHeight - height; - var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom); - - // animate towards the new scroll position - var animate = function () { - var scrollTop = content.scrollTop; - var diff = (finalScrollTop - scrollTop); - if (Math.abs(diff) > 3) { - content.scrollTop += diff / 3; - editor.animateCallback = callback; - editor.animateTimeout = setTimeout(animate, 50); - } - else { - // finished - if (callback) { - callback(true); - } - content.scrollTop = finalScrollTop; - delete editor.animateTimeout; - delete editor.animateCallback; - } - }; - animate(); - } - else { - if (callback) { - callback(false); - } - } -}; - -/** - * Create main frame - * @private - */ -treemode._createFrame = function () { - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; - this.container.appendChild(this.frame); - - // create one global event listener to handle all events from all nodes - var editor = this; - function onEvent(event) { - // when switching to mode "code" or "text" via the menu, some events - // are still fired whilst the _onEvent methods is already removed. - if (editor._onEvent) { - editor._onEvent(event); - } - } - this.frame.onclick = function (event) { - var target = event.target;// || event.srcElement; - - onEvent(event); - - // prevent default submit action of buttons when editor is located - // inside a form - if (target.nodeName == 'BUTTON') { - event.preventDefault(); - } - }; - this.frame.oninput = onEvent; - this.frame.onchange = onEvent; - this.frame.onkeydown = onEvent; - this.frame.onkeyup = onEvent; - this.frame.oncut = onEvent; - this.frame.onpaste = onEvent; - this.frame.onmousedown = onEvent; - this.frame.onmouseup = onEvent; - this.frame.onmouseover = onEvent; - this.frame.onmouseout = onEvent; - // Note: focus and blur events do not propagate, therefore they defined - // using an eventListener with useCapture=true - // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html - util.addEventListener(this.frame, 'focus', onEvent, true); - util.addEventListener(this.frame, 'blur', onEvent, true); - this.frame.onfocusin = onEvent; // for IE - this.frame.onfocusout = onEvent; // for IE - - // create menu - this.menu = document.createElement('div'); - this.menu.className = 'jsoneditor-menu'; - this.frame.appendChild(this.menu); - - // create expand all button - var expandAll = document.createElement('button'); - expandAll.className = 'jsoneditor-expand-all'; - expandAll.title = 'Expand all fields'; - expandAll.onclick = function () { - editor.expandAll(); - }; - this.menu.appendChild(expandAll); - - // create expand all button - var collapseAll = document.createElement('button'); - collapseAll.title = 'Collapse all fields'; - collapseAll.className = 'jsoneditor-collapse-all'; - collapseAll.onclick = function () { - editor.collapseAll(); - }; - this.menu.appendChild(collapseAll); - - // create undo/redo buttons - if (this.history) { - // create undo button - var undo = document.createElement('button'); - undo.className = 'jsoneditor-undo jsoneditor-separator'; - undo.title = 'Undo last action (Ctrl+Z)'; - undo.onclick = function () { - editor._onUndo(); - }; - this.menu.appendChild(undo); - this.dom.undo = undo; - - // create redo button - var redo = document.createElement('button'); - redo.className = 'jsoneditor-redo'; - redo.title = 'Redo (Ctrl+Shift+Z)'; - redo.onclick = function () { - editor._onRedo(); - }; - this.menu.appendChild(redo); - this.dom.redo = redo; - - // register handler for onchange of history - this.history.onChange = function () { - undo.disabled = !editor.history.canUndo(); - redo.disabled = !editor.history.canRedo(); - }; - this.history.onChange(); - } - - // create mode box - if (this.options && this.options.modes && this.options.modes.length) { - var me = this; - this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) { - me.modeSwitcher.destroy(); - - // switch mode and restore focus - me.setMode(mode); - me.modeSwitcher.focus(); - }); - } - - // create search box - if (this.options.search) { - this.searchBox = new SearchBox(this, this.menu); - } -}; - -/** - * Perform an undo action - * @private - */ -treemode._onUndo = function () { - if (this.history) { - // undo last action - this.history.undo(); - - // fire change event - this._onChange(); - } -}; - -/** - * Perform a redo action - * @private - */ -treemode._onRedo = function () { - if (this.history) { - // redo last action - this.history.redo(); - - // fire change event - this._onChange(); - } -}; - -/** - * Event handler - * @param event - * @private - */ -treemode._onEvent = function (event) { - if (event.type == 'keydown') { - this._onKeyDown(event); - } - - if (event.type == 'focus') { - this.focusTarget = event.target; - } - - if (event.type == 'mousedown') { - this._startDragDistance(event); - } - if (event.type == 'mousemove' || event.type == 'mouseup' || event.type == 'click') { - this._updateDragDistance(event); - } - - var node = Node.getNodeFromTarget(event.target); - - if (node && node.selected) { - if (event.type == 'click') { - if (event.target == node.dom.menu) { - this.showContextMenu(event.target); - - // stop propagation (else we will open the context menu of a single node) - return; - } - - // deselect a multi selection - if (!event.hasMoved) { - this.deselect(); - } - } - - if (event.type == 'mousedown') { - // drag multiple nodes - Node.onDragStart(this.multiselection.nodes, event); - } - } - else { - if (event.type == 'mousedown') { - this.deselect(); - - if (node && event.target == node.dom.drag) { - // drag a singe node - Node.onDragStart(node, event); - } - else if (!node || (event.target != node.dom.field && event.target != node.dom.value && event.target != node.dom.select)) { - // select multiple nodes - this._onMultiSelectStart(event); - } - } - } - - if (node) { - node.onEvent(event); - } -}; - -treemode._startDragDistance = function (event) { - this.dragDistanceEvent = { - initialTarget: event.target, - initialPageX: event.pageX, - initialPageY: event.pageY, - dragDistance: 0, - hasMoved: false - }; -}; - -treemode._updateDragDistance = function (event) { - if (!this.dragDistanceEvent) { - this._startDragDistance(event); - } - - var diffX = event.pageX - this.dragDistanceEvent.initialPageX; - var diffY = event.pageY - this.dragDistanceEvent.initialPageY; - - this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY); - this.dragDistanceEvent.hasMoved = - this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10; - - event.dragDistance = this.dragDistanceEvent.dragDistance; - event.hasMoved = this.dragDistanceEvent.hasMoved; - - return event.dragDistance; -}; - -/** - * Start multi selection of nodes by dragging the mouse - * @param event - * @private - */ -treemode._onMultiSelectStart = function (event) { - var node = Node.getNodeFromTarget(event.target); - - if (this.options.mode !== 'tree' || this.options.onEditable !== undefined) { - // dragging not allowed in modes 'view' and 'form' - // TODO: allow multiselection of items when option onEditable is specified - return; - } - - this.multiselection = { - start: node || null, - end: null, - nodes: [] - }; - - this._startDragDistance(event); - - var editor = this; - if (!this.mousemove) { - this.mousemove = util.addEventListener(window, 'mousemove', function (event) { - editor._onMultiSelect(event); - }); - } - if (!this.mouseup) { - this.mouseup = util.addEventListener(window, 'mouseup', function (event ) { - editor._onMultiSelectEnd(event); - }); - } - -}; - -/** - * Multiselect nodes by dragging - * @param event - * @private - */ -treemode._onMultiSelect = function (event) { - event.preventDefault(); - - this._updateDragDistance(event); - if (!event.hasMoved) { - return; - } - - var node = Node.getNodeFromTarget(event.target); - - if (node) { - if (this.multiselection.start == null) { - this.multiselection.start = node; - } - this.multiselection.end = node; - } - - // deselect previous selection - this.deselect(); - - // find the selected nodes in the range from first to last - var start = this.multiselection.start; - var end = this.multiselection.end || this.multiselection.start; - if (start && end) { - // find the top level childs, all having the same parent - this.multiselection.nodes = this._findTopLevelNodes(start, end); - this.select(this.multiselection.nodes); - } -}; - -/** - * End of multiselect nodes by dragging - * @param event - * @private - */ -treemode._onMultiSelectEnd = function (event) { - // set focus to the context menu button of the first node - if (this.multiselection.nodes[0]) { - this.multiselection.nodes[0].dom.menu.focus(); - } - - this.multiselection.start = null; - this.multiselection.end = null; - - // cleanup global event listeners - if (this.mousemove) { - util.removeEventListener(window, 'mousemove', this.mousemove); - delete this.mousemove; - } - if (this.mouseup) { - util.removeEventListener(window, 'mouseup', this.mouseup); - delete this.mouseup; - } -}; - -/** - * deselect currently selected nodes - * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end` - * state is cleared too. - */ -treemode.deselect = function (clearStartAndEnd) { - this.multiselection.nodes.forEach(function (node) { - node.setSelected(false); - }); - this.multiselection.nodes = []; - - if (clearStartAndEnd) { - this.multiselection.start = null; - this.multiselection.end = null; - } -}; - -/** - * select nodes - * @param {Node[] | Node} nodes - */ -treemode.select = function (nodes) { - if (!Array.isArray(nodes)) { - return this.select([nodes]); - } - - if (nodes) { - this.deselect(); - - this.multiselection.nodes = nodes.slice(0); - - var first = nodes[0]; - nodes.forEach(function (node) { - node.setSelected(true, node === first); - }); - } -}; - -/** - * From two arbitrary selected nodes, find their shared parent node. - * From that parent node, select the two child nodes in the brances going to - * nodes `start` and `end`, and select all childs in between. - * @param {Node} start - * @param {Node} end - * @return {Array.} Returns an ordered list with child nodes - * @private - */ -treemode._findTopLevelNodes = function (start, end) { - var startPath = start.getNodePath(); - var endPath = end.getNodePath(); - var i = 0; - while (i < startPath.length && startPath[i] === endPath[i]) { - i++; - } - var root = startPath[i - 1]; - var startChild = startPath[i]; - var endChild = endPath[i]; - - if (!startChild || !endChild) { - if (root.parent) { - // startChild is a parent of endChild or vice versa - startChild = root; - endChild = root; - root = root.parent - } - else { - // we have selected the root node (which doesn't have a parent) - startChild = root.childs[0]; - endChild = root.childs[root.childs.length - 1]; - } - } - - if (root && startChild && endChild) { - var startIndex = root.childs.indexOf(startChild); - var endIndex = root.childs.indexOf(endChild); - var firstIndex = Math.min(startIndex, endIndex); - var lastIndex = Math.max(startIndex, endIndex); - - return root.childs.slice(firstIndex, lastIndex + 1); - } - else { - return []; - } -}; - -/** - * Event handler for keydown. Handles shortcut keys - * @param {Event} event - * @private - */ -treemode._onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var ctrlKey = event.ctrlKey; - var shiftKey = event.shiftKey; - var handled = false; - - if (keynum == 9) { // Tab or Shift+Tab - var me = this; - setTimeout(function () { - // select all text when moving focus to an editable div - util.selectContentEditable(me.focusTarget); - }, 0); - } - - if (this.searchBox) { - if (ctrlKey && keynum == 70) { // Ctrl+F - this.searchBox.dom.search.focus(); - this.searchBox.dom.search.select(); - handled = true; - } - else if (keynum == 114 || (ctrlKey && keynum == 71)) { // F3 or Ctrl+G - var focus = true; - if (!shiftKey) { - // select next search result (F3 or Ctrl+G) - this.searchBox.next(focus); - } - else { - // select previous search result (Shift+F3 or Ctrl+Shift+G) - this.searchBox.previous(focus); - } - - handled = true; - } - } - - if (this.history) { - if (ctrlKey && !shiftKey && keynum == 90) { // Ctrl+Z - // undo - this._onUndo(); - handled = true; - } - else if (ctrlKey && shiftKey && keynum == 90) { // Ctrl+Shift+Z - // redo - this._onRedo(); - handled = true; - } - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } -}; - -/** - * Create main table - * @private - */ -treemode._createTable = function () { - var contentOuter = document.createElement('div'); - contentOuter.className = 'jsoneditor-outer'; - this.contentOuter = contentOuter; - - this.content = document.createElement('div'); - this.content.className = 'jsoneditor-tree'; - contentOuter.appendChild(this.content); - - this.table = document.createElement('table'); - this.table.className = 'jsoneditor-tree'; - this.content.appendChild(this.table); - - // create colgroup where the first two columns don't have a fixed - // width, and the edit columns do have a fixed width - var col; - this.colgroupContent = document.createElement('colgroup'); - if (this.options.mode === 'tree') { - col = document.createElement('col'); - col.width = "24px"; - this.colgroupContent.appendChild(col); - } - col = document.createElement('col'); - col.width = "24px"; - this.colgroupContent.appendChild(col); - col = document.createElement('col'); - this.colgroupContent.appendChild(col); - this.table.appendChild(this.colgroupContent); - - this.tbody = document.createElement('tbody'); - this.table.appendChild(this.tbody); - - this.frame.appendChild(contentOuter); -}; - -/** - * Show a contextmenu for this node. - * Used for multiselection - * @param {HTMLElement} anchor Anchor element to attache the context menu to. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ -treemode.showContextMenu = function (anchor, onClose) { - var items = []; - var editor = this; - - // create duplicate button - items.push({ - text: 'Duplicate', - title: 'Duplicate selected fields (Ctrl+D)', - className: 'jsoneditor-duplicate', - click: function () { - Node.onDuplicate(editor.multiselection.nodes); - } - }); - - // create remove button - items.push({ - text: 'Remove', - title: 'Remove selected fields (Ctrl+Del)', - className: 'jsoneditor-remove', - click: function () { - Node.onRemove(editor.multiselection.nodes); - } - }); - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor, this.content); -}; - - -// define modes -module.exports = [ - { - mode: 'tree', - mixin: treemode, - data: 'json' - }, - { - mode: 'view', - mixin: treemode, - data: 'json' - }, - { - mode: 'form', - mixin: treemode, - data: 'json' - } -]; diff --git a/src_old/js/util.js b/src_old/js/util.js deleted file mode 100644 index 1c72bda..0000000 --- a/src_old/js/util.js +++ /dev/null @@ -1,772 +0,0 @@ -'use strict'; - -var jsonlint = require('./assets/jsonlint/jsonlint'); - -/** - * Parse JSON using the parser built-in in the browser. - * On exception, the jsonString is validated and a detailed error is thrown. - * @param {String} jsonString - * @return {JSON} json - */ -exports.parse = function parse(jsonString) { - try { - return JSON.parse(jsonString); - } - catch (err) { - // try to throw a more detailed error message using validate - exports.validate(jsonString); - - // rethrow the original error - throw err; - } -}; - -/** - * Sanitize a JSON-like string containing. For example changes JavaScript - * notation into JSON notation. - * This function for example changes a string like "{a: 2, 'b': {c: 'd'}" - * into '{"a": 2, "b": {"c": "d"}' - * @param {string} jsString - * @returns {string} json - */ -exports.sanitize = function (jsString) { - // escape all single and double quotes inside strings - var chars = []; - var i = 0; - - //If JSON starts with a function (characters/digits/"_-"), remove this function. - //This is useful for "stripping" JSONP objects to become JSON - //For example: /* some comment */ function_12321321 ( [{"a":"b"}] ); => [{"a":"b"}] - var match = jsString.match(/^\s*(\/\*(.|[\r\n])*?\*\/)?\s*[\da-zA-Z_$]+\s*\(([\s\S]*)\)\s*;?\s*$/); - if (match) { - jsString = match[3]; - } - - // helper functions to get the current/prev/next character - function curr () { return jsString.charAt(i); } - function next() { return jsString.charAt(i + 1); } - function prev() { return jsString.charAt(i - 1); } - - // get the last parsed non-whitespace character - function lastNonWhitespace () { - var p = chars.length - 1; - - while (p >= 0) { - var pp = chars[p]; - if (pp !== ' ' && pp !== '\n' && pp !== '\r' && pp !== '\t') { // non whitespace - return pp; - } - p--; - } - - return ''; - } - - // skip a block comment '/* ... */' - function skipBlockComment () { - i += 2; - while (i < jsString.length && (curr() !== '*' || next() !== '/')) { - i++; - } - i += 2; - } - - // skip a comment '// ...' - function skipComment () { - i += 2; - while (i < jsString.length && (curr() !== '\n')) { - i++; - } - } - - // parse single or double quoted string - function parseString(quote) { - chars.push('"'); - i++; - var c = curr(); - while (i < jsString.length && c !== quote) { - if (c === '"' && prev() !== '\\') { - // unescaped double quote, escape it - chars.push('\\'); - } - - // handle escape character - if (c === '\\') { - i++; - c = curr(); - - // remove the escape character when followed by a single quote ', not needed - if (c !== '\'') { - chars.push('\\'); - } - } - chars.push(c); - - i++; - c = curr(); - } - if (c === quote) { - chars.push('"'); - i++; - } - } - - // parse an unquoted key - function parseKey() { - var specialValues = ['null', 'true', 'false']; - var key = ''; - var c = curr(); - - var regexp = /[a-zA-Z_$\d]/; // letter, number, underscore, dollar character - while (regexp.test(c)) { - key += c; - i++; - c = curr(); - } - - if (specialValues.indexOf(key) === -1) { - chars.push('"' + key + '"'); - } - else { - chars.push(key); - } - } - - while(i < jsString.length) { - var c = curr(); - - if (c === '/' && next() === '*') { - skipBlockComment(); - } - else if (c === '/' && next() === '/') { - skipComment(); - } - else if (c === '\'' || c === '"') { - parseString(c); - } - else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) { - // an unquoted object key (like a in '{a:2}') - parseKey(); - } - else { - chars.push(c); - i++; - } - } - - return chars.join(''); -}; - -/** - * Escape unicode characters. - * For example input '\u2661' (length 1) will output '\\u2661' (length 5). - * @param {string} text - * @return {string} - */ -exports.escapeUnicodeChars = function (text) { - // see https://www.wikiwand.com/en/UTF-16 - // note: we leave surrogate pairs as two individual chars, - // as JSON doesn't interpret them as a single unicode char. - return text.replace(/[\u007F-\uFFFF]/g, function(c) { - return '\\u'+('0000' + c.charCodeAt(0).toString(16)).slice(-4); - }) -}; - -/** - * Validate a string containing a JSON object - * This method uses JSONLint to validate the String. If JSONLint is not - * available, the built-in JSON parser of the browser is used. - * @param {String} jsonString String with an (invalid) JSON object - * @throws Error - */ -exports.validate = function validate(jsonString) { - if (typeof(jsonlint) != 'undefined') { - jsonlint.parse(jsonString); - } - else { - JSON.parse(jsonString); - } -}; - -/** - * Extend object a with the properties of object b - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ -exports.extend = function extend(a, b) { - for (var prop in b) { - if (b.hasOwnProperty(prop)) { - a[prop] = b[prop]; - } - } - return a; -}; - -/** - * Remove all properties from object a - * @param {Object} a - * @return {Object} a - */ -exports.clear = function clear (a) { - for (var prop in a) { - if (a.hasOwnProperty(prop)) { - delete a[prop]; - } - } - return a; -}; - -/** - * Get the type of an object - * @param {*} object - * @return {String} type - */ -exports.type = function type (object) { - if (object === null) { - return 'null'; - } - if (object === undefined) { - return 'undefined'; - } - if ((object instanceof Number) || (typeof object === 'number')) { - return 'number'; - } - if ((object instanceof String) || (typeof object === 'string')) { - return 'string'; - } - if ((object instanceof Boolean) || (typeof object === 'boolean')) { - return 'boolean'; - } - if ((object instanceof RegExp) || (typeof object === 'regexp')) { - return 'regexp'; - } - if (exports.isArray(object)) { - return 'array'; - } - - return 'object'; -}; - -/** - * Test whether a text contains a url (matches when a string starts - * with 'http://*' or 'https://*' and has no whitespace characters) - * @param {String} text - */ -var isUrlRegex = /^https?:\/\/\S+$/; -exports.isUrl = function isUrl (text) { - return (typeof text == 'string' || text instanceof String) && - isUrlRegex.test(text); -}; - -/** - * Tes whether given object is an Array - * @param {*} obj - * @returns {boolean} returns true when obj is an array - */ -exports.isArray = function (obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -/** - * Retrieve the absolute left value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {Number} left The absolute left position of this element - * in the browser page. - */ -exports.getAbsoluteLeft = function getAbsoluteLeft(elem) { - var rect = elem.getBoundingClientRect(); - return rect.left + window.pageXOffset || document.scrollLeft || 0; -}; - -/** - * Retrieve the absolute top value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {Number} top The absolute top position of this element - * in the browser page. - */ -exports.getAbsoluteTop = function getAbsoluteTop(elem) { - var rect = elem.getBoundingClientRect(); - return rect.top + window.pageYOffset || document.scrollTop || 0; -}; - -/** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ -exports.addClassName = function addClassName(elem, className) { - var classes = elem.className.split(' '); - if (classes.indexOf(className) == -1) { - classes.push(className); // add the class to the array - elem.className = classes.join(' '); - } -}; - -/** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ -exports.removeClassName = function removeClassName(elem, className) { - var classes = elem.className.split(' '); - var index = classes.indexOf(className); - if (index != -1) { - classes.splice(index, 1); // remove the class from the array - elem.className = classes.join(' '); - } -}; - -/** - * Strip the formatting from the contents of a div - * the formatting from the div itself is not stripped, only from its childs. - * @param {Element} divElement - */ -exports.stripFormatting = function stripFormatting(divElement) { - var childs = divElement.childNodes; - for (var i = 0, iMax = childs.length; i < iMax; i++) { - var child = childs[i]; - - // remove the style - if (child.style) { - // TODO: test if child.attributes does contain style - child.removeAttribute('style'); - } - - // remove all attributes - var attributes = child.attributes; - if (attributes) { - for (var j = attributes.length - 1; j >= 0; j--) { - var attribute = attributes[j]; - if (attribute.specified === true) { - child.removeAttribute(attribute.name); - } - } - } - - // recursively strip childs - exports.stripFormatting(child); - } -}; - -/** - * Set focus to the end of an editable div - * code from Nico Burns - * http://stackoverflow.com/users/140293/nico-burns - * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity - * @param {Element} contentEditableElement A content editable div - */ -exports.setEndOfContentEditable = function setEndOfContentEditable(contentEditableElement) { - var range, selection; - if(document.createRange) { - range = document.createRange();//Create a range (a range is a like the selection but invisible) - range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range - range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start - selection = window.getSelection();//get the selection object (allows you to change selection) - selection.removeAllRanges();//remove any selections already made - selection.addRange(range);//make the range you have just created the visible selection - } -}; - -/** - * Select all text of a content editable div. - * http://stackoverflow.com/a/3806004/1262753 - * @param {Element} contentEditableElement A content editable div - */ -exports.selectContentEditable = function selectContentEditable(contentEditableElement) { - if (!contentEditableElement || contentEditableElement.nodeName != 'DIV') { - return; - } - - var sel, range; - if (window.getSelection && document.createRange) { - range = document.createRange(); - range.selectNodeContents(contentEditableElement); - sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } -}; - -/** - * Get text selection - * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore - * @return {Range | TextRange | null} range - */ -exports.getSelection = function getSelection() { - if (window.getSelection) { - var sel = window.getSelection(); - if (sel.getRangeAt && sel.rangeCount) { - return sel.getRangeAt(0); - } - } - return null; -}; - -/** - * Set text selection - * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore - * @param {Range | TextRange | null} range - */ -exports.setSelection = function setSelection(range) { - if (range) { - if (window.getSelection) { - var sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } - } -}; - -/** - * Get selected text range - * @return {Object} params object containing parameters: - * {Number} startOffset - * {Number} endOffset - * {Element} container HTML element holding the - * selected text element - * Returns null if no text selection is found - */ -exports.getSelectionOffset = function getSelectionOffset() { - var range = exports.getSelection(); - - if (range && 'startOffset' in range && 'endOffset' in range && - range.startContainer && (range.startContainer == range.endContainer)) { - return { - startOffset: range.startOffset, - endOffset: range.endOffset, - container: range.startContainer.parentNode - }; - } - - return null; -}; - -/** - * Set selected text range in given element - * @param {Object} params An object containing: - * {Element} container - * {Number} startOffset - * {Number} endOffset - */ -exports.setSelectionOffset = function setSelectionOffset(params) { - if (document.createRange && window.getSelection) { - var selection = window.getSelection(); - if(selection) { - var range = document.createRange(); - - if (!params.container.firstChild) { - params.container.appendChild(document.createTextNode('')); - } - - // TODO: do not suppose that the first child of the container is a textnode, - // but recursively find the textnodes - range.setStart(params.container.firstChild, params.startOffset); - range.setEnd(params.container.firstChild, params.endOffset); - - exports.setSelection(range); - } - } -}; - -/** - * Get the inner text of an HTML element (for example a div element) - * @param {Element} element - * @param {Object} [buffer] - * @return {String} innerText - */ -exports.getInnerText = function getInnerText(element, buffer) { - var first = (buffer == undefined); - if (first) { - buffer = { - 'text': '', - 'flush': function () { - var text = this.text; - this.text = ''; - return text; - }, - 'set': function (text) { - this.text = text; - } - }; - } - - // text node - if (element.nodeValue) { - return buffer.flush() + element.nodeValue; - } - - // divs or other HTML elements - if (element.hasChildNodes()) { - var childNodes = element.childNodes; - var innerText = ''; - - for (var i = 0, iMax = childNodes.length; i < iMax; i++) { - var child = childNodes[i]; - - if (child.nodeName == 'DIV' || child.nodeName == 'P') { - var prevChild = childNodes[i - 1]; - var prevName = prevChild ? prevChild.nodeName : undefined; - if (prevName && prevName != 'DIV' && prevName != 'P' && prevName != 'BR') { - innerText += '\n'; - buffer.flush(); - } - innerText += exports.getInnerText(child, buffer); - buffer.set('\n'); - } - else if (child.nodeName == 'BR') { - innerText += buffer.flush(); - buffer.set('\n'); - } - else { - innerText += exports.getInnerText(child, buffer); - } - } - - return innerText; - } - else { - if (element.nodeName == 'P' && exports.getInternetExplorerVersion() != -1) { - // On Internet Explorer, a

with hasChildNodes()==false is - // rendered with a new line. Note that a

with - // hasChildNodes()==true is rendered without a new line - // Other browsers always ensure there is a
inside the

, - // and if not, the

does not render a new line - return buffer.flush(); - } - } - - // br or unknown - return ''; -}; - -/** - * Returns the version of Internet Explorer or a -1 - * (indicating the use of another browser). - * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx - * @return {Number} Internet Explorer version, or -1 in case of an other browser - */ -exports.getInternetExplorerVersion = function getInternetExplorerVersion() { - if (_ieVersion == -1) { - var rv = -1; // Return value assumes failure. - if (navigator.appName == 'Microsoft Internet Explorer') - { - var ua = navigator.userAgent; - var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); - if (re.exec(ua) != null) { - rv = parseFloat( RegExp.$1 ); - } - } - - _ieVersion = rv; - } - - return _ieVersion; -}; - -/** - * Test whether the current browser is Firefox - * @returns {boolean} isFirefox - */ -exports.isFirefox = function isFirefox () { - return (navigator.userAgent.indexOf("Firefox") != -1); -}; - -/** - * cached internet explorer version - * @type {Number} - * @private - */ -var _ieVersion = -1; - -/** - * Add and event listener. Works for all browsers - * @param {Element} element An html element - * @param {string} action The action, for example "click", - * without the prefix "on" - * @param {function} listener The callback function to be executed - * @param {boolean} [useCapture] false by default - * @return {function} the created event listener - */ -exports.addEventListener = function addEventListener(element, action, listener, useCapture) { - if (element.addEventListener) { - if (useCapture === undefined) - useCapture = false; - - if (action === "mousewheel" && exports.isFirefox()) { - action = "DOMMouseScroll"; // For Firefox - } - - element.addEventListener(action, listener, useCapture); - return listener; - } else if (element.attachEvent) { - // Old IE browsers - var f = function () { - return listener.call(element, window.event); - }; - element.attachEvent("on" + action, f); - return f; - } -}; - -/** - * Remove an event listener from an element - * @param {Element} element An html dom element - * @param {string} action The name of the event, for example "mousedown" - * @param {function} listener The listener function - * @param {boolean} [useCapture] false by default - */ -exports.removeEventListener = function removeEventListener(element, action, listener, useCapture) { - if (element.removeEventListener) { - if (useCapture === undefined) - useCapture = false; - - if (action === "mousewheel" && exports.isFirefox()) { - action = "DOMMouseScroll"; // For Firefox - } - - element.removeEventListener(action, listener, useCapture); - } else if (element.detachEvent) { - // Old IE browsers - element.detachEvent("on" + action, listener); - } -}; - -/** - * Parse a JSON path like '.items[3].name' into an array - * @param {string} jsonPath - * @return {Array} - */ -exports.parsePath = function parsePath(jsonPath) { - var prop, remainder; - - if (jsonPath.length === 0) { - return []; - } - - // find a match like '.prop' - var match = jsonPath.match(/^\.(\w+)/); - if (match) { - prop = match[1]; - remainder = jsonPath.substr(prop.length + 1); - } - else if (jsonPath[0] === '[') { - // find a match like - var end = jsonPath.indexOf(']'); - if (end === -1) { - throw new SyntaxError('Character ] expected in path'); - } - if (end === 1) { - throw new SyntaxError('Index expected after ['); - } - - var value = jsonPath.substring(1, end); - prop = value === '*' ? value : JSON.parse(value); // parse string and number - remainder = jsonPath.substr(end + 1); - } - else { - throw new SyntaxError('Failed to parse path'); - } - - return [prop].concat(parsePath(remainder)) -}; - -/** - * Improve the error message of a JSON schema error - * @param {Object} error - * @return {Object} The error - */ -exports.improveSchemaError = function (error) { - if (error.keyword === 'enum' && Array.isArray(error.schema)) { - var enums = error.schema; - if (enums) { - enums = enums.map(function (value) { - return JSON.stringify(value); - }); - - if (enums.length > 5) { - var more = ['(' + (enums.length - 5) + ' more...)']; - enums = enums.slice(0, 5); - enums.push(more); - } - error.message = 'should be equal to one of: ' + enums.join(', '); - } - } - - if (error.keyword === 'additionalProperties') { - error.message = 'should NOT have additional property: ' + error.params.additionalProperty; - } - - return error; -}; - -/** - * Test whether the child rect fits completely inside the parent rect. - * @param {ClientRect} parent - * @param {ClientRect} child - * @param {number} margin - */ -exports.insideRect = function (parent, child, margin) { - var _margin = margin !== undefined ? margin : 0; - return child.left - _margin >= parent.left - && child.right + _margin <= parent.right - && child.top - _margin >= parent.top - && child.bottom + _margin <= parent.bottom; -}; - -/** - * Returns a function, that, as long as it continues to be invoked, will not - * be triggered. The function will be called after it stops being called for - * N milliseconds. - * - * Source: https://davidwalsh.name/javascript-debounce-function - * - * @param {function} func - * @param {number} wait Number in milliseconds - * @param {boolean} [immediate=false] If `immediate` is passed, trigger the - * function on the leading edge, instead - * of the trailing. - * @return {function} Return the debounced function - */ -exports.debounce = function debounce(func, wait, immediate) { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; -}; - -/** - * Determines the difference between two texts. - * Can only detect one removed or inserted block of characters. - * @param {string} oldText - * @param {string} newText - * @return {{start: number, end: number}} Returns the start and end - * of the changed part in newText. - */ -exports.textDiff = function textDiff(oldText, newText) { - var len = newText.length; - var start = 0; - var oldEnd = oldText.length; - var newEnd = newText.length; - - while (newText.charAt(start) === oldText.charAt(start) - && start < len) { - start++; - } - - while (newText.charAt(newEnd - 1) === oldText.charAt(oldEnd - 1) - && newEnd > start && oldEnd > 0) { - newEnd--; - oldEnd--; - } - - return {start: start, end: newEnd}; -}; diff --git a/test/actions.test.js b/test/actions.test.js deleted file mode 100644 index fab0131..0000000 --- a/test/actions.test.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict' - -import test from 'ava' -import { - sort -} from '../src/actions' -import { assertDeepEqualEson } from './utils/assertDeepEqualEson' -import {esonToJson, expandOne, jsonToEson, META} from '../src/eson' -import {patchEson} from '../src/patchEson' - -// TODO: test changeValue -// TODO: test changeProperty -// TODO: test changeType (or cleanup the function) -// TODO: test duplicate -// TODO: test insertBefore -// TODO: test replace -// TODO: test append -// TODO: test remove -// TODO: test removeAll - -test('sort root Array', t => { - const eson = jsonToEson([1,3,2]) - - assertDeepEqualEson(t, patchEson(eson, sort(eson, [])).data, jsonToEson([1,2,3])) - assertDeepEqualEson(t, patchEson(eson, sort(eson, [], 'asc')).data, jsonToEson([1,2,3])) - assertDeepEqualEson(t, patchEson(eson, sort(eson, [], 'desc')).data, jsonToEson([3,2,1])) -}) - -test('sort nested Array', t => { - const eson = jsonToEson({arr: [4,1,8,5,3,9,2,7,6]}) - const actual = patchEson(eson, sort(eson, ['arr'])).data - const expected = jsonToEson({arr: [1,2,3,4,5,6,7,8,9]}) - assertDeepEqualEson(t, actual, expected) -}) - -test('sort nested Array reverse order', t => { - // no order provided -> order ascending, but if nothing changes, order descending - const eson = jsonToEson({arr: [1,2,3,4,5,6,7,8,9]}) - const actual = patchEson(eson, sort(eson, ['arr'])).data - const expected = jsonToEson({arr: [9,8,7,6,5,4,3,2,1]}) - assertDeepEqualEson(t, actual, expected) - - // id's and META should be the same - t.deepEqual(actual.arr[META].id, eson.arr[META].id) - t.deepEqual(actual.arr[7][META].id, eson.arr[1][META].id) -}) - - -test('sort root Object', t => { - const eson = jsonToEson({c: 2, b: 3, a:4}) - - t.deepEqual(patchEson(eson, sort(eson, [])).data[META].props, ['a', 'b', 'c']) - t.deepEqual(patchEson(eson, sort(eson, [], 'asc')).data[META].props, ['a', 'b', 'c']) - t.deepEqual(patchEson(eson, sort(eson, [], 'desc')).data[META].props, ['c', 'b', 'a']) -}) - -test('sort nested Object', t => { - const eson = jsonToEson({obj: {c: 2, b: 3, a:4}}) - eson.obj[META].expanded = true - eson.obj.c[META].expanded = true - - const actual = patchEson(eson, sort(eson, ['obj'])).data - - // should keep META data - t.deepEqual(actual.obj[META].props, ['a', 'b', 'c']) - t.deepEqual(actual.obj[META].expanded, true) - t.deepEqual(actual.obj.c[META].expanded, true) - t.deepEqual(actual.obj[META].id, eson.obj[META].id) - t.deepEqual(actual.obj.a[META].id, eson.obj.a[META].id) - t.deepEqual(actual.obj.b[META].id, eson.obj.b[META].id) - t.deepEqual(actual.obj.c[META].id, eson.obj.c[META].id) - - // asc, desc - t.deepEqual(patchEson(eson, sort(eson, ['obj'])).data.obj[META].props, ['a', 'b', 'c']) - t.deepEqual(patchEson(eson, sort(eson, ['obj'], 'asc')).data.obj[META].props, ['a', 'b', 'c']) - t.deepEqual(patchEson(eson, sort(eson, ['obj'], 'desc')).data.obj[META].props, ['c', 'b', 'a']) -}) - -test('sort nested Object (larger)', t => { - const eson = jsonToEson({obj: {h:1, c:1, e:1, d:1, g:1, b:1, a:1, f:1}}) - const actual = patchEson(eson, sort(eson, ['obj'])).data - - t.deepEqual(actual.obj[META].props, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) -}) diff --git a/test/couchdbeditor.html b/test/couchdbeditor.html deleted file mode 100644 index ddabae0..0000000 --- a/test/couchdbeditor.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - CouchDB Document Editor - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CouchDB Document Editor

- - - - - - - - - - - -
Document Url:
-
- - - diff --git a/test/largefile.json b/test/largefile.json deleted file mode 100644 index 8f3a180..0000000 --- a/test/largefile.json +++ /dev/null @@ -1,12605 +0,0 @@ -{ - "version": "1.0", - "encoding": "UTF-8", - "feed": { - "xmlns$app": "http://www.w3.org/2007/app", - "xmlns": "http://www.w3.org/2005/Atom", - "xmlns$media": "http://search.yahoo.com/mrss/", - "xmlns$openSearch": "http://a9.com/-/spec/opensearch/1.1/", - "xmlns$gd": "http://schemas.google.com/g/2005", - "xmlns$gml": "http://www.opengis.net/gml", - "xmlns$yt": "http://gdata.youtube.com/schemas/2007", - "xmlns$georss": "http://www.georss.org/georss", - "gd$etag": "W/\"A0MHRHo6fSp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:videos" - }, - "updated": { - "$t": "2012-04-16T06:57:15.415Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - } - ], - "title": { - "$t": "YouTube Videos matching query: football -soccer" - }, - "logo": { - "$t": "http://www.youtube.com/img/pic_youtubelogo_123x63.gif" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com" - }, - { - "rel": "http://schemas.google.com/g/2005#feed", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos?v=2" - }, - { - "rel": "http://schemas.google.com/g/2005#batch", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/batch?v=2" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos?alt=json&q=football+-soccer&start-index=1&max-results=50&orderby=published&v=2" - }, - { - "rel": "service", - "type": "application/atomsvc+xml", - "href": "https://gdata.youtube.com/feeds/api/videos?alt=atom-service&v=2" - }, - { - "rel": "next", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos?alt=json&q=football+-soccer&start-index=51&max-results=50&orderby=published&v=2" - } - ], - "author": [ - { - "name": { - "$t": "YouTube" - }, - "uri": { - "$t": "http://www.youtube.com/" - } - } - ], - "generator": { - "$t": "YouTube data API", - "version": "2.1", - "uri": "http://gdata.youtube.com" - }, - "openSearch$totalResults": { - "$t": 17775 - }, - "openSearch$startIndex": { - "$t": 1 - }, - "openSearch$itemsPerPage": { - "$t": 50 - }, - "entry": [ - { - "gd$etag": "W/\"DUYGQH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:ZUHnx_yGfYg" - }, - "published": { - "$t": "2012-04-16T06:18:41.000Z" - }, - "updated": { - "$t": "2012-04-16T06:18:41.000Z" - }, - "app$control": { - "yt$state": { - "$t": "Syndication of this video was restricted by its owner.", - "name": "restricted", - "reasonCode": "limitedSyndication" - } - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "friendshipunited" - } - ], - "title": { - "$t": "FRIENDSHIP UNITED (Prima Lingkar Asri)" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/ZUHnx_yGfYg?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=ZUHnx_yGfYg&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/related?v=2" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg?v=2" - } - ], - "author": [ - { - "name": { - "$t": "ClarissaScolastica" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/ClarissaScolastica" - }, - "yt$userId": { - "$t": "PxqMFmq9hESdd7fL8uyY6g" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "denied" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/ZUHnx_yGfYg?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 139, - "yt$format": 5 - } - ], - "media$credit": [ - { - "$t": "clarissascolastica", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "ClarissaScolastica" - } - ], - "media$description": { - "$t": "We are Friendship United,We are team football in Prima Lingkar Asri (Indonesia),Thanks for watching my video. \"We're not born winners,we're not born losers,we're born choosers!\" Go follow on twitter crew #FriendshipUnited ( @rezaocta16 , @ossaaay , @clariscolastica , @raga_yohanes , @dinabiil , @Evan_julio , @mkafi8 , @dirgabijaksono , @gitchaw , @albrin , @santonyvardy , @andryrivaldy )", - "type": "plain" - }, - "media$keywords": { - "$t": "friendshipunited" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=ZUHnx_yGfYg&feature=youtube_gdata_player" - }, - "media$restriction": [ - { - "$t": "UM US VI", - "type": "country", - "relationship": "deny" - } - ], - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:09.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:34.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:09.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:44.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "FRIENDSHIP UNITED (Prima Lingkar Asri)", - "type": "plain" - }, - "yt$duration": { - "seconds": "139" - }, - "yt$uploaded": { - "$t": "2012-04-16T06:18:41.000Z" - }, - "yt$videoid": { - "$t": "ZUHnx_yGfYg" - } - }, - "yt$recorded": { - "$t": "2012-04-16" - } - }, - { - "gd$etag": "W/\"DUcGQX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:S0KcBLqEoas" - }, - "published": { - "$t": "2012-04-16T06:17:00.000Z" - }, - "updated": { - "$t": "2012-04-16T06:17:00.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Animals", - "label": "Pets & Animals" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "perro" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "footbal" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "playas de tijuana" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "pelota" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "perrita" - } - ], - "title": { - "$t": "Gina jugando football" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/S0KcBLqEoas?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=S0KcBLqEoas&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=S0KcBLqEoas" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas?v=2" - } - ], - "author": [ - { - "name": { - "$t": "elizabethortegaco" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/elizabethortegaco" - }, - "yt$userId": { - "$t": "cjAHg7F2kL_ECS8lgJ0nRw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/comments?v=2", - "countHint": 0 - } - }, - "yt$location": { - "$t": "playas tijuana" - }, - "media$group": { - "media$category": [ - { - "$t": "Animals", - "label": "Pets & Animals", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/S0KcBLqEoas?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 59, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache8.c.youtube.com/CiILENy73wIaGQmroYS6BJxCSxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 59, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQmroYS6BJxCSxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 59, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "elizabethortegaco", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "elizabethortegaco" - } - ], - "media$description": { - "$t": "perrita Gina jugando football con unos ninios frente al cafe aquamarino y el horno 320 en el malecon de playas de tijuana, ella queria que le patearan la pelota!!!", - "type": "plain" - }, - "media$keywords": { - "$t": "perro, footbal, playas de tijuana, pelota, perrita" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=S0KcBLqEoas&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:29.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:14.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:29.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/S0KcBLqEoas/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:44.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Gina jugando football", - "type": "plain" - }, - "yt$duration": { - "seconds": "59" - }, - "yt$uploaded": { - "$t": "2012-04-16T06:17:00.000Z" - }, - "yt$videoid": { - "$t": "S0KcBLqEoas" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "1" - } - }, - { - "gd$etag": "W/\"DE4DQH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:ScT3ehz70yU" - }, - "published": { - "$t": "2012-04-16T06:16:11.000Z" - }, - "updated": { - "$t": "2012-04-16T06:16:11.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Entertainment", - "label": "Entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Joe" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jonas" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Demi" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Lovato" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Dallas" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Selena" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "love" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "jealous" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "sister" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "hate" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "player" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "loser" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "movie" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "series" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "short" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "story" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "one" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "shot" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rated" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "jemi" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "onetruemedia" - } - ], - "title": { - "$t": "Under The Stars (Movie-One) Episode- 12 (JEMI)" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/ScT3ehz70yU?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=ScT3ehz70yU&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=ScT3ehz70yU" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU?v=2" - } - ], - "author": [ - { - "name": { - "$t": "TheBlurify" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/TheBlurify" - }, - "yt$userId": { - "$t": "m80cE4ZVd6-7C8TVoTpnWw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Entertainment", - "label": "Entertainment", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/ScT3ehz70yU?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 17, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQkl0_scevfESRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 17, - "yt$format": 1 - }, - { - "url": "rtsp://v3.cache8.c.youtube.com/CiILENy73wIaGQkl0_scevfESRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 17, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "theblurify", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "TheBlurify" - } - ], - "media$description": { - "$t": "Story Here! =========== PLEASE CHECK OUT THE VIDEO I POSTED ABOUT MY NEW STORY IF YOU HAVEN'T YET!!! =========== *Knock knock!* I heard a voice as I jumped back in surprise. *Wow, did I scare you?*Sam asked with a light chuckle. I shook my head. He wore a pair of navy blue shorts and his torso remained bare. He had a good tanned body from what I quickly glanced at, not wanting to make it obvious. He was skinny but lean and toned. Not a bad view, if you asked me.*We're going down for a swim,* He informed. His hands rested on his waist and a towel over his shoulder. *Do you want to go?* His smile was lose and with caution. I guess he knew I wasn't about to fall for his charming toothy smile and decided to play it safe. *No, thanks.* I replied. I knew the rest wouldn't make it very welcoming for me to join. Sam nodded and began walking back. *Ok.* He smiled. *I'll be there if you change your mind.* I managed to show a smile of gratitude. The least I could do was give him credit for being nice and putting an effort to make me feel good about being here and not like a burden. *Thank you.* The rest left soon after which pretty much left me alone. There was a lake a short walks away, from what I remembered, so I'm sure they were all there. It was killing me not to just swallow my pride and go for a swim. Having the days heat wash away and feel the cool water against my skin, but at the same time, I was sure as hell not about to strip down to my bikini and have Lauren or Maggie ...", - "type": "plain" - }, - "media$keywords": { - "$t": "Joe, Jonas, Demi, Lovato, Dallas, Selena, love, jealous, sister, hate, player, loser, movie, series, short, story, one, shot, Rated, jemi, onetruemedia" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=ScT3ehz70yU&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:08.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:04.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:08.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/ScT3ehz70yU/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:12.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Under The Stars (Movie-One) Episode- 12 (JEMI)", - "type": "plain" - }, - "yt$duration": { - "seconds": "17" - }, - "yt$uploaded": { - "$t": "2012-04-16T06:16:11.000Z" - }, - "yt$videoid": { - "$t": "ScT3ehz70yU" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "2" - } - }, - { - "gd$etag": "W/\"DEADSH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:CRw7iiAfHPU" - }, - "published": { - "$t": "2012-04-16T06:12:59.000Z" - }, - "updated": { - "$t": "2012-04-16T06:12:59.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "zaccagni" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "gubbio" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "zurla_entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "inverness" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "scotland" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "scozia" - } - ], - "title": { - "$t": "Football match in Inverness, Scotland (rigori scozzesi)" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/CRw7iiAfHPU?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=CRw7iiAfHPU&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=CRw7iiAfHPU" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU?v=2" - } - ], - "author": [ - { - "name": { - "$t": "zaccaimano" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/zaccaimano" - }, - "yt$userId": { - "$t": "kkb0S3rhe-LttdSqgG6LMA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/comments?v=2", - "countHint": 0 - } - }, - "georss$where": { - "gml$Point": { - "gml$pos": { - "$t": "57.4777717590332 -4.224720001220703" - } - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/CRw7iiAfHPU?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 107, - "yt$format": 5 - }, - { - "url": "rtsp://v3.cache2.c.youtube.com/CiILENy73wIaGQn1HB8gijscCRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 107, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQn1HB8gijscCRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 107, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "zaccaimano", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "zaccaimano" - } - ], - "media$description": { - "$t": "The final penalties", - "type": "plain" - }, - "media$keywords": { - "$t": "zaccagni, gubbio, zurla_entertainment, inverness, scotland, scozia" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=CRw7iiAfHPU&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:53.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:26.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:53.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:20.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Football match in Inverness, Scotland (rigori scozzesi)", - "type": "plain" - }, - "yt$duration": { - "seconds": "107" - }, - "yt$uploaded": { - "$t": "2012-04-16T06:12:59.000Z" - }, - "yt$videoid": { - "$t": "CRw7iiAfHPU" - } - }, - "yt$recorded": { - "$t": "2012-04-06" - } - }, - { - "gd$etag": "W/\"DEEFRH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:5EjeJpLY7S0" - }, - "published": { - "$t": "2012-04-16T06:10:15.000Z" - }, - "updated": { - "$t": "2012-04-16T06:10:15.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "UNO" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "omavs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Nebraska-Omaha" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "UNO Mavericks sports" - } - ], - "title": { - "$t": "PlayersSuingUNO.wmv" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/5EjeJpLY7S0?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=5EjeJpLY7S0&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=5EjeJpLY7S0" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0?v=2" - } - ], - "author": [ - { - "name": { - "$t": "UNOMavsBlog" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/UNOMavsBlog" - }, - "yt$userId": { - "$t": "64HM5pIt74M5HIavzb1L3w" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/5EjeJpLY7S0?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 321, - "yt$format": 5 - }, - { - "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQkt7diSJt5I5BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 321, - "yt$format": 1 - }, - { - "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQkt7diSJt5I5BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 321, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "unomavsblog", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "UNOMavsBlog" - } - ], - "media$description": { - "$t": "Campus reaction to the news that former football players and recruits are suing UNO for information to determine if they were mislead about the football program.", - "type": "plain" - }, - "media$keywords": { - "$t": "UNO, omavs, Nebraska-Omaha, UNO Mavericks sports" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=5EjeJpLY7S0&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:40.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:20.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:40.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/3.jpg", - "height": 90, - "width": 120, - "time": "00:04:00.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "PlayersSuingUNO.wmv", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "321" - }, - "yt$uploaded": { - "$t": "2012-04-16T06:10:15.000Z" - }, - "yt$videoid": { - "$t": "5EjeJpLY7S0" - } - } - }, - { - "gd$etag": "W/\"Dk8AQH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:0A15f4B1T9U" - }, - "published": { - "$t": "2012-04-16T05:40:41.000Z" - }, - "updated": { - "$t": "2012-04-16T05:40:41.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Kerala" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "messi" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "play" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "(അവന്റെഒരുതോഴി)" - } - ], - "title": { - "$t": "Kerala messi football play (അവന്റെഒരുതോഴി)" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/0A15f4B1T9U?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=0A15f4B1T9U&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=0A15f4B1T9U" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U?v=2" - } - ], - "author": [ - { - "name": { - "$t": "kottayamvideo" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/kottayamvideo" - }, - "yt$userId": { - "$t": "VYK-aGk1mi9IZDwEMmwGHg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/0A15f4B1T9U?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 27, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQnVT3WAf3kN0BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 27, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQnVT3WAf3kN0BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 27, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "kottayamvideo", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "kottayamvideo" - } - ], - "media$description": { - "$t": "American football is a sport played between two teams of eleven with the objective of scoring points by advancing the ball into the opposing team's end zone. Known in the United States simply as football, it may also be referred to informally as gridiron football,[1][2] and even more rare, the \"pigskin\".[3] The ball can be advanced by running with it or throwing it to a teammate. Points can be scored by carrying the ball over the opponent's goal line, catching a pass thrown over that goal line, kicking the ball through the opponent's goal posts or tackling an opposing ball carrier in his own end zone. In the United States, the major forms are high school football, college football and professional football. Each of these are played under slightly different rules.[4] High school football is governed by the National Federation of State High School Associations and college football by the National Collegiate Athletic Association and National Association of Intercollegiate Athletics. The major league for professional football is the National Football League.", - "type": "plain" - }, - "media$keywords": { - "$t": "Kerala, messi, football, play, (അവന്റെഒരുതോഴി)" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=0A15f4B1T9U&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:13.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:06.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:13.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/0A15f4B1T9U/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:20.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Kerala messi football play (അവന്റെഒരുതോഴി)", - "type": "plain" - }, - "yt$duration": { - "seconds": "27" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:40:41.000Z" - }, - "yt$videoid": { - "$t": "0A15f4B1T9U" - } - } - }, - { - "gd$etag": "W/\"DkAASX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:7hg2BvLQvuw" - }, - "published": { - "$t": "2012-04-16T05:39:08.000Z" - }, - "updated": { - "$t": "2012-04-16T05:39:08.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "mobile" - } - ], - "title": { - "$t": "#39 Jorge Batres SBU" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/7hg2BvLQvuw?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=7hg2BvLQvuw&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=7hg2BvLQvuw" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw?v=2" - } - ], - "author": [ - { - "name": { - "$t": "SBUFBVideosDept" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/SBUFBVideosDept" - }, - "yt$userId": { - "$t": "isxkO3iSNLZUpjYqPGOvPQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "allowed" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/7hg2BvLQvuw?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 149, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQnsvtDyBjYY7hMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 149, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnsvtDyBjYY7hMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 149, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "sbufbvideosdept", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "SBUFBVideosDept" - } - ], - "media$description": { - "$t": "Jorge Batres, SBU's kicker/punter gives a few words about the upcoming 2012 football season.", - "type": "plain" - }, - "media$keywords": { - "$t": "mobile" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=7hg2BvLQvuw&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:14.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:37.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:14.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:51.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "#39 Jorge Batres SBU", - "type": "plain" - }, - "yt$duration": { - "seconds": "149" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:39:08.000Z" - }, - "yt$videoid": { - "$t": "7hg2BvLQvuw" - } - } - }, - { - "gd$etag": "W/\"DkAFR347eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:O_IJnyUbSDY" - }, - "published": { - "$t": "2012-04-16T05:38:36.000Z" - }, - "updated": { - "$t": "2012-04-16T05:38:36.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Homer" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "LA" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Relay for Life" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Glory Gals" - } - ], - "title": { - "$t": "Relay for Life - Homer, LA 2012" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/O_IJnyUbSDY?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=O_IJnyUbSDY&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=O_IJnyUbSDY" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY?v=2" - } - ], - "author": [ - { - "name": { - "$t": "HomerMessenger" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/HomerMessenger" - }, - "yt$userId": { - "$t": "b37co3tL2mrGD96aUNl80A" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/O_IJnyUbSDY?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 252, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQk2SBslnwnyOxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 252, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache8.c.youtube.com/CiILENy73wIaGQk2SBslnwnyOxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 252, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "homermessenger", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "HomerMessenger" - } - ], - "media$description": { - "$t": "Footage from the Luminaries Ceremony - Relay for Life 2012 - Homer, LA at Homer High School Football Stadium", - "type": "plain" - }, - "media$keywords": { - "$t": "Homer, LA, Relay for Life, Glory Gals" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=O_IJnyUbSDY&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:06", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:03", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:06", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/3.jpg", - "height": 90, - "width": 120, - "time": "00:03:09", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Relay for Life - Homer, LA 2012", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "252" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:38:36.000Z" - }, - "yt$videoid": { - "$t": "O_IJnyUbSDY" - } - } - }, - { - "gd$etag": "W/\"DkMERn47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:t-afuUNb0Uo" - }, - "published": { - "$t": "2012-04-16T05:33:27.000Z" - }, - "updated": { - "$t": "2012-04-16T05:33:27.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "highlights!" - } - ], - "title": { - "$t": "highlights!.wmv" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/t-afuUNb0Uo?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=t-afuUNb0Uo&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=t-afuUNb0Uo" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo?v=2" - } - ], - "author": [ - { - "name": { - "$t": "edgarraguilar8" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/edgarraguilar8" - }, - "yt$userId": { - "$t": "uJk4jnk3B900MyfYn6gz5g" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/t-afuUNb0Uo?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 571, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQlK0VtDuZ_mtxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 571, - "yt$format": 1 - }, - { - "url": "rtsp://v1.cache4.c.youtube.com/CiILENy73wIaGQlK0VtDuZ_mtxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 571, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "edgarraguilar8", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "edgarraguilar8" - } - ], - "media$description": { - "$t": "some of what i thought were some of my best plays in high school football!! mostly clips from my junior year because unfortunately my sophmore and senior year i got hurt and my seasons ended early. .", - "type": "plain" - }, - "media$keywords": { - "$t": "highlights!" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=t-afuUNb0Uo&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/default.jpg", - "height": 90, - "width": 120, - "time": "00:04:45.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/1.jpg", - "height": 90, - "width": 120, - "time": "00:02:22.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/2.jpg", - "height": 90, - "width": 120, - "time": "00:04:45.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/3.jpg", - "height": 90, - "width": 120, - "time": "00:07:08.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "highlights!.wmv", - "type": "plain" - }, - "yt$duration": { - "seconds": "571" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:33:27.000Z" - }, - "yt$videoid": { - "$t": "t-afuUNb0Uo" - } - } - }, - { - "gd$etag": "W/\"CU8CRX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:weMSc7VyDD4" - }, - "published": { - "$t": "2012-04-16T05:24:24.000Z" - }, - "updated": { - "$t": "2012-04-16T05:24:24.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Games", - "label": "Gaming" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Fer" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "dayz" - } - ], - "title": { - "$t": "Runescape-Dragon Claws Giveaway" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/weMSc7VyDD4?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=weMSc7VyDD4&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=weMSc7VyDD4" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4?v=2" - } - ], - "author": [ - { - "name": { - "$t": "TyroneAloneWithMeth" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/TyroneAloneWithMeth" - }, - "yt$userId": { - "$t": "nMLRKdVQ7P-p_cEipgO1fA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Games", - "label": "Gaming", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/weMSc7VyDD4?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 38, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQk-DHK1cxLjwRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 38, - "yt$format": 1 - }, - { - "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQk-DHK1cxLjwRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 38, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "tyronealonewithmeth", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "TyroneAloneWithMeth" - } - ], - "media$description": { - "$t": "Message for more info EXTRA TAGS: tehnoobshow thepwnageninja herzantix tehnoobshoow Penny the Penguin funny runescape rs free zezima animal skychi account twixalex crush hilarious dark arm3 sladeakakevin crushman90 runescape boss kalphite dragon king black chaos elemental queen parody Lord of the rings sisterhood traveling pants moby dick war of worlds lion boy series starr parody hilarious rs retard runescape. twixalex crushman michael weird upside down cheese popper kids kid wheelchair dude green blue yellow are all colors of the rainbow skittles rule skittle commercial delicious cookie sprinkles dramatic prarie dog stick figures on crack 1 2 3 4 5 are all numbers of the rainbow wtf did i just say number of the rainbow thats kind of stupid in a funny way with balony pk vid video f2p p2p bank free account extra tags: KIDS RANQE PURPLE 0WNZ ZEZIMA N0VALYFE PHAT LURE OWNAGE RUNESCAPE WILDY WILDERNESS ELVEMAGE ELVEMAGE RUNESCAPE PKING RUN3 4RR0WPK OWNAGE MAIKEL PRO I MAHATMA I EVO BLOODHOUN34 KIDS RANQE KRAZYFAKEN RUNESCAPE PKER RUNESCAPE PKING INTIATE PURE 99 STR MAGE RANGE OBBY MAUL WICKED MAUL FIRE CAPE P00NAGE I KASOY I ELF MAGE PKA OBBY MAUL MAULER EDGEVILLE POONAGEkids ranqe elvemage purple 0wnz bloodhoun34 runescape pking wild pker ownage zezima phat lure KIDS RANQE PURPLE 0WNZ ZEZIMA N0VALYFE PHAT LURE OWNAGE RUNESCAPE WILDY WILDERNESS ELVEMAGE ELVEMAGE RUNESCAPE PKING RUN3 4RR0WPK OWNAGE MAIKEL PRO I MAHATMA I EVO BLOODHOUN34 KIDS RANQE KRAZYFAKEN RUNESCAPE PKER ...", - "type": "plain" - }, - "media$keywords": { - "$t": "Fer, dayz" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=weMSc7VyDD4&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:19", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:09.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:19", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/weMSc7VyDD4/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:28.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Runescape-Dragon Claws Giveaway", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "38" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:24:24.000Z" - }, - "yt$videoid": { - "$t": "weMSc7VyDD4" - } - } - }, - { - "gd$etag": "W/\"CUAFRX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:3lMygQpMEEs" - }, - "published": { - "$t": "2012-04-16T05:21:54.000Z" - }, - "updated": { - "$t": "2012-04-16T05:21:54.000Z" - }, - "app$control": { - "yt$state": { - "$t": "Syndication of this video was restricted by its owner.", - "name": "restricted", - "reasonCode": "limitedSyndication" - } - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - } - ], - "title": { - "$t": "Football 14.02.2012" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/3lMygQpMEEs?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=3lMygQpMEEs&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/related?v=2" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Jarom Nowak" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/rZyYP-Lh0-Kkl5aFG85ktw" - }, - "yt$userId": { - "$t": "rZyYP-Lh0-Kkl5aFG85ktw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "denied" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/3lMygQpMEEs?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 409, - "yt$format": 5 - } - ], - "media$credit": [ - { - "$t": "rZyYP-Lh0-Kkl5aFG85ktw", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Jarom Nowak" - } - ], - "media$description": { - "$t": "Deathmatch 14.04.2012", - "type": "plain" - }, - "media$keywords": { - "$t": "Football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=3lMygQpMEEs&feature=youtube_gdata_player" - }, - "media$restriction": [ - { - "$t": "DE", - "type": "country", - "relationship": "deny" - } - ], - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/default.jpg", - "height": 90, - "width": 120, - "time": "00:03:24.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:42.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/2.jpg", - "height": 90, - "width": 120, - "time": "00:03:24.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/3lMygQpMEEs/3.jpg", - "height": 90, - "width": 120, - "time": "00:05:06.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Football 14.02.2012", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "409" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:21:54.000Z" - }, - "yt$videoid": { - "$t": "3lMygQpMEEs" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "7" - } - }, - { - "gd$etag": "W/\"CE4BSX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:rRW9R8Zclbk" - }, - "published": { - "$t": "2012-04-16T05:09:18.000Z" - }, - "updated": { - "$t": "2012-04-16T05:09:18.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "#Richmond#Tigers#MCG#AFL#" - } - ], - "title": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/rRW9R8Zclbk?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=rRW9R8Zclbk&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=rRW9R8Zclbk" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk?v=2" - } - ], - "author": [ - { - "name": { - "$t": "RichmondTigers2011" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/RichmondTigers2011" - }, - "yt$userId": { - "$t": "po8qqWXXp6Fo00UGlbcTlg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/rRW9R8Zclbk?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 36, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQm5lVzGR70VrRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 36, - "yt$format": 1 - }, - { - "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQm5lVzGR70VrRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 36, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "richmondtigers2011", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "RichmondTigers2011" - } - ], - "media$description": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised written, spoken & photographed by Pete Dowe. www.richmondfc.com.au www.youtube.com www.youtube.com www.youtube.com #funny#Richmond#Tigers#Membership#Promo#MCG#Punt#Rd#Oval# #Melbourne#Cricket#Ground#AFL#Football#", - "type": "plain" - }, - "media$keywords": { - "$t": "#Richmond#Tigers#MCG#AFL#" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=rRW9R8Zclbk&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:18", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:09", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:18", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:27", - "yt$name": "end" - } - ], - "media$title": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "36" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:09:18.000Z" - }, - "yt$videoid": { - "$t": "rRW9R8Zclbk" - } - } - }, - { - "gd$etag": "W/\"CEIGQX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:qjO8l5uNunE" - }, - "published": { - "$t": "2012-04-16T05:02:00.000Z" - }, - "updated": { - "$t": "2012-04-16T05:02:00.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "RJ Dill" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Kaleb Johnson" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Scarlet Nation" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rutgers football" - } - ], - "title": { - "$t": "RJ Dill and Kaleb Johnson interviews" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/qjO8l5uNunE?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=qjO8l5uNunE&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=qjO8l5uNunE" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE?v=2" - } - ], - "author": [ - { - "name": { - "$t": "scarletnationtv" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/scarletnationtv" - }, - "yt$userId": { - "$t": "beUNBqGe0GbGCQpGJr4xVg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/qjO8l5uNunE?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 104, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache5.c.youtube.com/CiILENy73wIaGQlxuo2bl7wzqhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 104, - "yt$format": 1 - }, - { - "url": "rtsp://v3.cache8.c.youtube.com/CiILENy73wIaGQlxuo2bl7wzqhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 104, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "scarletnationtv", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "scarletnationtv" - } - ], - "media$description": { - "$t": "Rutgers offensive tackles RJ Dill and Kaleb Johnson talk Rutgers football.", - "type": "plain" - }, - "media$keywords": { - "$t": "RJ Dill, Kaleb Johnson, Scarlet Nation, Rutgers football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=qjO8l5uNunE&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:52", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:26", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:52", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/qjO8l5uNunE/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:18", - "yt$name": "end" - } - ], - "media$title": { - "$t": "RJ Dill and Kaleb Johnson interviews", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "104" - }, - "yt$uploaded": { - "$t": "2012-04-16T05:02:00.000Z" - }, - "yt$videoid": { - "$t": "qjO8l5uNunE" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "3" - } - }, - { - "gd$etag": "W/\"C04HRH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:C6t6gKz_nqA" - }, - "published": { - "$t": "2012-04-16T04:52:15.000Z" - }, - "updated": { - "$t": "2012-04-16T04:52:15.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Education", - "label": "Education" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Larry" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "romano" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "park" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "saturday" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "league" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "cell" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "phone" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "usage" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "talking" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "and" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "catching" - } - ], - "title": { - "$t": "larry romano on the phone making a 1st down completion saturday football league" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/C6t6gKz_nqA?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=C6t6gKz_nqA&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=C6t6gKz_nqA" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA?v=2" - } - ], - "author": [ - { - "name": { - "$t": "namnamer" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/namnamer" - }, - "yt$userId": { - "$t": "Pg1Kgppp1H57d15BSZgA-w" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Education", - "label": "Education", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/C6t6gKz_nqA?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 289, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQmgnv-sgHqrCxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 289, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache3.c.youtube.com/CiILENy73wIaGQmgnv-sgHqrCxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 289, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "namnamer", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "namnamer" - } - ], - "media$description": { - "$t": "It's illegal to talk on the phone while driving a car but driving down field... it's still legal in park football to talk while playing. not recommended unless you are a pro like Larry but...", - "type": "plain" - }, - "media$keywords": { - "$t": "Larry, romano, park, football, saturday, league, cell, phone, usage, talking, and, catching" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=C6t6gKz_nqA&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:24.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:12.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:24.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/3.jpg", - "height": 90, - "width": 120, - "time": "00:03:36.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "larry romano on the phone making a 1st down completion saturday football league", - "type": "plain" - }, - "yt$duration": { - "seconds": "289" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:52:15.000Z" - }, - "yt$videoid": { - "$t": "C6t6gKz_nqA" - } - } - }, - { - "gd$etag": "W/\"C04ERn47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:htHKUbXYw2M" - }, - "published": { - "$t": "2012-04-16T04:51:47.000Z" - }, - "updated": { - "$t": "2012-04-16T04:51:47.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Comedy", - "label": "Comedy" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "FF" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jeffery" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "and" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Preston" - } - ], - "title": { - "$t": "FF introducing Jeffery and Preston Irving" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/htHKUbXYw2M?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=htHKUbXYw2M&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=htHKUbXYw2M" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M?v=2" - } - ], - "author": [ - { - "name": { - "$t": "thehuckabee182" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/thehuckabee182" - }, - "yt$userId": { - "$t": "rnahI2jjsVsjwX9OQCvPlA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Comedy", - "label": "Comedy", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/htHKUbXYw2M?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 146, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQljw9i1UcrRhhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 146, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQljw9i1UcrRhhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 146, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "thehuckabee182", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "thehuckabee182" - } - ], - "media$description": { - "$t": "A kickass trailer of an upcoming fantasy football film. Looks to be the funniest film ever. Introducing the characters Jeffery and Preston Irving.", - "type": "plain" - }, - "media$keywords": { - "$t": "FF, Jeffery, and, Preston" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=htHKUbXYw2M&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:13", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:36.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:13", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/htHKUbXYw2M/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:49.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "FF introducing Jeffery and Preston Irving", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "146" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:51:47.000Z" - }, - "yt$videoid": { - "$t": "htHKUbXYw2M" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "3" - } - }, - { - "gd$etag": "W/\"C08NR347eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:QUxE8dfrSf8" - }, - "published": { - "$t": "2012-04-16T04:51:36.000Z" - }, - "updated": { - "$t": "2012-04-16T04:51:36.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - } - ], - "title": { - "$t": "ThundersU16-2012-04-15.MPG" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/QUxE8dfrSf8?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=QUxE8dfrSf8&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=QUxE8dfrSf8" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8?v=2" - } - ], - "author": [ - { - "name": { - "$t": "8960Krogsager" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/8960Krogsager" - }, - "yt$userId": { - "$t": "OkaIPe6KmLmVNKzzuzT-tA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/QUxE8dfrSf8?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 47, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache1.c.youtube.com/CiILENy73wIaGQn_SevX8URMQRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 47, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQn_SevX8URMQRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 47, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "8960krogsager", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "8960Krogsager" - } - ], - "media$description": { - "$t": "U16 American Football Randers Thunder vs Herning Hawks: 6-0 15. april 2012", - "type": "plain" - }, - "media$keywords": { - "$t": "football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=QUxE8dfrSf8&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:23.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:11.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:23.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:35.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "ThundersU16-2012-04-15.MPG", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "47" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:51:36.000Z" - }, - "yt$videoid": { - "$t": "QUxE8dfrSf8" - } - } - }, - { - "gd$etag": "W/\"C0UDQX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:q1-elpWAAoo" - }, - "published": { - "$t": "2012-04-16T04:41:10.000Z" - }, - "updated": { - "$t": "2012-04-16T04:41:10.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "college football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "tulsa golden hurricans" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "tulsa football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "GJ Kinne" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "wide receiver" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "quarter back" - } - ], - "title": { - "$t": "Landon Finton 2012 Football Highlights" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/q1-elpWAAoo?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=q1-elpWAAoo&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=q1-elpWAAoo" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Ryan Edwards" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/saGhMa5XGVHl02wfLNEy7g" - }, - "yt$userId": { - "$t": "saGhMa5XGVHl02wfLNEy7g" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/q1-elpWAAoo?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 94, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQmKAoCVlp5fqxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 94, - "yt$format": 1 - }, - { - "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQmKAoCVlp5fqxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 94, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "saGhMa5XGVHl02wfLNEy7g", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Ryan Edwards" - } - ], - "media$description": { - "$t": "7 year old Landon Finton football highlights", - "type": "plain" - }, - "media$keywords": { - "$t": "football, college football, tulsa golden hurricans, tulsa football, GJ Kinne, wide receiver, quarter back" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=q1-elpWAAoo&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:47", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:23.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:47", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/q1-elpWAAoo/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:10.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Landon Finton 2012 Football Highlights", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "94" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:41:10.000Z" - }, - "yt$videoid": { - "$t": "q1-elpWAAoo" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "1" - } - }, - { - "gd$etag": "W/\"CkQBQn47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:3W1ya1FqhCU" - }, - "published": { - "$t": "2012-04-16T04:25:53.000Z" - }, - "updated": { - "$t": "2012-04-16T04:25:53.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Games", - "label": "Gaming" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "The" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rumble" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Fish" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ザ・ランブルフィッシュ" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ATOMISWAVE" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "SAMMY" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ARCADE" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "CAB" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "GAME" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "FIGHTING" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "BEAT" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "UM" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "UP" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "KUNG" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "FU" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ca" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "HD" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": ".GAME" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "PLAY" - } - ], - "title": { - "$t": "The Rumble Fish ザ・ランブルフィッシュ game play atomiswave cab & pics HD" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/3W1ya1FqhCU?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=3W1ya1FqhCU&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=3W1ya1FqhCU" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU?v=2" - } - ], - "author": [ - { - "name": { - "$t": "dzzmoo1" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/dzzmoo1" - }, - "yt$userId": { - "$t": "DDLrqLjO1egeeRdx8X4s8A" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "moderated" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "denied" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Games", - "label": "Gaming", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/3W1ya1FqhCU?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 101, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQklhGpRa3Jt3RMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 101, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQklhGpRa3Jt3RMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 101, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "dzzmoo1", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "dzzmoo1" - } - ], - "media$description": { - "$t": "The Rumble Fish (ザ・ランブルフィッシュ?) is a 2D fighting game developed by Dimps and published by Sega Sammy Holdings. It was originally released in 2004 for the Atomiswave arcade platform and was later ported to the PlayStation 2 on March 17, 2005. A sequel, The Rumble Fish 2, has since been developed.Atomiswave game play and cab (HD) and pics part 0.2 Atomiswave games Demolish Fist (Sammy / Dimps) Dirty Pigskin Football (Play Mechanix) Dolphin Blue (Sammy) Extreme Hunting (Sammy) Extreme Hunting 2 Tournament Edition (Sega Amusement USA) Faster Than Speed (Sammy) Fist of the North Star (Hokuto No Ken) (Sega / ARC System Works) Guilty Gear Isuka (Sammy / ARC System Works) Guilty Gear X Version 1.5 (Sammy / ARC System Works) Hustle Tamaire Kyousou (Animal Basket) (Sammy) Knights of Valour: The Seven Spirits (Sammy / IGS) Maximum Speed (Sammy) Metal Slug 6 (Sega / SNK Playmore) Neo Geo Battle Coliseum (Sega / SNK Playmore) Ranger Mission (Sammy) Salaried Worker Golden Taro (Sammy) Samurai Shodown VI (Sega / SNK Playmore) Sega Bass Fishing Challenge (Sega Amusement USA) Sega Clay Challenge (Sega Amusement USA) Sports Shooting USA (Sammy) The King of Fighters Neowave (Sammy / SNK Playmore) The King of Fighters XI (Sega / SNK Playmore) The Rumble Fish (Sammy / Dimps) The Rumble Fish 2 (Sega / Dimps) Victory Furlong - Horse Racing (Sammy) [edit] Unreleased Chase 1929 (Sammy) Force Five (Sammy) Kenju (Sammy / DreamFactory) Premier Eleven (Sammy / Dimps) Sushi Bar (Sammy)", - "type": "plain" - }, - "media$keywords": { - "$t": "The, Rumble, Fish, ザ・ランブルフィッシュ, ATOMISWAVE, SAMMY, ARCADE, CAB, GAME, FIGHTING, BEAT, UM, UP, KUNG, FU, ca, HD, .GAME, PLAY" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=3W1ya1FqhCU&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:50.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:25.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:50.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:15.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "The Rumble Fish ザ・ランブルフィッシュ game play atomiswave cab & pics HD", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "101" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:25:53.000Z" - }, - "yt$videoid": { - "$t": "3W1ya1FqhCU" - } - }, - "yt$statistics": { - "favoriteCount": "2", - "viewCount": "27" - } - }, - { - "gd$etag": "W/\"A0IMSX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:U_Lw8ccft9U" - }, - "published": { - "$t": "2012-04-16T04:13:08.000Z" - }, - "updated": { - "$t": "2012-04-16T04:13:08.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Sport" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Tunisie" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Professionnalisme" - } - ], - "title": { - "$t": "Tunisia Sport (2/10) _ Football Professionnel en Tunisie 26-02-2010.MPG" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/U_Lw8ccft9U?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=U_Lw8ccft9U&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=U_Lw8ccft9U" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U?v=2" - } - ], - "author": [ - { - "name": { - "$t": "amoezaineb" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/amoezaineb" - }, - "yt$userId": { - "$t": "EKm4GFx69vsS69IMZJ1crQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/U_Lw8ccft9U?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 600, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache6.c.youtube.com/CiILENy73wIaGQnVtx_H8fDyUxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 600, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache5.c.youtube.com/CiILENy73wIaGQnVtx_H8fDyUxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 600, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "amoezaineb", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "amoezaineb" - } - ], - "media$description": { - "$t": "Épisode 2/10 : Professionnalisme/ compétence-habileté + mentalité-sérieux + éthique-responsabilité", - "type": "plain" - }, - "media$keywords": { - "$t": "Sport, Tunisie, Football, Professionnalisme" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=U_Lw8ccft9U&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/default.jpg", - "height": 90, - "width": 120, - "time": "00:05:00", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/1.jpg", - "height": 90, - "width": 120, - "time": "00:02:30", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/2.jpg", - "height": 90, - "width": 120, - "time": "00:05:00", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/3.jpg", - "height": 90, - "width": 120, - "time": "00:07:30", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Tunisia Sport (2/10) _ Football Professionnel en Tunisie 26-02-2010.MPG", - "type": "plain" - }, - "yt$duration": { - "seconds": "600" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:13:08.000Z" - }, - "yt$videoid": { - "$t": "U_Lw8ccft9U" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "1" - } - }, - { - "gd$etag": "W/\"Ak4GQH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:g6j2GbE95Hg" - }, - "published": { - "$t": "2012-04-16T04:08:03.000Z" - }, - "updated": { - "$t": "2012-04-16T06:48:41.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "el" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - } - ], - "title": { - "$t": "el football.AVI" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/g6j2GbE95Hg?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=g6j2GbE95Hg&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=g6j2GbE95Hg" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg?v=2" - } - ], - "author": [ - { - "name": { - "$t": "louinex" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/louinex" - }, - "yt$userId": { - "$t": "PSot9M-Q0Da3Gq8SPGUOcA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/g6j2GbE95Hg?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 135, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQl45D2xGfaogxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 135, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache5.c.youtube.com/CiILENy73wIaGQl45D2xGfaogxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 135, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "louinex", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "louinex" - } - ], - "media$description": { - "$t": "", - "type": "plain" - }, - "media$keywords": { - "$t": "el, football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=g6j2GbE95Hg&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:07.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:33.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:07.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:41.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "el football.AVI", - "type": "plain" - }, - "yt$duration": { - "seconds": "135" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:08:03.000Z" - }, - "yt$videoid": { - "$t": "g6j2GbE95Hg" - } - } - }, - { - "gd$etag": "W/\"Ak4BQH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:5xHBXPswmcw" - }, - "published": { - "$t": "2012-04-16T04:02:31.000Z" - }, - "updated": { - "$t": "2012-04-16T04:02:31.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Ramona" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - } - ], - "title": { - "$t": "Marc Sutton #78" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/5xHBXPswmcw?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=5xHBXPswmcw&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=5xHBXPswmcw" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Ramonaramsfootball" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/Ramonaramsfootball" - }, - "yt$userId": { - "$t": "JE_miX30awxqh9o0Tv1nFw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "denied" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/5xHBXPswmcw?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 386, - "yt$format": 5 - }, - { - "url": "rtsp://v4.cache4.c.youtube.com/CiILENy73wIaGQnMmTD7XMER5xMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 386, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache8.c.youtube.com/CiILENy73wIaGQnMmTD7XMER5xMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 386, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "ramonaramsfootball", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Ramonaramsfootball" - } - ], - "media$description": { - "$t": "Marc Sutton #78 Class of 2012, National Football Federation Award Winner, All Inland Empire First Team for 2 years, Position: Tackle Height:6'4\" Weight:265", - "type": "plain" - }, - "media$keywords": { - "$t": "Ramona, Football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=5xHBXPswmcw&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/default.jpg", - "height": 90, - "width": 120, - "time": "00:03:13", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:36.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/2.jpg", - "height": 90, - "width": 120, - "time": "00:03:13", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/5xHBXPswmcw/3.jpg", - "height": 90, - "width": 120, - "time": "00:04:49.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Marc Sutton #78", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "386" - }, - "yt$uploaded": { - "$t": "2012-04-16T04:02:31.000Z" - }, - "yt$videoid": { - "$t": "5xHBXPswmcw" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "3" - } - }, - { - "gd$etag": "W/\"AkACQn47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:mTkisZG6mcU" - }, - "published": { - "$t": "2012-04-16T03:59:23.000Z" - }, - "updated": { - "$t": "2012-04-16T03:59:23.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Nonprofit", - "label": "Nonprofits & Activism" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rancho" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Cucamonga" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Middle" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "School" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Advanced" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Band" - } - ], - "title": { - "$t": "Joseph @ Colony High 10-2-11.mp4" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/mTkisZG6mcU?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=mTkisZG6mcU&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=mTkisZG6mcU" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU?v=2" - } - ], - "author": [ - { - "name": { - "$t": "majicmiracles" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/majicmiracles" - }, - "yt$userId": { - "$t": "nRO7en25sxio2jY7CiyDeQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Nonprofit", - "label": "Nonprofits & Activism", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/mTkisZG6mcU?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 21, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQnFmbqRsSI5mRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 21, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnFmbqRsSI5mRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 21, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "majicmiracles", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "majicmiracles" - } - ], - "media$description": { - "$t": "Football Game - Drumming from the Bleachers", - "type": "plain" - }, - "media$keywords": { - "$t": "Rancho, Cucamonga, Middle, School, Advanced, Band" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=mTkisZG6mcU&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:10.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:05.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:10.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/mTkisZG6mcU/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:15.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Joseph @ Colony High 10-2-11.mp4", - "type": "plain" - }, - "yt$duration": { - "seconds": "21" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:59:23.000Z" - }, - "yt$videoid": { - "$t": "mTkisZG6mcU" - } - } - }, - { - "gd$etag": "W/\"AkQHRH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:XnRokBqZBrc" - }, - "published": { - "$t": "2012-04-16T03:52:15.000Z" - }, - "updated": { - "$t": "2012-04-16T03:52:15.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "aaronfootball2" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Outdoor Sports" - } - ], - "title": { - "$t": "Aaron Playing Football" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/XnRokBqZBrc?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=XnRokBqZBrc&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=XnRokBqZBrc" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc?v=2" - } - ], - "author": [ - { - "name": { - "$t": "lauraellen32" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/lauraellen32" - }, - "yt$userId": { - "$t": "hiO6pvzA3blJzKG_-UVaFQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/XnRokBqZBrc?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 115, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQm3BpkakGh0XhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 115, - "yt$format": 1 - }, - { - "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQm3BpkakGh0XhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 115, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "lauraellen32", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "lauraellen32" - } - ], - "media$description": { - "$t": "October 2011 - He's number 48", - "type": "plain" - }, - "media$keywords": { - "$t": "aaronfootball2, Outdoor Sports" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=XnRokBqZBrc&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:57.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:28.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:57.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/XnRokBqZBrc/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:26.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Aaron Playing Football", - "type": "plain" - }, - "yt$duration": { - "seconds": "115" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:52:15.000Z" - }, - "yt$videoid": { - "$t": "XnRokBqZBrc" - } - } - }, - { - "gd$etag": "W/\"AkYAR347eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:Weto5t-jNrE" - }, - "published": { - "$t": "2012-04-16T03:49:06.000Z" - }, - "updated": { - "$t": "2012-04-16T03:49:06.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Diablos" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Spartans" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Mission" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Viejo" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "De" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "La" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Salle" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "High" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "School" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "2005" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "sports" - } - ], - "title": { - "$t": "Giacomo Vitko's HS Football Highlights Pt. 3" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/Weto5t-jNrE?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=Weto5t-jNrE&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=Weto5t-jNrE" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Me4678" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/Me4678" - }, - "yt$userId": { - "$t": "qCTTrmhVWvFLqKAU4k0zwQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/Weto5t-jNrE?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 69, - "yt$format": 5 - }, - { - "url": "rtsp://v8.cache4.c.youtube.com/CiILENy73wIaGQmxNqPf5mjrWRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 69, - "yt$format": 1 - }, - { - "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQmxNqPf5mjrWRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 69, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "me4678", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Me4678" - } - ], - "media$description": { - "$t": "Mission Viejo DT-72 Vs De La Salle", - "type": "plain" - }, - "media$keywords": { - "$t": "Diablos, Spartans, Mission, Viejo, De, La, Salle, Football, High, School, 2005, sports" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=Weto5t-jNrE&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:34.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:17.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:34.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/Weto5t-jNrE/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:51.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Giacomo Vitko's HS Football Highlights Pt. 3", - "type": "plain" - }, - "yt$duration": { - "seconds": "69" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:49:06.000Z" - }, - "yt$videoid": { - "$t": "Weto5t-jNrE" - } - } - }, - { - "gd$etag": "W/\"AkYDQX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:NS5e35tTD6k" - }, - "published": { - "$t": "2012-04-16T03:49:30.000Z" - }, - "updated": { - "$t": "2012-04-16T03:49:30.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jed Brummett" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Carroll County Crushing Crows" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Indoor Football" - } - ], - "title": { - "$t": "Jed Brummett - Indoor Football April 15 2012 - 1st TD Pass Vs. Crushing Crows East" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/NS5e35tTD6k?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=NS5e35tTD6k&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=NS5e35tTD6k" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k?v=2" - } - ], - "author": [ - { - "name": { - "$t": "rodgerraven" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/rodgerraven" - }, - "yt$userId": { - "$t": "1dfHFnOQ87E2lcXt53TWXg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/NS5e35tTD6k?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 16, - "yt$format": 5 - }, - { - "url": "rtsp://v3.cache4.c.youtube.com/CiILENy73wIaGQmpD1Ob314uNRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 16, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQmpD1Ob314uNRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 16, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "rodgerraven", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "rodgerraven" - } - ], - "media$description": { - "$t": "Crushing Crows North lost a tough fought game vs Crushing Crows East 20-12", - "type": "plain" - }, - "media$keywords": { - "$t": "Jed Brummett, Carroll County Crushing Crows, Indoor Football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=NS5e35tTD6k&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:08", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:04", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:08", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/NS5e35tTD6k/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:12", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Jed Brummett - Indoor Football April 15 2012 - 1st TD Pass Vs. Crushing Crows East", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "16" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:49:30.000Z" - }, - "yt$videoid": { - "$t": "NS5e35tTD6k" - } - } - }, - { - "gd$etag": "W/\"DU4GSH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:H6IjXIotjWI" - }, - "published": { - "$t": "2012-04-16T03:45:29.000Z" - }, - "updated": { - "$t": "2012-04-16T03:45:29.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Blake" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "First" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Pick" - } - ], - "title": { - "$t": "Blake First Tackle Football Pick vs Bulldogs 7-6 Win" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/H6IjXIotjWI?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=H6IjXIotjWI&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=H6IjXIotjWI" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI?v=2" - } - ], - "author": [ - { - "name": { - "$t": "BlakeLilFitzStaley" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/BlakeLilFitzStaley" - }, - "yt$userId": { - "$t": "XcJFG0qDgG0PzRMTwd6Wqg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/H6IjXIotjWI?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 17, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQlijS2KXCOiHxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 17, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache7.c.youtube.com/CiILENy73wIaGQlijS2KXCOiHxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 17, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "blakelilfitzstaley", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "BlakeLilFitzStaley" - } - ], - "media$description": { - "$t": "", - "type": "plain" - }, - "media$keywords": { - "$t": "Blake, First, Pick" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=H6IjXIotjWI&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:08.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:04.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:08.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/H6IjXIotjWI/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:12.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Blake First Tackle Football Pick vs Bulldogs 7-6 Win", - "type": "plain" - }, - "yt$duration": { - "seconds": "17" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:45:29.000Z" - }, - "yt$videoid": { - "$t": "H6IjXIotjWI" - } - } - }, - { - "gd$etag": "W/\"DEMHQX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:7MckFDAUJXQ" - }, - "published": { - "$t": "2012-04-16T03:20:30.000Z" - }, - "updated": { - "$t": "2012-04-16T03:20:30.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Anatomy" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Final" - } - ], - "title": { - "$t": "Anatomy Final.mp4" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/7MckFDAUJXQ?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=7MckFDAUJXQ&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=7MckFDAUJXQ" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Jacobr158" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/Jacobr158" - }, - "yt$userId": { - "$t": "odOMv6k7vbnl_tZDBCs5kw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/7MckFDAUJXQ?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 219, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQl0JRQwFCTH7BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 219, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQl0JRQwFCTH7BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 219, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "jacobr158", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Jacobr158" - } - ], - "media$description": { - "$t": "This video describes the muscles used in throwing a football how to improve them, and what throwing a football looks like.", - "type": "plain" - }, - "media$keywords": { - "$t": "Anatomy, Final" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=7MckFDAUJXQ&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:49.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:54.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:49.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/3.jpg", - "height": 90, - "width": 120, - "time": "00:02:44.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Anatomy Final.mp4", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "219" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:20:30.000Z" - }, - "yt$videoid": { - "$t": "7MckFDAUJXQ" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "2" - } - }, - { - "gd$etag": "W/\"DEMESX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:m_NVZ7A-h6E" - }, - "published": { - "$t": "2012-04-16T03:20:08.000Z" - }, - "updated": { - "$t": "2012-04-16T03:20:08.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - } - ], - "title": { - "$t": "shoe and football=swagg!!!" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/m_NVZ7A-h6E?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=m_NVZ7A-h6E&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=m_NVZ7A-h6E" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E?v=2" - } - ], - "author": [ - { - "name": { - "$t": "e3swagg" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/e3swagg" - }, - "yt$userId": { - "$t": "u9E1DgtYmsB_LGsvsX3rWQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/m_NVZ7A-h6E?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 15, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQmhhz6wZ1XzmxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 15, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQmhhz6wZ1XzmxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 15, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "e3swagg", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "e3swagg" - } - ], - "media$description": { - "$t": "my shoe and a football can talk. Lol", - "type": "plain" - }, - "media$keywords": {}, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=m_NVZ7A-h6E&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:07.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:03.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:07.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:11.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "shoe and football=swagg!!!", - "type": "plain" - }, - "yt$duration": { - "seconds": "15" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:20:08.000Z" - }, - "yt$videoid": { - "$t": "m_NVZ7A-h6E" - } - } - }, - { - "gd$etag": "W/\"DEQMQX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:dxCDd9d85eQ" - }, - "published": { - "$t": "2012-04-16T03:19:40.000Z" - }, - "updated": { - "$t": "2012-04-16T03:19:40.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "lucy" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "camrae" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "012" - } - ], - "title": { - "$t": "Just us a finchel love story ep 1" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/dxCDd9d85eQ?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=dxCDd9d85eQ&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=dxCDd9d85eQ" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Mackenzie Clearwater" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/y5Xccjwl41lISaYrcAIi_A" - }, - "yt$userId": { - "$t": "y5Xccjwl41lISaYrcAIi_A" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/dxCDd9d85eQ?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 7, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache5.c.youtube.com/CiILENy73wIaGQnk5XzXd4MQdxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 7, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQnk5XzXd4MQdxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 7, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "y5Xccjwl41lISaYrcAIi_A", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Mackenzie Clearwater" - } - ], - "media$description": { - "$t": "Plot: Finn has a huge crush on Rachel but Finn and Rachel are best friends. Rachel and Sam are going out but Rachel likes Finn. Rachel is not that cool but finn is in the caption of the football team, Finn and Rachel have been best friends since they were 5 they are both 15 when they were little they they promised to be each other's first kiss On with the story At School f-hey Rach u want to come round tonight r-hey yer why not f- sweet r-ur such a nerd f- u bet ya r- oh god I cant be seen with a nerd latter (about to walk a way but finn stands in frount of her) f- realy well then (hugs her ) Q-awww how cute are u two final going out yay that means that Santana ows me $30 r- QUINN f- its great to know that our friends are making bets about our love life (btw Rachel and Quinn are friends) R-well where are very close friends F-(gets a bit sad at the word Friend ) Q- well it was just the glee culb R+F-we need to talk to them Q-(runs away) R- where is she going F- who cears R- where were we ill be at ur around 4 the end sorry it was short the next one will be longer no copy right intende", - "type": "plain" - }, - "media$keywords": { - "$t": "lucy, camrae, 012" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=dxCDd9d85eQ&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:03.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:01.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:03.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:05.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Just us a finchel love story ep 1", - "type": "plain" - }, - "yt$duration": { - "seconds": "7" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:19:40.000Z" - }, - "yt$videoid": { - "$t": "dxCDd9d85eQ" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "2" - } - }, - { - "gd$etag": "W/\"DEQHRH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:Yo8PPfYYzYo" - }, - "published": { - "$t": "2012-04-16T03:18:55.000Z" - }, - "updated": { - "$t": "2012-04-16T03:18:55.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Entertainment", - "label": "Entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "All Pro Football 2k8" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "2k sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "visual concepts" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "the catch" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Joe Montana" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Herman Moore" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "San Francisco 49ers" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Detroit Lions" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "NFL" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Google" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Yahoo" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "wikipedia" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "bing" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "PS3" - } - ], - "title": { - "$t": "All Pro Football 2K8 Spectacular Catch!!! Joe Montana to Herman Moore" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/Yo8PPfYYzYo?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=Yo8PPfYYzYo&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=Yo8PPfYYzYo" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo?v=2" - } - ], - "author": [ - { - "name": { - "$t": "tjglendinning" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/tjglendinning" - }, - "yt$userId": { - "$t": "1IFS_bkPOus2ZVbdZdPELQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Entertainment", - "label": "Entertainment", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/Yo8PPfYYzYo?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 33, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQmKzRj2PQ-PYhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 33, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache6.c.youtube.com/CiILENy73wIaGQmKzRj2PQ-PYhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 33, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "tjglendinning", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "tjglendinning" - } - ], - "media$description": { - "$t": "Awesome catch... The 2K Series of football games are still better than modern games in nearly all aspects. The graphics are not quite on par, but this game was made in 2007 and looks way better than Madden 10 or possibly even 11 graphically. The presentation is still top notch.", - "type": "plain" - }, - "media$keywords": { - "$t": "All Pro Football 2k8, 2k sports, visual concepts, the catch, Joe Montana, Herman Moore, San Francisco 49ers, Detroit Lions, NFL, Google, Yahoo, wikipedia, bing, PS3" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=Yo8PPfYYzYo&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:16.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:08.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:16.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:24.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "All Pro Football 2K8 Spectacular Catch!!! Joe Montana to Herman Moore", - "type": "plain" - }, - "yt$duration": { - "seconds": "33" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:18:55.000Z" - }, - "yt$videoid": { - "$t": "Yo8PPfYYzYo" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "4" - } - }, - { - "gd$etag": "W/\"DEUBRH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:NMYpMDpId-E" - }, - "published": { - "$t": "2012-04-16T03:17:35.000Z" - }, - "updated": { - "$t": "2012-04-16T03:17:35.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Education", - "label": "Education" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Adult" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ABA" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Therapy" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Independent Leisure skills" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Scrapbooking" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Special needs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Autism" - } - ], - "title": { - "$t": "Leisure Skills: Scrapbooking" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/NMYpMDpId-E?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=NMYpMDpId-E&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NMYpMDpId-E/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=NMYpMDpId-E" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NMYpMDpId-E?v=2" - } - ], - "author": [ - { - "name": { - "$t": "ShapeOfBehavior" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/ShapeOfBehavior" - }, - "yt$userId": { - "$t": "tGXXyf0lq885PjT9avLtJA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "denied" - }, - { - "action": "commentVote", - "permission": "denied" - }, - { - "action": "videoRespond", - "permission": "denied" - }, - { - "action": "rate", - "permission": "denied" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Education", - "label": "Education", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/NMYpMDpId-E?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 16, - "yt$format": 5 - }, - { - "url": "rtsp://v4.cache4.c.youtube.com/CiILENy73wIaGQnhd0g6MCnGNBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 16, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnhd0g6MCnGNBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 16, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "shapeofbehavior", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "ShapeOfBehavior" - } - ], - "media$description": { - "$t": "The Shape focuses on building leisure skills around patient preference and choice in the young adult program. This young adult likes football and he enjoys the floppy paper and the stickers allow the incoporation of more fine motor development. Building independent leisure skills promotes independence and is crticial for better quality of life.", - "type": "plain" - }, - "media$keywords": { - "$t": "Adult, ABA, Therapy, Independent Leisure skills, Scrapbooking, Special needs, Autism" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=NMYpMDpId-E&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:08", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:04", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:08", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/NMYpMDpId-E/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:12", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Leisure Skills: Scrapbooking", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "16" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:17:35.000Z" - }, - "yt$videoid": { - "$t": "NMYpMDpId-E" - } - } - }, - { - "gd$etag": "W/\"DEUAQ347eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:NVEvZmggNKM" - }, - "published": { - "$t": "2012-04-16T03:17:22.000Z" - }, - "updated": { - "$t": "2012-04-16T03:17:22.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "JUSTIN" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "BIEBER" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ES" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "DEL" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "BARCA!!!" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "youtube" - } - ], - "title": { - "$t": "JUSTIN BIEBER ES DEL BARCA!!! - YouTube.flv" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/NVEvZmggNKM?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=NVEvZmggNKM&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=NVEvZmggNKM" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM?v=2" - } - ], - "author": [ - { - "name": { - "$t": "JUSTIN startpop" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/WZNMChP4aOldvORBIFIQTA" - }, - "yt$userId": { - "$t": "WZNMChP4aOldvORBIFIQTA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/NVEvZmggNKM?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 169, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQmjNCBoZi9RNRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 169, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQmjNCBoZi9RNRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 169, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "WZNMChP4aOldvORBIFIQTA", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "JUSTIN startpop" - } - ], - "media$description": { - "$t": "Justin Bieber jugando football con la camisera del barca vamosss Justin goo goo ...", - "type": "plain" - }, - "media$keywords": { - "$t": "JUSTIN, BIEBER, ES, DEL, BARCA!!!, youtube" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=NVEvZmggNKM&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:24.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:42.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:24.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/NVEvZmggNKM/3.jpg", - "height": 90, - "width": 120, - "time": "00:02:06.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "JUSTIN BIEBER ES DEL BARCA!!! - YouTube.flv", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "169" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:17:22.000Z" - }, - "yt$videoid": { - "$t": "NVEvZmggNKM" - } - } - }, - { - "gd$etag": "W/\"D0QMQH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:fe9lRnedv2U" - }, - "published": { - "$t": "2012-04-16T03:03:01.000Z" - }, - "updated": { - "$t": "2012-04-16T03:03:01.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "talented freshmen" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "quarterback" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "highlights" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "valuable" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "nfl" - } - ], - "title": { - "$t": "Pano Tiatia 2011 Football Highlights" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/fe9lRnedv2U?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=fe9lRnedv2U&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=fe9lRnedv2U" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U?v=2" - } - ], - "author": [ - { - "name": { - "$t": "lstiax2" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/lstiax2" - }, - "yt$userId": { - "$t": "jWHn5L0Cf4y2XozrkEG8tA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "denied" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/fe9lRnedv2U?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 234, - "yt$format": 5 - }, - { - "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQllv513RmXvfRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 234, - "yt$format": 1 - }, - { - "url": "rtsp://v5.cache8.c.youtube.com/CiILENy73wIaGQllv513RmXvfRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 234, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "lstiax2", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "lstiax2" - } - ], - "media$description": { - "$t": "Pano Tiatia, Freshmen #29 Running Back | Pineview High School, St. George, Utah Ran over 1500 yards in the season.", - "type": "plain" - }, - "media$keywords": { - "$t": "Football, sports, talented freshmen, quarterback, highlights, valuable, nfl" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=fe9lRnedv2U&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:57", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:58.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:57", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/fe9lRnedv2U/3.jpg", - "height": 90, - "width": 120, - "time": "00:02:55.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Pano Tiatia 2011 Football Highlights", - "type": "plain" - }, - "yt$duration": { - "seconds": "234" - }, - "yt$uploaded": { - "$t": "2012-04-16T03:03:01.000Z" - }, - "yt$videoid": { - "$t": "fe9lRnedv2U" - } - } - }, - { - "gd$etag": "W/\"D0YDQH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:UF4a21RDJ78" - }, - "published": { - "$t": "2012-04-16T02:59:31.000Z" - }, - "updated": { - "$t": "2012-04-16T02:59:31.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Davis Rugby" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Davis High" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rugby" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "DC Rugby" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Utah Rugby" - } - ], - "title": { - "$t": "Davis High Rugby vs Rocky Mtn Rugby Fight.wmv" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/UF4a21RDJ78?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=UF4a21RDJ78&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=UF4a21RDJ78" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78?v=2" - } - ], - "author": [ - { - "name": { - "$t": "JayGBarton1" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/JayGBarton1" - }, - "yt$userId": { - "$t": "jS-zBAq670xAB5vg0fbE4g" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/UF4a21RDJ78?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 79, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQm_J0NU2xpeUBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 79, - "yt$format": 1 - }, - { - "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQm_J0NU2xpeUBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 79, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "jaygbarton1", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "JayGBarton1" - } - ], - "media$description": { - "$t": "Davis High Rugby in Davis County, Utah played a game at the Davis High Football field in Kaysville, Utah. Watch Davis High School play these boys... Davis worked them in this game it was exciting to see Davis Play these boys. Because of a fight the ref called the game a draw...", - "type": "plain" - }, - "media$keywords": { - "$t": "Davis Rugby, Davis High, Rugby, DC Rugby, Utah Rugby" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=UF4a21RDJ78&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:39.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:19.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:39.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/UF4a21RDJ78/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:59.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Davis High Rugby vs Rocky Mtn Rugby Fight.wmv", - "type": "plain" - }, - "yt$duration": { - "seconds": "79" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:59:31.000Z" - }, - "yt$videoid": { - "$t": "UF4a21RDJ78" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "2" - } - }, - { - "gd$etag": "W/\"DkAHSX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:QSmB4X6WCwU" - }, - "published": { - "$t": "2012-04-16T02:52:18.000Z" - }, - "updated": { - "$t": "2012-04-16T02:52:18.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Nikki" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rowe" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Isaac" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Govea" - } - ], - "title": { - "$t": "Nikki Rowe Football Isaac Govea 2010" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/QSmB4X6WCwU?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=QSmB4X6WCwU&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=QSmB4X6WCwU" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU?v=2" - } - ], - "author": [ - { - "name": { - "$t": "dan100295" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/dan100295" - }, - "yt$userId": { - "$t": "F4YOrtG8Jw1dp2U4IFh10Q" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/QSmB4X6WCwU?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 302, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache1.c.youtube.com/CiILENy73wIaGQkFC5Z-4YEpQRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 302, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQkFC5Z-4YEpQRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 302, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "dan100295", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "dan100295" - } - ], - "media$description": { - "$t": "#21 Isaac Govea Senior Year Highlights", - "type": "plain" - }, - "media$keywords": { - "$t": "Nikki, Rowe, Football, Isaac, Govea" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=QSmB4X6WCwU&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:31", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:15.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:31", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/3.jpg", - "height": 90, - "width": 120, - "time": "00:03:46.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Nikki Rowe Football Isaac Govea 2010", - "type": "plain" - }, - "yt$duration": { - "seconds": "302" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:52:18.000Z" - }, - "yt$videoid": { - "$t": "QSmB4X6WCwU" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "1" - } - }, - { - "gd$etag": "W/\"DkQHSX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:TWbTiYA-g4c" - }, - "published": { - "$t": "2012-04-16T02:45:38.000Z" - }, - "updated": { - "$t": "2012-04-16T02:45:38.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Highlights" - } - ], - "title": { - "$t": "JAKE SANDERS 2011 CARROLLTON FOOTBALL HIGHLIGHTS" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/TWbTiYA-g4c?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=TWbTiYA-g4c&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=TWbTiYA-g4c" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Collier Sanders" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/IfDpsBQG7sxYY6fW4VMXww" - }, - "yt$userId": { - "$t": "IfDpsBQG7sxYY6fW4VMXww" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/TWbTiYA-g4c?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 242, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQmHgz6AidNmTRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 242, - "yt$format": 1 - }, - { - "url": "rtsp://v4.cache6.c.youtube.com/CiILENy73wIaGQmHgz6AidNmTRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 242, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "IfDpsBQG7sxYY6fW4VMXww", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Collier Sanders" - } - ], - "media$description": { - "$t": "Jake Sanders 2011 football highlights - Carrollton High School Trojans Class of 2014 6'6\" 320 lbs OT/OG", - "type": "plain" - }, - "media$keywords": { - "$t": "Football, Highlights" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=TWbTiYA-g4c&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:01", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:00.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:01", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/3.jpg", - "height": 90, - "width": 120, - "time": "00:03:01.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "JAKE SANDERS 2011 CARROLLTON FOOTBALL HIGHLIGHTS", - "type": "plain" - }, - "yt$duration": { - "seconds": "242" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:45:38.000Z" - }, - "yt$videoid": { - "$t": "TWbTiYA-g4c" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "4" - } - }, - { - "gd$etag": "W/\"DkYDSX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:A3nrRdjtPs8" - }, - "published": { - "$t": "2012-04-16T02:42:58.000Z" - }, - "updated": { - "$t": "2012-04-16T02:42:58.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - } - ], - "title": { - "$t": "cardinals flag football" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/A3nrRdjtPs8?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=A3nrRdjtPs8&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=A3nrRdjtPs8" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Samantha roberts" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/FS184ENyxC4MsxogNYxYIw" - }, - "yt$userId": { - "$t": "FS184ENyxC4MsxogNYxYIw" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/A3nrRdjtPs8?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 6, - "yt$format": 5 - }, - { - "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQnPPu3YRet5AxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 6, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQnPPu3YRet5AxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 6, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "FS184ENyxC4MsxogNYxYIw", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Samantha roberts" - } - ], - "media$description": { - "$t": "Cardinals Flagfootball", - "type": "plain" - }, - "media$keywords": { - "$t": "football" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=A3nrRdjtPs8&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:03", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:01.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:03", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:04.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "cardinals flag football", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "6" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:42:58.000Z" - }, - "yt$videoid": { - "$t": "A3nrRdjtPs8" - } - } - }, - { - "gd$etag": "W/\"CU4EQX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:_bKFFGfhx0k" - }, - "published": { - "$t": "2012-04-16T02:38:20.000Z" - }, - "updated": { - "$t": "2012-04-16T02:38:20.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Nonprofit", - "label": "Nonprofits & Activism" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "tshirt" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Battle" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "2010" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "10" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "30" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "11" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "31" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "40" - } - ], - "title": { - "$t": "T-Shirt Battle" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/_bKFFGfhx0k?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=_bKFFGfhx0k&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=_bKFFGfhx0k" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k?v=2" - } - ], - "author": [ - { - "name": { - "$t": "3LittleNinjas" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/3LittleNinjas" - }, - "yt$userId": { - "$t": "aoZimlscjBchASOWVd1KtA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "moderated" - }, - { - "action": "commentVote", - "permission": "denied" - }, - { - "action": "videoRespond", - "permission": "denied" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Nonprofit", - "label": "Nonprofits & Activism", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/_bKFFGfhx0k?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 45, - "yt$format": 5 - }, - { - "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQlJx-FnFIWy_RMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 45, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQlJx-FnFIWy_RMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 45, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "3littleninjas", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "3LittleNinjas" - } - ], - "media$description": { - "$t": "Monster vs. Football vs. Boston Terrier vs. Eagles vs. Boston Terrier", - "type": "plain" - }, - "media$keywords": { - "$t": "tshirt, Battle, 2010, 10, 30, 11, 31, 40" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=_bKFFGfhx0k&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:22.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:11.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:22.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:33.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "T-Shirt Battle", - "type": "plain" - }, - "yt$duration": { - "seconds": "45" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:38:20.000Z" - }, - "yt$videoid": { - "$t": "_bKFFGfhx0k" - } - } - }, - { - "gd$etag": "W/\"CU8HRX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:JKGRaBGCXHI" - }, - "published": { - "$t": "2012-04-16T02:37:14.000Z" - }, - "updated": { - "$t": "2012-04-16T02:37:14.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "CO" - } - ], - "title": { - "$t": "Cross Over sencillo Football Skills" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/JKGRaBGCXHI?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=JKGRaBGCXHI&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=JKGRaBGCXHI" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI?v=2" - } - ], - "author": [ - { - "name": { - "$t": "XavierRojo1" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/XavierRojo1" - }, - "yt$userId": { - "$t": "i7lel-X-k9WhWCYBCReCbA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/JKGRaBGCXHI?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 9, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQlyXIIRaJGhJBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 9, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache2.c.youtube.com/CiILENy73wIaGQlyXIIRaJGhJBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 9, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "xavierrojo1", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "XavierRojo1" - } - ], - "media$description": { - "$t": "Mi cross over sencillo", - "type": "plain" - }, - "media$keywords": { - "$t": "CO" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=JKGRaBGCXHI&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:04.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:02.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:04.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:06.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Cross Over sencillo Football Skills", - "type": "plain" - }, - "yt$duration": { - "seconds": "9" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:37:14.000Z" - }, - "yt$videoid": { - "$t": "JKGRaBGCXHI" - } - } - }, - { - "gd$etag": "W/\"CEABSX47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:8mTmvj_j-g8" - }, - "published": { - "$t": "2012-04-16T02:30:08.000Z" - }, - "updated": { - "$t": "2012-04-16T05:05:58.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "SBU" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Bearcats" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Weights" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "NCAA" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Samoa" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Samoans" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jorge" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Batres" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Shedd" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jameson" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Manuma" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Dro" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Ben" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Maligni" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Villa" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Athletes" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Strenght" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Conditioning" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "hodgetwins" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Work" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Big" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Muscle" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Iron" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Pump" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Protein" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Workout" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Curls" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Bench" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Squat" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Split" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Jerk" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Incline" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Massive" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Huge" - } - ], - "title": { - "$t": "SBU Football Grind Time Season." - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/8mTmvj_j-g8?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=8mTmvj_j-g8&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=8mTmvj_j-g8" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8?v=2" - } - ], - "author": [ - { - "name": { - "$t": "jbKicks10" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/jbKicks10" - }, - "yt$userId": { - "$t": "_LQBLfh5z9r3se1gQNsglA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/8mTmvj_j-g8?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 171, - "yt$format": 5 - }, - { - "url": "rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQkP-uM_vuZk8hMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 171, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQkP-uM_vuZk8hMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 171, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "jbkicks10", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "jbKicks10" - } - ], - "media$description": { - "$t": "Sbu Football players on a off day getting better for the upcoming season. Family!", - "type": "plain" - }, - "media$keywords": { - "$t": "SBU, Football, Bearcats, Weights, NCAA, Samoa, Samoans, Jorge, Batres, Shedd, Jameson, Manuma, Dro, Ben, Maligni, Villa, Athletes, Sports, Strenght, Conditioning, hodgetwins, Work, Big, Muscle, Iron, Pump, Protein, Workout, Curls, Bench, Squat, Split, Jerk, Incline, Massive, Huge" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=8mTmvj_j-g8&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:25.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:42.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:25.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/3.jpg", - "height": 90, - "width": 120, - "time": "00:02:08.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "SBU Football Grind Time Season.", - "type": "plain" - }, - "yt$duration": { - "seconds": "171" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:30:08.000Z" - }, - "yt$videoid": { - "$t": "8mTmvj_j-g8" - } - }, - "gd$rating": { - "average": 5, - "max": 5, - "min": 1, - "numRaters": 1, - "rel": "http://schemas.google.com/g/2005#overall" - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "8" - }, - "yt$rating": { - "numDislikes": "0", - "numLikes": "1" - } - }, - { - "gd$etag": "W/\"CUMGRX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:GYQXHEMNrNs" - }, - "published": { - "$t": "2012-04-16T02:30:24.000Z" - }, - "updated": { - "$t": "2012-04-16T02:30:24.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Entertainment", - "label": "Entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "cosmos" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ranni" - } - ], - "title": { - "$t": "18th Cosmos Football Tournament Ranni" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/GYQXHEMNrNs?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=GYQXHEMNrNs&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=GYQXHEMNrNs" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs?v=2" - } - ], - "author": [ - { - "name": { - "$t": "nibis000" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/nibis000" - }, - "yt$userId": { - "$t": "bRZsdMalHparLXLqGO7FjA" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Entertainment", - "label": "Entertainment", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/GYQXHEMNrNs?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 54, - "yt$format": 5 - }, - { - "url": "rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQnbrA1DHBeEGRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 54, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache7.c.youtube.com/CiILENy73wIaGQnbrA1DHBeEGRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 54, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "nibis000", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "nibis000" - } - ], - "media$description": { - "$t": "www.cosmosranni.com Video By : Sibin Thomas n Lijo Varghese", - "type": "plain" - }, - "media$keywords": { - "$t": "cosmos, ranni" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=GYQXHEMNrNs&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:27", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:13.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:27", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:40.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "18th Cosmos Football Tournament Ranni", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "54" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:30:24.000Z" - }, - "yt$videoid": { - "$t": "GYQXHEMNrNs" - } - } - }, - { - "gd$etag": "W/\"CUcBQ347eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:BXEkcUrDT0w" - }, - "published": { - "$t": "2012-04-16T02:24:12.000Z" - }, - "updated": { - "$t": "2012-04-16T02:24:12.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Entertainment", - "label": "Entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ronaldo" - } - ], - "title": { - "$t": "Top five divers of world football" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/BXEkcUrDT0w?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=BXEkcUrDT0w&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=BXEkcUrDT0w" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w?v=2" - } - ], - "author": [ - { - "name": { - "$t": "pnirajan" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/pnirajan" - }, - "yt$userId": { - "$t": "CzVunAaNES51pCtAp8pFdg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Entertainment", - "label": "Entertainment", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/BXEkcUrDT0w?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 56, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache3.c.youtube.com/CiILENy73wIaGQlMT8NKcSRxBRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 56, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQlMT8NKcSRxBRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 56, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "pnirajan", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "pnirajan" - } - ], - "media$description": { - "$t": "ronaldo atlintop busquets", - "type": "plain" - }, - "media$keywords": { - "$t": "ronaldo" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=BXEkcUrDT0w&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:28", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:14", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:28", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:42", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Top five divers of world football", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "56" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:24:12.000Z" - }, - "yt$videoid": { - "$t": "BXEkcUrDT0w" - } - } - }, - { - "gd$etag": "W/\"CE4NQH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:s6uAgjYxL8w" - }, - "published": { - "$t": "2012-04-16T02:23:11.000Z" - }, - "updated": { - "$t": "2012-04-16T02:23:11.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Education", - "label": "Education" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "WPI" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Blimp" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Autonomous" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Flying" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "RC" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "RC Blimp" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "MQP" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Marcus Menghini" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Daniel Lanier" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Daniel Sarafconn" - } - ], - "title": { - "$t": "WPI Autonomous Blimp MQP Speed Test" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/s6uAgjYxL8w?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=s6uAgjYxL8w&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=s6uAgjYxL8w" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w?v=2" - } - ], - "author": [ - { - "name": { - "$t": "MazonDel" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/MazonDel" - }, - "yt$userId": { - "$t": "7nVP6VVh0wA2HdJMzUwUww" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Education", - "label": "Education", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/s6uAgjYxL8w?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 32, - "yt$format": 5 - }, - { - "url": "rtsp://v3.cache1.c.youtube.com/CiILENy73wIaGQnMLzE2goCrsxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 32, - "yt$format": 1 - }, - { - "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQnMLzE2goCrsxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 32, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "mazondel", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "MazonDel" - } - ], - "media$description": { - "$t": "Marcus Menghini (pilot) and Daniel Lanier (tether operator) take the blimp down to the WPI football field and do a speed run from one end to the other with an amusing ending. Estimated speed is about 8.2 MPH and 7.1 Knots. The goals and requirements of the project stipulated that the blimp was able to beat 5 knot speeds for up to 90 minutes.", - "type": "plain" - }, - "media$keywords": { - "$t": "WPI, Blimp, Autonomous, Flying, RC, RC Blimp, MQP, Marcus Menghini, Daniel Lanier, Daniel Sarafconn" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=s6uAgjYxL8w&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:16", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:08", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:16", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:24", - "yt$name": "end" - } - ], - "media$title": { - "$t": "WPI Autonomous Blimp MQP Speed Test", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "32" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:23:11.000Z" - }, - "yt$videoid": { - "$t": "s6uAgjYxL8w" - } - } - }, - { - "gd$etag": "W/\"CE4MQH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:n9laM0U_It4" - }, - "published": { - "$t": "2012-04-16T02:23:01.000Z" - }, - "updated": { - "$t": "2012-04-16T02:23:01.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Piermario Morosini" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "collapses on pitch" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Pescara vs Livorno 14/04/2012" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Serie PIERMARIO MOROSINI" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "SI ACCASCIATO zaslabl" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "atak serca die dies smierc" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "ZAWAL SERCA DIE DIES DIED" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Piermario Morosini collapses" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "on pitch and DIE Pescara" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "vs livorno" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "collapsing during game" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "14 april 2012" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Piermario Morosini dead" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "after collapsing on pitch" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Piermario Morosini RIP" - } - ], - "title": { - "$t": "DEATH OF Italian Football Player \"Piermario Morosini" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/n9laM0U_It4?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=n9laM0U_It4&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=n9laM0U_It4" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4?v=2" - } - ], - "author": [ - { - "name": { - "$t": "uisdui jkdfuji" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/u8AmWN8WK5om_0mDm1RwVg" - }, - "yt$userId": { - "$t": "u8AmWN8WK5om_0mDm1RwVg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/n9laM0U_It4?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 147, - "yt$format": 5 - }, - { - "url": "rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQneIj9FM1rZnxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 147, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache6.c.youtube.com/CiILENy73wIaGQneIj9FM1rZnxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 147, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "u8AmWN8WK5om_0mDm1RwVg", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "uisdui jkdfuji" - } - ], - "media$description": { - "$t": "tinyurl.com Piermario Morosini, collapses on pitch, Pescara vs Livorno 14/04/2012, Serie PIERMARIO MOROSINI, SI ACCASCIATO zaslabl, atak serca die dies smierc, ZAWAL SERCA DIE DIES DIED,Piermario Morosini collapses, on pitch and DIE Pescara, vs livorno, Piermario Morosini, collapsing during game, 14 april 2012,Piermario Morosini DEAD on the pitch,Piermario Morosini dead, after collapsing on pitch,Piermario Morosini RIP", - "type": "plain" - }, - "media$keywords": { - "$t": "Piermario Morosini, collapses on pitch, Pescara vs Livorno 14/04/2012, Serie PIERMARIO MOROSINI, SI ACCASCIATO zaslabl, atak serca die dies smierc, ZAWAL SERCA DIE DIES DIED, Piermario Morosini collapses, on pitch and DIE Pescara, vs livorno, collapsing during game, 14 april 2012, Piermario Morosini dead, after collapsing on pitch, Piermario Morosini RIP" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=n9laM0U_It4&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:13.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:36.750", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:13.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/n9laM0U_It4/3.jpg", - "height": 90, - "width": 120, - "time": "00:01:50.250", - "yt$name": "end" - } - ], - "media$title": { - "$t": "DEATH OF Italian Football Player \"Piermario Morosini", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "147" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:23:01.000Z" - }, - "yt$videoid": { - "$t": "n9laM0U_It4" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "43" - } - }, - { - "gd$etag": "W/\"C0QNQH47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:Y_9kP-Pduqk" - }, - "published": { - "$t": "2012-04-16T02:23:53.000Z" - }, - "updated": { - "$t": "2012-04-16T04:43:11.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Richmond#Tigers#MCG#AFL#" - } - ], - "title": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/Y_9kP-Pduqk?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=Y_9kP-Pduqk&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=Y_9kP-Pduqk" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk?v=2" - } - ], - "author": [ - { - "name": { - "$t": "RichmondTigers2012" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/RichmondTigers2012" - }, - "yt$userId": { - "$t": "o8ndLvRQsNNnxkfO2KsKew" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/Y_9kP-Pduqk?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 36, - "yt$format": 5 - }, - { - "url": "rtsp://v1.cache8.c.youtube.com/CiILENy73wIaGQmput3jP2T_YxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 36, - "yt$format": 1 - }, - { - "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQmput3jP2T_YxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 36, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "richmondtigers2012", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "RichmondTigers2012" - } - ], - "media$description": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised written, spoken & photographed by Pete Dowe. www.richmondfc.com.au www.youtube.com www.youtube.com www.youtube.com Richmond#Tigers#Membership#Promo#MCG#Punt#Rd#Oval#Melbourne#Cricket#Ground#AFL#Football#", - "type": "plain" - }, - "media$keywords": { - "$t": "Richmond#Tigers#MCG#AFL#" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=Y_9kP-Pduqk&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:18", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:09", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:18", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:27", - "yt$name": "end" - } - ], - "media$title": { - "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "36" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:23:53.000Z" - }, - "yt$videoid": { - "$t": "Y_9kP-Pduqk" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "8" - } - }, - { - "gd$etag": "W/\"CUcHR347eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:G8WwszlH5bM" - }, - "published": { - "$t": "2012-04-16T02:23:56.000Z" - }, - "updated": { - "$t": "2012-04-16T02:23:56.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "topps" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "amazon" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "baseball cards" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "sportdeals4u" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Wowzzer" - } - ], - "title": { - "$t": "amazon order from wowzzer" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/G8WwszlH5bM?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=G8WwszlH5bM&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=G8WwszlH5bM" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM?v=2" - } - ], - "author": [ - { - "name": { - "$t": "DingerzDarwin" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/DingerzDarwin" - }, - "yt$userId": { - "$t": "WfKIyLDZKDAdnJDLZT4a3g" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/comments?v=2", - "countHint": 0 - } - }, - "yt$hd": {}, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/G8WwszlH5bM?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 169, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache2.c.youtube.com/CiILENy73wIaGQmz5Uc5s7DFGxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 169, - "yt$format": 1 - }, - { - "url": "rtsp://v2.cache5.c.youtube.com/CiILENy73wIaGQmz5Uc5s7DFGxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 169, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "dingerzdarwin", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "DingerzDarwin" - } - ], - "media$description": { - "$t": "Amazon/wowzzer sent football cards instead of baseball cards.", - "type": "plain" - }, - "media$keywords": { - "$t": "topps, amazon, baseball cards, sportdeals4u, Wowzzer" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=G8WwszlH5bM&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/default.jpg", - "height": 90, - "width": 120, - "time": "00:01:24.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:42.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/2.jpg", - "height": 90, - "width": 120, - "time": "00:01:24.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/G8WwszlH5bM/3.jpg", - "height": 90, - "width": 120, - "time": "00:02:06.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "amazon order from wowzzer", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "169" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:23:56.000Z" - }, - "yt$videoid": { - "$t": "G8WwszlH5bM" - } - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "13" - } - }, - { - "gd$etag": "W/\"CE4GSX47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:fr3ik4pxgs8" - }, - "published": { - "$t": "2012-04-16T02:22:08.000Z" - }, - "updated": { - "$t": "2012-04-16T02:22:08.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Howto", - "label": "Howto & Style" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "moi" - } - ], - "title": { - "$t": "FootConnect_Ver1" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/fr3ik4pxgs8?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=fr3ik4pxgs8&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=fr3ik4pxgs8" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8?v=2" - } - ], - "author": [ - { - "name": { - "$t": "trinhvandien82" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/trinhvandien82" - }, - "yt$userId": { - "$t": "sFieUQ5yo-6wQxO4JsTlJg" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Howto", - "label": "Howto & Style", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/fr3ik4pxgs8?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 430, - "yt$format": 5 - }, - { - "url": "rtsp://v8.cache8.c.youtube.com/CiILENy73wIaGQnPgnGKk-K9fhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 430, - "yt$format": 1 - }, - { - "url": "rtsp://v6.cache2.c.youtube.com/CiILENy73wIaGQnPgnGKk-K9fhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 430, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "trinhvandien82", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "trinhvandien82" - } - ], - "media$description": { - "$t": "Football Connection App", - "type": "plain" - }, - "media$keywords": { - "$t": "video, moi" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=fr3ik4pxgs8&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/default.jpg", - "height": 90, - "width": 120, - "time": "00:03:35", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:47.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/2.jpg", - "height": 90, - "width": 120, - "time": "00:03:35", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/3.jpg", - "height": 90, - "width": 120, - "time": "00:05:22.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "FootConnect_Ver1", - "type": "plain" - }, - "yt$duration": { - "seconds": "430" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:22:08.000Z" - }, - "yt$videoid": { - "$t": "fr3ik4pxgs8" - } - } - }, - { - "gd$etag": "W/\"CkUNQn47eCp7I2A9WhVXFUg.\"", - "id": { - "$t": "tag:youtube.com,2008:video:V8G4q3AiMfw" - }, - "published": { - "$t": "2012-04-16T02:18:04.000Z" - }, - "updated": { - "$t": "2012-04-16T04:24:53.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Sports", - "label": "Sports" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "jv" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "football" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "highlights" - } - ], - "title": { - "$t": "Tejon Anthony Sophomore Football Highlight" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/V8G4q3AiMfw?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=V8G4q3AiMfw&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=V8G4q3AiMfw" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw?v=2" - } - ], - "author": [ - { - "name": { - "$t": "McJagger13" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/McJagger13" - }, - "yt$userId": { - "$t": "-mzo8fl_pEwzoMzlYsIwYQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Sports", - "label": "Sports", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/V8G4q3AiMfw?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 330, - "yt$format": 5 - }, - { - "url": "rtsp://v2.cache6.c.youtube.com/CiILENy73wIaGQn8MSJwq7jBVxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 330, - "yt$format": 1 - }, - { - "url": "rtsp://v7.cache3.c.youtube.com/CiILENy73wIaGQn8MSJwq7jBVxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 330, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "mcjagger13", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "McJagger13" - } - ], - "media$description": { - "$t": "half of my football season", - "type": "plain" - }, - "media$keywords": { - "$t": "jv, football, highlights" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=V8G4q3AiMfw&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/default.jpg", - "height": 90, - "width": 120, - "time": "00:02:45", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/1.jpg", - "height": 90, - "width": 120, - "time": "00:01:22.500", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/2.jpg", - "height": 90, - "width": 120, - "time": "00:02:45", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/3.jpg", - "height": 90, - "width": 120, - "time": "00:04:07.500", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Tejon Anthony Sophomore Football Highlight", - "type": "plain" - }, - "yt$aspectRatio": { - "$t": "widescreen" - }, - "yt$duration": { - "seconds": "330" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:18:04.000Z" - }, - "yt$videoid": { - "$t": "V8G4q3AiMfw" - } - }, - "gd$rating": { - "average": 5, - "max": 5, - "min": 1, - "numRaters": 2, - "rel": "http://schemas.google.com/g/2005#overall" - }, - "yt$statistics": { - "favoriteCount": "0", - "viewCount": "25" - }, - "yt$rating": { - "numDislikes": "0", - "numLikes": "2" - } - }, - { - "gd$etag": "W/\"CEMERH47eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:kJhXN-rHX2Q" - }, - "published": { - "$t": "2012-04-16T02:13:25.000Z" - }, - "updated": { - "$t": "2012-04-16T02:13:25.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "Entertainment", - "label": "Entertainment" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "R5" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Love" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Story" - } - ], - "title": { - "$t": "Love Me R5 Love Story Episode 10" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/kJhXN-rHX2Q?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=kJhXN-rHX2Q&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=kJhXN-rHX2Q" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q?v=2" - } - ], - "author": [ - { - "name": { - "$t": "BrookieBoo867" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/BrookieBoo867" - }, - "yt$userId": { - "$t": "ze3g9dgUy02MbcqwKkscaQ" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "Entertainment", - "label": "Entertainment", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/kJhXN-rHX2Q?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 40, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQlkX8fqN1eYkBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 40, - "yt$format": 1 - }, - { - "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQlkX8fqN1eYkBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 40, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "brookieboo867", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "BrookieBoo867" - } - ], - "media$description": { - "$t": "***With the Boys*** Andy: So you live right next door to Mads? Ross: *nods* Yepp. ???: *runs out of the house* RIKER! PLEASE DON'T KILL ME!!!! Riker: *runs out behind ???* ROCKY YOU'RE DEAD!!! Andy: You're brothers? *points to Riker and Rocky running down the road* Ross: *nods his head* Unfortunately. Ryland: *walks out of the house* Hey bro. Whos that? *points to Andy* Ross: This is Maddy's friend Andy from Tennessee. *turns to Andy* This is my little brother Ryland. Andy: Nice to meet you. Ryland: You too. Ross: So what'd Rocky do to Riker? Ryland: Long story short, Rocky was being stupid again. Ross: *nods his head* I shouldv'e known. Andy: Hey have you ever seen Mads try to play football? Ross: Nah. *smiles* I bet its funny. She doesn't seem like the athletic type Andy: *laughs* Oh. she's not. Ryland: We should ask her to come play football. Us, Riker, Rocky, and Rydel Ross: And Madison and Bree. Ryland: Who? Andy: Mads other friends. Ryland: *smiles* Are they hot? Ross: *starts laughing* As Maddy's boyfriend, Im not authorized to say yes or no. Andy: They're hot. *laughs* Ryland: YES! ***the guys get everyone at the park to play football*** Rydel: Ok Me and Ratliff are captains. Rocky: Not fair. *crosses his arms and starts pouting* Madison: Oh come on. Don't get your panties in a knot. Rocky: Grrr. Fiesty. I like that *winks at Madison* Madison: *laughs* I think you have a twitch. Riker: I like this girl! *high fives Madison* Rocky: Me too. *smiles at Madison* Bree ...", - "type": "plain" - }, - "media$keywords": { - "$t": "R5, Love, Story" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=kJhXN-rHX2Q&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:20", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:10", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:20", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:30", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Love Me R5 Love Story Episode 10", - "type": "plain" - }, - "yt$duration": { - "seconds": "40" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:13:25.000Z" - }, - "yt$videoid": { - "$t": "kJhXN-rHX2Q" - } - } - }, - { - "gd$etag": "W/\"CEMHR347eCp7I2A9WhVXFUk.\"", - "id": { - "$t": "tag:youtube.com,2008:video:hNdMghxKYeg" - }, - "published": { - "$t": "2012-04-16T02:13:56.000Z" - }, - "updated": { - "$t": "2012-04-16T02:13:56.000Z" - }, - "category": [ - { - "scheme": "http://schemas.google.com/g/2005#kind", - "term": "http://gdata.youtube.com/schemas/2007#video" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", - "term": "People", - "label": "People & Blogs" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Rubén" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Aguirre" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Gremio" - }, - { - "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", - "term": "Giovani" - } - ], - "title": { - "$t": "Rubén Aguirre - Un saludo a Grêmio Football Club e Giovani Chambón!" - }, - "content": { - "type": "application/x-shockwave-flash", - "src": "https://www.youtube.com/v/hNdMghxKYeg?version=3&f=videos&app=youtube_gdata" - }, - "link": [ - { - "rel": "alternate", - "type": "text/html", - "href": "https://www.youtube.com/watch?v=hNdMghxKYeg&feature=youtube_gdata" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.responses", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/responses?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#video.related", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/related?v=2" - }, - { - "rel": "http://gdata.youtube.com/schemas/2007#mobile", - "type": "text/html", - "href": "https://m.youtube.com/details?v=hNdMghxKYeg" - }, - { - "rel": "self", - "type": "application/atom+xml", - "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg?v=2" - } - ], - "author": [ - { - "name": { - "$t": "Bblackjoe" - }, - "uri": { - "$t": "https://gdata.youtube.com/feeds/api/users/Bblackjoe" - }, - "yt$userId": { - "$t": "ONOyAdsF99aRKEnzxtdaag" - } - } - ], - "yt$accessControl": [ - { - "action": "comment", - "permission": "allowed" - }, - { - "action": "commentVote", - "permission": "allowed" - }, - { - "action": "videoRespond", - "permission": "moderated" - }, - { - "action": "rate", - "permission": "allowed" - }, - { - "action": "embed", - "permission": "allowed" - }, - { - "action": "list", - "permission": "allowed" - }, - { - "action": "autoPlay", - "permission": "allowed" - }, - { - "action": "syndicate", - "permission": "allowed" - } - ], - "gd$comments": { - "gd$feedLink": { - "rel": "http://gdata.youtube.com/schemas/2007#comments", - "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/comments?v=2", - "countHint": 0 - } - }, - "media$group": { - "media$category": [ - { - "$t": "People", - "label": "People & Blogs", - "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" - } - ], - "media$content": [ - { - "url": "https://www.youtube.com/v/hNdMghxKYeg?version=3&f=videos&app=youtube_gdata", - "type": "application/x-shockwave-flash", - "medium": "video", - "isDefault": "true", - "expression": "full", - "duration": 25, - "yt$format": 5 - }, - { - "url": "rtsp://v7.cache4.c.youtube.com/CiILENy73wIaGQnoYUocgkzXhBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 25, - "yt$format": 1 - }, - { - "url": "rtsp://v5.cache8.c.youtube.com/CiILENy73wIaGQnoYUocgkzXhBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", - "type": "video/3gpp", - "medium": "video", - "expression": "full", - "duration": 25, - "yt$format": 6 - } - ], - "media$credit": [ - { - "$t": "bblackjoe", - "role": "uploader", - "scheme": "urn:youtube", - "yt$display": "Bblackjoe" - } - ], - "media$description": { - "$t": "Rubén Aguirre em sua twitcam se dirigindo a minha pessoa =)", - "type": "plain" - }, - "media$keywords": { - "$t": "Rubén, Aguirre, Gremio, Giovani" - }, - "media$license": { - "$t": "youtube", - "type": "text/html", - "href": "http://www.youtube.com/t/terms" - }, - "media$player": { - "url": "https://www.youtube.com/watch?v=hNdMghxKYeg&feature=youtube_gdata_player" - }, - "media$thumbnail": [ - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/default.jpg", - "height": 90, - "width": 120, - "time": "00:00:12.500", - "yt$name": "default" - }, - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/mqdefault.jpg", - "height": 180, - "width": 320, - "yt$name": "mqdefault" - }, - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/hqdefault.jpg", - "height": 360, - "width": 480, - "yt$name": "hqdefault" - }, - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/1.jpg", - "height": 90, - "width": 120, - "time": "00:00:06.250", - "yt$name": "start" - }, - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/2.jpg", - "height": 90, - "width": 120, - "time": "00:00:12.500", - "yt$name": "middle" - }, - { - "url": "http://i.ytimg.com/vi/hNdMghxKYeg/3.jpg", - "height": 90, - "width": 120, - "time": "00:00:18.750", - "yt$name": "end" - } - ], - "media$title": { - "$t": "Rubén Aguirre - Un saludo a Grêmio Football Club e Giovani Chambón!", - "type": "plain" - }, - "yt$duration": { - "seconds": "25" - }, - "yt$uploaded": { - "$t": "2012-04-16T02:13:56.000Z" - }, - "yt$videoid": { - "$t": "hNdMghxKYeg" - } - } - } - ] - } -} diff --git a/test/resources/eson1.json b/test/resources/eson1.json deleted file mode 100644 index 34e00a2..0000000 --- a/test/resources/eson1.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "type": "Object", - "expanded": true, - "props": [ - { - "id": "[ID]", - "name": "obj", - "value": { - "type": "Object", - "expanded": true, - "props": [ - { - "id": "[ID]", - "name": "arr", - "value": { - "type": "Array", - "expanded": true, - "items": [ - { - "id": "[ID]", - "value": { - "type": "value", - "value": 1 - } - }, - { - "id": "[ID]", - "value": { - "type": "value", - "value": 2 - } - }, - { - "id": "[ID]", - "value": { - "type": "Object", - "expanded": true, - "props": [ - { - "id": "[ID]", - "name": "first", - "value": { - "type": "value", - "value": 3 - } - }, - { - "id": "[ID]", - "name": "last", - "value": { - "type": "value", - "value": 4 - } - } - ] - } - } - ] - } - } - ] - } - }, - { - "id": "[ID]", - "name": "str", - "value": { - "type": "value", - "value": "hello world" - } - }, - { - "id": "[ID]", - "name": "nill", - "value": { - "type": "value", - "value": null - } - }, - { - "id": "[ID]", - "name": "bool", - "value": { - "type": "value", - "value": false - } - } - ] -} diff --git a/test/resources/eson2.json b/test/resources/eson2.json deleted file mode 100644 index e2c0419..0000000 --- a/test/resources/eson2.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "type": "Object", - "props": [ - { - "id": "[ID]", - "name": "obj", - "value": { - "type": "Object", - "props": [ - { - "id": "[ID]", - "name": "a", - "value": { - "type": "value", - "value": 2 - } - } - ] - } - }, - { - "id": "[ID]", - "name": "arr", - "value": { - "type": "Array", - "items": [ - { - "id": "[ID]", - "value": { - "type": "value", - "value": 3 - } - } - ] - } - } - ] -} diff --git a/test/resources/json1.json b/test/resources/json1.json deleted file mode 100644 index e7ca309..0000000 --- a/test/resources/json1.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "obj": { - "arr": [1,2, {"first":3,"last":4}] - }, - "str": "hello world", - "nill": null, - "bool": false -} diff --git a/test/stringUtils.test.js b/test/stringUtils.test.js deleted file mode 100644 index f14af22..0000000 --- a/test/stringUtils.test.js +++ /dev/null @@ -1,26 +0,0 @@ -import test from 'ava'; -import { escapeHTML, unescapeHTML, findUniqueName } from '../src/utils/stringUtils' - -test('escapeHTML', t => { - t.is(escapeHTML(' hello '), '\u00A0\u00A0 hello \u00A0') - t.is(escapeHTML('\u00A0 hello'), '\u00A0 hello') - t.is(escapeHTML('hello\nworld'), 'hello\\nworld') - - // TODO: test escapeHTML more thorougly -}) - -test('unescapeHTML', t => { - t.is(unescapeHTML(' \u00A0 hello \u00A0'), ' hello ') - t.is(unescapeHTML('\u00A0 hello'), ' hello') - - t.is(unescapeHTML('hello\\nworld'), 'hello\nworld') - - // TODO: test unescapeHTML more thorougly -}) - -test('findUniqueName', t => { - t.is(findUniqueName('other', ['a', 'b', 'c']), 'other') - t.is(findUniqueName('b', ['a', 'b', 'c']), 'b (copy)') - t.is(findUniqueName('b', ['a', 'b', 'c', 'b (copy)']), 'b (copy 2)') - t.is(findUniqueName('b', ['a', 'b', 'c', 'b (copy)', 'b (copy 2)']), 'b (copy 3)') -}) diff --git a/test/test_bootstrap.html b/test/test_bootstrap.html deleted file mode 100644 index 714fa93..0000000 --- a/test/test_bootstrap.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - -

- Test with bootstrap -

- -
- - - - \ No newline at end of file diff --git a/test/test_build.html b/test/test_build.html deleted file mode 100644 index 0a4bc97..0000000 --- a/test/test_build.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - -

- Switch editor mode using the mode box. - Note that the mode can be changed programmatically as well using the method - editor.setMode(mode), try it in the console of your browser. -

- -
-
-
- - - - diff --git a/test/test_destroy.html b/test/test_destroy.html deleted file mode 100644 index f60236f..0000000 --- a/test/test_destroy.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - -

- Switch editor mode using the mode box. - Note that the mode can be changed programmatically as well using the method - editor.setMode(mode), try it in the console of your browser. -

- -
-
-
- -

- -

- - - - diff --git a/test/test_materialize.html b/test/test_materialize.html deleted file mode 100644 index c57f3d1..0000000 --- a/test/test_materialize.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - -

- Switch editor mode using the mode box. - Note that the mode can be changed programmatically as well using the method - editor.setMode(mode), try it in the console of your browser. -

- -
-
-
- - - - diff --git a/test/test_minimalist.html b/test/test_minimalist.html deleted file mode 100644 index 257927b..0000000 --- a/test/test_minimalist.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - -

- Switch editor mode using the mode box. - Note that the mode can be changed programmatically as well using the method - editor.setMode(mode), try it in the console of your browser. -

- -
- - - - diff --git a/test/test_schema.html b/test/test_schema.html deleted file mode 100644 index f95b1ab..0000000 --- a/test/test_schema.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - -

- Switch editor mode using the mode box. - Note that the mode can be changed programmatically as well using the method - editor.setMode(mode), try it in the console of your browser. -

- -
- - - - diff --git a/test/util.test.bak.js b/test/util.test.bak.js deleted file mode 100644 index fbeaff5..0000000 --- a/test/util.test.bak.js +++ /dev/null @@ -1,91 +0,0 @@ -var assert = require('assert'); -var util = require('./js/util'); - -// console.log('TEST', util.parsePath('.items[3].name')); -// console.log('TEST', util.parsePath('.items[*].name')); - -describe('util', function () { - - describe('sanitize', function () { - - it('should leave valid JSON as is', function () { - assert.equal(util.sanitize('{"a":2}'), '{"a":2}'); - }); - - it('should replace JavaScript with JSON', function () { - assert.equal(util.sanitize('{a:2}'), '{"a":2}'); - assert.equal(util.sanitize('{\'a\':2}'), '{"a":2}'); - assert.equal(util.sanitize('{a:\'foo\'}'), '{"a":"foo"}'); - assert.equal(util.sanitize('{a:\'foo\',b:\'bar\'}'), '{"a":"foo","b":"bar"}'); - - // should leave string content untouched - assert.equal(util.sanitize('"{a:b}"'), '"{a:b}"'); - }); - - it('should add/remove escape characters', function () { - assert.equal(util.sanitize('"foo\'bar"'), '"foo\'bar"'); - assert.equal(util.sanitize('"foo\\"bar"'), '"foo\\"bar"'); - assert.equal(util.sanitize('\'foo"bar\''), '"foo\\"bar"'); - assert.equal(util.sanitize('\'foo\\\'bar\''), '"foo\'bar"'); - assert.equal(util.sanitize('"foo\\\'bar"'), '"foo\'bar"'); - }); - - it('remove comments', function () { - assert.equal(util.sanitize('/* foo */ {}'), ' {}'); - assert.equal(util.sanitize('/* foo */ {}'), ' {}'); - assert.equal(util.sanitize('{a:\'foo\',/*hello*/b:\'bar\'}'), '{"a":"foo","b":"bar"}'); - assert.equal(util.sanitize('{\na:\'foo\',//hello\nb:\'bar\'\n}'), '{\n"a":"foo",\n"b":"bar"\n}'); - - // should not remove comments in string - assert.equal(util.sanitize('{"str":"/* foo */"}'), '{"str":"/* foo */"}'); - }); - - it('should strip JSONP notation', function () { - // matching - assert.equal(util.sanitize('callback_123({});'), '{}'); - assert.equal(util.sanitize('callback_123([]);'), '[]'); - assert.equal(util.sanitize('callback_123(2);'), '2'); - assert.equal(util.sanitize('callback_123("foo");'), '"foo"'); - assert.equal(util.sanitize('callback_123(null);'), 'null'); - assert.equal(util.sanitize('callback_123(true);'), 'true'); - assert.equal(util.sanitize('callback_123(false);'), 'false'); - assert.equal(util.sanitize('/* foo bar */ callback_123 ({})'), '{}'); - assert.equal(util.sanitize('/* foo bar */ callback_123 ({})'), '{}'); - assert.equal(util.sanitize('/* foo bar */\ncallback_123({})'), '{}'); - assert.equal(util.sanitize('/* foo bar */ callback_123 ( {} )'), ' {} '); - assert.equal(util.sanitize(' /* foo bar */ callback_123 ({}); '), '{}'); - assert.equal(util.sanitize('\n/* foo\nbar */\ncallback_123 ({});\n\n'), '{}'); - - // non-matching - assert.equal(util.sanitize('callback abc({});'), 'callback abc({});'); - assert.equal(util.sanitize('callback {}'), 'callback {}'); - assert.equal(util.sanitize('callback({}'), 'callback({}'); - }); - - }); - - describe('path', function () { - - it ('should parse a json path', function () { - assert.deepEqual(util.parsePath(''), []); - assert.deepEqual(util.parsePath('.foo'), ['foo']); - assert.deepEqual(util.parsePath('.foo.bar'), ['foo', 'bar']); - assert.deepEqual(util.parsePath('.foo[2]'), ['foo', 2]); - assert.deepEqual(util.parsePath('.foo[2].bar'), ['foo', 2, 'bar']); - assert.deepEqual(util.parsePath('.foo["prop with spaces"]'), ['foo', 'prop with spaces']); - assert.deepEqual(util.parsePath('.foo[*].bar'), ['foo', '*', 'bar']); - }); - - it ('should throw an exception in case of an invalid path', function () { - assert.throws(function () {util.parsePath('.')}, /Error/); - assert.throws(function () {util.parsePath('[')}, /Error/); - assert.throws(function () {util.parsePath('[]')}, /Error/); - assert.throws(function () {util.parsePath('.[]')}, /Error/); - assert.throws(function () {util.parsePath('["23]')}, /Error/); - assert.throws(function () {util.parsePath('.foo bar')}, /Error/); - }); - - }); - - // TODO: thoroughly test all util methods -}); \ No newline at end of file diff --git a/test/utils/assertDeepEqualEson.js b/test/utils/assertDeepEqualEson.js deleted file mode 100644 index 6d2b18a..0000000 --- a/test/utils/assertDeepEqualEson.js +++ /dev/null @@ -1,40 +0,0 @@ -// TODO: move assertDeepEqualEson into a separate function -import {META} from "../../src/eson" -import lodashTransform from "lodash/transform" - -export function assertDeepEqualEson (t, actual, expected, path = [], ignoreIds = true) { - if (expected === undefined) { - throw new Error('Argument "expected" is undefined') - } - - // console.log('assertDeepEqualEson', actual, expected) - - const actualMeta = ignoreIds ? normalizeMetaIds(actual[META]) : actual[META] - const expectedMeta = ignoreIds ? normalizeMetaIds(expected[META]) : expected[META] - - t.deepEqual(actualMeta, expectedMeta, `Meta data not equal, path=[${path.join(', ')}], actual[META]=${JSON.stringify(actualMeta)}, expected[META]=${JSON.stringify(expectedMeta)}`) - - if (actualMeta.type === 'Array') { - t.deepEqual(actual.length, expected.length, 'Actual lengths of arrays should be equal, path=[${path.join(\', \')}]') - actual.forEach((item, index) => assertDeepEqualEson(t, actual[index], expected[index], path.concat(index)), ignoreIds) - } - else if (actualMeta.type === 'Object') { - t.deepEqual(Object.keys(actual).sort(), Object.keys(expected).sort(), 'Actual properties should be equal, path=[${path.join(\', \')}]') - actualMeta.props.forEach(key => assertDeepEqualEson(t, actual[key], expected[key], path.concat(key)), ignoreIds) - } - else { // actual[META].type === 'value' - t.deepEqual(Object.keys(actual), [], 'Value should not contain additional properties, path=[${path.join(\', \')}]') - } -} - -function normalizeMetaIds (meta) { - return lodashTransform(meta, (result, value, key) => { - if (key === 'id') { - result[key] = '[ID]' - } - else { - result[key] = value - } - }, {}) -} - diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..86e54c8 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,53 @@ +const webpack = require('webpack') + +const minifyPlugin = new webpack.optimize.UglifyJsPlugin({ sourceMap: true }) + +const productionEnvPlugin = new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify('production') + } +}) + +module.exports = { + entry: './src/jsoneditor/index.vanilla.js', + devtool: 'source-map', + cache: true, + bail: true, + output: { + library: 'jsoneditor', + libraryTarget: 'umd', + filename: 'dist/jsoneditor.js' + }, + plugins: [ + // bannerPlugin, + productionEnvPlugin, + minifyPlugin + ], + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: { loader: 'babel-loader'} + }, + { + test: /\.css$/, + use: [ 'style-loader', 'css-loader' ] + }, + { + test: /\.svg/, + use: { + loader: 'svg-url-loader', + options: {} + } + } + ] + }, + // using preact saves in the order of 25 kB + resolve: { + 'alias': { + 'react': 'preact-compat', + 'react-dom': 'preact-compat' + } + } +} \ No newline at end of file diff --git a/webpack.config.minimalist.js b/webpack.config.minimalist.js new file mode 100644 index 0000000..96c3e77 --- /dev/null +++ b/webpack.config.minimalist.js @@ -0,0 +1,19 @@ +const webpack = require('webpack') +const config = require('./webpack.config') +const emptyFile = __dirname + '/src/jsoneditor/utils/empty.js' + +const excludeAcePlugin = new webpack.NormalModuleReplacementPlugin(new RegExp('assets\/ace'), emptyFile) +const excludeAjvPlugin = new webpack.NormalModuleReplacementPlugin(new RegExp('^ajv$'), emptyFile) + +const configMinimalist = Object.assign({}, config, { + output: Object.assign({}, config.output, { + filename: 'dist/jsoneditor-minimalist.js' + }), + + plugins: [ + excludeAcePlugin, + excludeAjvPlugin + ].concat(config.plugins) +}) + +module.exports = configMinimalist