diff --git a/gulpfile.js b/gulpfile.js index 7b9c5894d4..47faffb826 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,84 +1,40 @@ /******************************* - Set-up -*******************************/ + * Set-up + *******************************/ var - gulp = require('gulp-help')(require('gulp')), + gulp = require('gulp-help')(require('gulp')), // read user config to know what task to load - config = require('./tasks/config/user'), - - // watch for file changes and build - watch = require('./tasks/watch'), - - // build all files - build = require('./tasks/build'), - buildJS = require('./tasks/build/javascript'), - buildCSS = require('./tasks/build/css'), - buildAssets = require('./tasks/build/assets'), - - // utility tasks - clean = require('./tasks/clean'), - version = require('./tasks/version'), - - // install tasks - install = require('./tasks/install'), - checkInstall = require('./tasks/check-install'), - - // docs tasks - serveDocs = require('./tasks/docs/serve'), - buildDocs = require('./tasks/docs/build'), - - // rtl - buildRTL = require('./tasks/rtl/build'), - watchRTL = require('./tasks/rtl/watch') + config = require('./tasks/config/user') ; /******************************* - Tasks -*******************************/ + * Tasks + *******************************/ -gulp.task('default', false, [ - 'check-install' -]); +require('./tasks/collections/build')(gulp); +require('./tasks/collections/various')(gulp); +require('./tasks/collections/install')(gulp); -gulp.task('watch', 'Watch for site/theme changes', watch); - -gulp.task('build', 'Builds all files from source', build); -gulp.task('build-javascript', 'Builds all javascript from source', buildJS); -gulp.task('build-css', 'Builds all css from source', buildCSS); -gulp.task('build-assets', 'Copies all assets from source', buildAssets); - -gulp.task('clean', 'Clean dist folder', clean); -gulp.task('version', 'Displays current version of Semantic', version); - -gulp.task('install', 'Runs set-up', install); -gulp.task('check-install', 'Displays current version of Semantic', checkInstall); +gulp.task('default', gulp.series('check-install')); /*-------------- Docs ---------------*/ -/* - Lets you serve files to a local documentation instance - https://github.com/Semantic-Org/Semantic-UI-Docs/ -*/ - -gulp.task('serve-docs', 'Serve file changes to SUI Docs', serveDocs); -gulp.task('build-docs', 'Build all files and add to SUI Docs', buildDocs); - +require('./tasks/collections/docs')(gulp); /*-------------- RTL ---------------*/ -if(config.rtl) { - gulp.task('watch-rtl', 'Watch files as RTL', watchRTL); - gulp.task('build-rtl', 'Build all files as RTL', buildRTL); +if (config.rtl) { + require('./tasks/collections/rtl')(gulp); } /* Admin Tasks */ -if(config.admin) { +if (config.admin) { require('./tasks/collections/admin')(gulp); } diff --git a/package-lock.json b/package-lock.json index 3e056d4887..b4593376f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,14 +4,42 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/@types/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-0QEFiR8ljcHp9bAbWxecjVRuAMr16ivPiGOw6KFQBVrVd0RQIcM3xKdRisH2EDWgVWujiYtHwhSkSUoAAGzH7Q==", + "@octokit/rest": { + "version": "14.0.9", + "resolved": "http://registry.npmjs.org/@octokit/rest/-/rest-14.0.9.tgz", + "integrity": "sha512-irP9phKfTXEZIcW2R+VNCtGHZJrXMWmSYp6RRfFn4BtAqtDRXF5z9JxCEQlAhNBf6X1koNi5k49tIAAAEJNlVQ==", + "dev": true, "requires": { - "commander": "*" + "before-after-hook": "^1.1.0", + "debug": "^3.1.0", + "is-array-buffer": "^1.0.0", + "is-stream": "^1.1.0", + "lodash": "^4.17.4", + "url-template": "^2.0.8" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } } }, + "@types/node": { + "version": "10.12.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.9.tgz", + "integrity": "sha512-eajkMXG812/w3w4a1OcBlaTwsFPO5F7fJ/amy+tieQxEMWBlbV1JGSjkFM+zkHNf81Cad+dfIRA+IBkvmvdAeA==" + }, "@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", @@ -23,9 +51,9 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accord": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/accord/-/accord-0.28.0.tgz", - "integrity": "sha512-sPF34gqHegaCSryKf5wHJ8wREK1dTZnHmC9hsB7D8xjntRdd30DXDPKf0YVIcSvnXJmcYu5SCvZRz28H++kFhQ==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz", + "integrity": "sha512-3OOR92FTc2p5/EcOzPcXp+Cbo+3C15nV9RXHlOUBCBpHhcB+0frbSNR9ehED/o7sTcyGVtqGJpguToEdlXhD0w==", "requires": { "convert-source-map": "^1.5.0", "glob": "^7.0.5", @@ -43,34 +71,28 @@ "when": "^3.7.8" }, "dependencies": { - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" } } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", "optional": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "align-text": { @@ -95,7 +117,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "requires": { "ansi-wrap": "^0.1.0" @@ -151,95 +173,12 @@ "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", "dev": true }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } + "buffer-equal": "^1.0.0" } }, "archy": { @@ -260,11 +199,27 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "requires": { + "make-iterator": "^1.0.0" + } + }, "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==" }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -280,16 +235,59 @@ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" }, - "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=" + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -324,10 +322,9 @@ } }, "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=", - "optional": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -336,14 +333,40 @@ }, "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^1.0.7", + "stream-exhaust": "^1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + } + } + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "requires": { + "async-done": "^1.2.2" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -356,22 +379,65 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "7.2.6", - "resolved": "http://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", - "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.2.0.tgz", + "integrity": "sha512-OuxUyTvzRe9EvKyouPqfr8QUkQ0pH400NOFzI1LFINO8zwgJr7ZTybLql03P//LjR0iWile2lCoy2vRTRSFpMw==", "requires": { - "browserslist": "^2.11.3", - "caniuse-lite": "^1.0.30000805", + "browserslist": "^4.2.1", + "caniuse-lite": "^1.0.30000890", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^6.0.17", - "postcss-value-parser": "^3.2.3" + "postcss": "^7.0.5", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.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=", "optional": true }, "aws4": { @@ -380,6 +446,22 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "optional": true }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -449,6 +531,12 @@ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" }, + "before-after-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.1.0.tgz", + "integrity": "sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA==", + "dev": true + }, "better-console": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/better-console/-/better-console-1.0.1.tgz", @@ -464,17 +552,9 @@ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, "binaryextensions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-1.0.1.tgz", - "integrity": "sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U=" - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "requires": { - "hoek": "2.x.x" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==" }, "brace-expansion": { "version": "1.1.11", @@ -513,14 +593,25 @@ } }, "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.2.1.tgz", + "integrity": "sha512-1oO0c7Zhejwd+LXihS89WqtKionSbz298rJZKJgfrHIZhrV8AC15gw553VcB0lcEugja7IhWD7iAlrsamfYVPA==", "requires": { - "caniuse-lite": "^1.0.30000792", - "electron-to-chromium": "^1.3.30" + "caniuse-lite": "^1.0.30000890", + "electron-to-chromium": "^1.3.79", + "node-releases": "^1.0.0-alpha.14" } }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -542,24 +633,10 @@ "unset-value": "^1.0.0" } }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, "caniuse-lite": { - "version": "1.0.30000888", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000888.tgz", - "integrity": "sha512-vftg+5p/lPsQGpnhSo/yBuYL36ai/cyjLvU3dOPJY1kkKrekLWIy8SLm+wzjX0hpCUdFTasC4/ZT7uqw4rKOnQ==" + "version": "1.0.30000892", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000892.tgz", + "integrity": "sha512-X9rxMaWZNbJB5qjkDqPtNv/yfViTeUL6ILk0QJNxLV3OhKC5Acn5vxsuUvllR6B48mog8lmS+whwHq/QIYSL9w==" }, "caseless": { "version": "0.12.0", @@ -578,7 +655,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -593,45 +670,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -690,13 +728,33 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } } }, "clone": { @@ -731,7 +789,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -753,11 +811,20 @@ } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "optional": true + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } }, "collection-visit": { "version": "1.0.0", @@ -800,9 +867,9 @@ } }, "commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==" + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, "component-emitter": { "version": "1.2.1", @@ -814,6 +881,46 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -839,29 +946,32 @@ } }, "convert-source-map": { - "version": "0.3.5", - "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" - }, + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "optional": true, - "requires": { - "boom": "2.x.x" - } - }, "css": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", @@ -880,12 +990,12 @@ } } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "array-find-index": "^1.0.1" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -895,14 +1005,6 @@ "optional": 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=", - "optional": true - } } }, "dateformat": { @@ -937,16 +1039,43 @@ } }, "deepmerge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz", - "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w==" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "clone": "^1.0.2" + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + } } }, "define-property": { @@ -1004,11 +1133,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=" - }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -1026,7 +1150,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer2": { @@ -1063,7 +1187,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -1085,6 +1209,15 @@ } } }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1095,56 +1228,42 @@ "safer-buffer": "^2.1.0" } }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==" + }, "editorconfig": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.0.tgz", - "integrity": "sha512-j7JBoj/bpNzvoTQylfRZSc85MlLNKWQiq5y6gwKhmqD2h1eZ+tH4AXbkhEJD468gjDna/XMx2YtSkCxBRX9OGg==", - "requires": { - "@types/commander": "^2.11.0", - "@types/semver": "^5.4.0", - "commander": "^2.11.0", - "lru-cache": "^4.1.1", - "semver": "^5.4.1", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz", + "integrity": "sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==", + "requires": { + "@types/node": "^10.11.7", + "@types/semver": "^5.5.0", + "commander": "^2.19.0", + "lru-cache": "^4.1.3", + "semver": "^5.6.0", "sigmund": "^1.0.1" }, "dependencies": { - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" } } }, "electron-to-chromium": { - "version": "1.3.73", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.73.tgz", - "integrity": "sha512-6PIg7v9zRoVGh6EheRF8h6Plti+3Yo/qtHobS4/Htyt53DNHmKKGFqSae1AIk0k1S4gCQvt7I2WgpbuZNcDY+g==" + "version": "1.3.79", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz", + "integrity": "sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw==" }, "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=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "~1.3.0" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1" - } - } + "once": "^1.4.0" } }, "errno": { @@ -1164,6 +1283,46 @@ "is-arrayish": "^0.2.1" } }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1222,57 +1381,6 @@ } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -1307,7 +1415,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { "chardet": "^0.4.0", @@ -1389,6 +1497,18 @@ "time-stamp": "^1.0.0" } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "optional": 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=", + "optional": true + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -1397,11 +1517,6 @@ "escape-string-regexp": "^1.0.5" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1423,11 +1538,6 @@ } } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -1453,7 +1563,7 @@ }, "commander": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" } } @@ -1467,6 +1577,16 @@ "is-glob": "^3.1.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "fined": { @@ -1481,16 +1601,49 @@ "parse-filepath": "^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=" - }, "flagged-respawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=" }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1516,13 +1669,13 @@ "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=" }, "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.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "optional": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, @@ -1539,6 +1692,15 @@ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2006,13 +2168,15 @@ } } }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", - "requires": { - "globule": "~0.1.0" - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, "get-imports": { "version": "1.0.0", @@ -2029,11 +2193,6 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "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=" - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -2046,22 +2205,8 @@ "optional": 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=", - "optional": true - } } }, - "github": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/github/-/github-14.0.0.tgz", - "integrity": "sha512-34/VqwhYGeYN0VHBSH49TmRWMF7emy32qjK6POiW47T/QI2u/cpuKsmrWt7a218ew/73dF4dQSJE68/HXdNfPw==", - "dev": true - }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -2075,38 +2220,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -2114,76 +2227,112 @@ "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" }, "dependencies": { - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "requires": { - "brace-expansion": "^1.0.0" - } + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "safe-buffer": "~5.1.0" } } } }, "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "requires": { - "gaze": "^0.5.1" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.1.tgz", + "integrity": "sha512-fK92r2COMC199WCyGUblrZKhjra3cyVMDiypDdqg1vsSDmexnbYivK1kNR4QItiNXLKmGlqan469ks67RtNa2g==", "requires": { - "find-index": "^0.1.1" + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } } }, "global-modules": { @@ -2227,47 +2376,6 @@ } } }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=" - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=" - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - } - } - }, "glogg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", @@ -2277,12 +2385,9 @@ } }, "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "requires": { - "natives": "^1.1.0" - } + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "growly": { "version": "1.3.0", @@ -2290,36 +2395,108 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" + "glob-watcher": "^5.0.0", + "gulp-cli": "^2.0.0", + "undertaker": "^1.0.0", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^2.5.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } } }, "gulp-autoprefixer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-4.1.0.tgz", - "integrity": "sha1-Bkr3PMAsrayP800L+T/9+5TqEqo=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-6.0.0.tgz", + "integrity": "sha512-MyLymXKVGTVBx/okQSBqmdhwhyqi3igBmZBwgpZp0GRbY1LY8VctOTLzwkQ18bZKJkSDnOKR5u32TMY9wSYdqQ==", "requires": { - "autoprefixer": "^7.0.0", + "autoprefixer": "^9.1.3", "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2", - "postcss": "^6.0.1", + "plugin-error": "^1.0.1", + "postcss": "^7.0.2", "through2": "^2.0.0", "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "gulp-chmod": { @@ -2357,188 +2534,12 @@ } }, "gulp-clone": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/gulp-clone/-/gulp-clone-1.1.4.tgz", - "integrity": "sha512-k54JS9IzwUH3L5MT0jL4tvjrSLTTkpqbDmU22I0HiUcRiMS+QhggHsbb0vgOCEHR/3A9SEBawxPv/5Mr5L+ZsA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-clone/-/gulp-clone-2.0.1.tgz", + "integrity": "sha512-SLg/KsHBbinR/pCX3PF5l1YlR28hLp0X+bcpf77PtMJ6zvAQ5kRjtCPV5Wt1wHXsXWZN0eTUZ15R8ZYpi/CdCA==", "requires": { - "gulp-util": "~2.2.14", - "through2": "~0.4.1" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=" - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=" - }, - "chalk": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - } - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } - }, - "gulp-util": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", - "requires": { - "chalk": "^0.5.0", - "dateformat": "^1.0.7-1.2.3", - "lodash._reinterpolate": "^2.4.1", - "lodash.template": "^2.4.1", - "minimist": "^0.2.0", - "multipipe": "^0.1.0", - "through2": "^0.5.0", - "vinyl": "^0.2.1" - }, - "dependencies": { - "through2": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~3.0.0" - } - } - } - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "requires": { - "ansi-regex": "^0.2.0" - } - }, - "lodash._reinterpolate": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", - "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=" - }, - "lodash.escape": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", - "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", - "requires": { - "lodash._escapehtmlchar": "~2.4.1", - "lodash._reunescapedhtml": "~2.4.1", - "lodash.keys": "~2.4.1" - } - }, - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - }, - "lodash.template": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", - "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", - "requires": { - "lodash._escapestringchar": "~2.4.1", - "lodash._reinterpolate": "~2.4.1", - "lodash.defaults": "~2.4.1", - "lodash.escape": "~2.4.1", - "lodash.keys": "~2.4.1", - "lodash.templatesettings": "~2.4.1", - "lodash.values": "~2.4.1" - } - }, - "lodash.templatesettings": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", - "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", - "requires": { - "lodash._reinterpolate": "~2.4.1", - "lodash.escape": "~2.4.1" - } - }, - "minimist": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", - "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "requires": { - "ansi-regex": "^0.2.1" - } - }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=" - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "dependencies": { - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "requires": { - "object-keys": "~0.4.0" - } - } - } - }, - "vinyl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", - "requires": { - "clone-stats": "~0.0.1" - } - }, - "xtend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=" - } + "plugin-error": "^0.1.2", + "through2": "^2.0.3" } }, "gulp-concat": { @@ -2582,19 +2583,30 @@ } }, "gulp-concat-css": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-concat-css/-/gulp-concat-css-2.3.0.tgz", - "integrity": "sha1-TBWGEhqEEf9LLcRPz6TcdA6P4bY=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gulp-concat-css/-/gulp-concat-css-3.1.0.tgz", + "integrity": "sha512-iLTBPS+cutlgLyK3bp9DMts+WuS8n2mQpjzQ7p/ZVQc8FO5fvpN+ntg9U6jsuNvPeuii82aKm8XeOzF0nUK+TA==", "requires": { - "gulp-util": "~3.0.1", "lodash.defaults": "^3.0.0", "parse-import": "^2.0.0", + "plugin-error": "^0.1.2", "rework": "~1.0.0", "rework-import": "^2.0.0", "rework-plugin-url": "^1.0.1", - "through2": "~1.1.1" + "through2": "~1.1.1", + "vinyl": "^2.1.0" }, "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, "lodash.defaults": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", @@ -2604,6 +2616,11 @@ "lodash.restparam": "^3.0.0" } }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, "through2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", @@ -2612,6 +2629,19 @@ "readable-stream": ">=1.1.13-1 <1.2.0-0", "xtend": ">=4.0.0 <4.1.0-0" } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } } } }, @@ -2626,13 +2656,13 @@ } }, "gulp-copy": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/gulp-copy/-/gulp-copy-1.0.0.tgz", - "integrity": "sha1-PUrKThpt60qisvNsOMhT8pXIuso=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gulp-copy/-/gulp-copy-4.0.1.tgz", + "integrity": "sha512-UbdAwmEiVNNv55KAiUYWOP6Za7h8JPHNNyekNx8Gyc5XRlpUzTrlEclps939nOeiDPsd6jUtT2LmfavJirbZQg==", "requires": { - "gulp": "^3.9.0", - "gulp-util": "^3.0.0", - "through2": "^2.0.0" + "gulp": "^4.0.0", + "plugin-error": "^0.1.2", + "through2": "^2.0.3" } }, "gulp-debug": { @@ -2693,11 +2723,11 @@ } }, "gulp-flatten": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gulp-flatten/-/gulp-flatten-0.3.1.tgz", - "integrity": "sha1-Uef+wTozxARXjRjBWJ0bW8Rf4dY=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-flatten/-/gulp-flatten-0.4.0.tgz", + "integrity": "sha512-eg4spVTAiv1xXmugyaCxWne1oPtNG0UHEtABx5W8ScLiqAYceyYm6GYA36x0Qh8KOIXmAZV97L2aYGnKREG3Sg==", "requires": { - "gulp-util": "^3.0.7", + "plugin-error": "^0.1.2", "through2": "^2.0.0" } }, @@ -2765,7 +2795,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -2820,9 +2850,9 @@ } }, "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.5.tgz", + "integrity": "sha512-7bOIiHvM1GUHIG3LRH+UIanOxyjSys0FbzzgUBlV2cZIIZihEW+KKKKm0ejUBNGvRdhISEFFr6HlptXoa28gtQ==", "requires": { "concat-with-sourcemaps": "*", "lodash.template": "^4.4.0", @@ -2849,19 +2879,11 @@ } }, "gulp-help": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/gulp-help/-/gulp-help-1.6.1.tgz", - "integrity": "sha1-Jh2xhuGDl/7z9qLCLpwxW/qIrgw=", + "version": "github:chmontgomery/gulp-help#4f02f99ab81a322cb892f8998edded13ccb68660", + "from": "github:chmontgomery/gulp-help#gulp4", "requires": { - "chalk": "^1.0.0", - "object-assign": "^3.0.0" - }, - "dependencies": { - "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=" - } + "chalk": "^1.1.1", + "object-assign": "^4.0.1" } }, "gulp-if": { @@ -2875,15 +2897,15 @@ } }, "gulp-json-editor": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.4.2.tgz", - "integrity": "sha512-mUPSsibfnRT04Iy9AfrvC8kfcJZJFYt5qfr6TTQHHBZ1qviz2qqfAf7DLS2Frp33ycyZJvm6n9cwNgV00A95TA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.4.3.tgz", + "integrity": "sha512-cSYh93dbSxIEXiuC0eHUBkrAJA0jS7pWGZ/x0uUt0Hu1xxUt5QuT7C2+wJE0q2YWtlOTz/lxD+HFHP15/Th7lg==", "requires": { - "deepmerge": "^2.1.1", + "deepmerge": "^2.2.1", "detect-indent": "^5.0.0", - "js-beautify": "^1.7.5", + "js-beautify": "^1.8.8", "plugin-error": "^1.0.1", - "through2": "^2.0.3" + "through2": "^3.0.0" }, "dependencies": { "plugin-error": { @@ -2896,16 +2918,43 @@ "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" } + }, + "readable-stream": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", + "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", + "requires": { + "readable-stream": "2 || 3", + "xtend": "~4.0.1" + } } } }, "gulp-less": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.5.0.tgz", - "integrity": "sha512-FQLY7unaHdTOXG0jlwxeBQcWoPPrTMQZRA7HfYwSNi9IPVx5l7GJEN72mG4ri2yigp/f/VNGUAJnFMJHBmH3iw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz", + "integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==", "requires": { - "accord": "^0.28.0", - "less": "2.6.x || ^2.7.1", + "accord": "^0.29.0", + "less": "2.6.x || ^3.7.1", "object-assign": "^4.0.1", "plugin-error": "^0.1.2", "replace-ext": "^1.0.0", @@ -2973,33 +3022,63 @@ } }, "gulp-print": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-2.0.1.tgz", - "integrity": "sha1-Gs7ljqyK8tPErTMp2+RldYOTxBQ=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-5.0.0.tgz", + "integrity": "sha512-i06wVFsGmWdmwrFft/ioNIgXnCvUa+Q4pfgoTCWoLjz95vsfjDy3UmOx1PegHje930fkhopc+5NSJAHbhNXI+g==", "requires": { - "gulp-util": "^3.0.6", - "map-stream": "~0.0.6" + "ansi-colors": "^1.0.1", + "fancy-log": "^1.3.2", + "map-stream": "0.0.7", + "vinyl": "^2.1.0" }, "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, "map-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" - } - } - }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==" - }, - "gulp-replace": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.6.1.tgz", - "integrity": "sha1-Eb+Mj85TPjPi9qjy9DC5VboL4GY=", - "requires": { - "istextorbinary": "1.0.2", - "readable-stream": "^2.0.1", + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "gulp-rename": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", + "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==" + }, + "gulp-replace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", + "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "requires": { + "istextorbinary": "2.2.1", + "readable-stream": "^2.0.1", "replacestream": "^4.0.0" }, "dependencies": { @@ -3010,7 +3089,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -3135,62 +3214,11 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" - } - } - }, - "gulp-watch": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-4.3.11.tgz", - "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", - "requires": { - "anymatch": "^1.3.0", - "chokidar": "^1.6.1", - "glob-parent": "^3.0.1", - "gulp-util": "^3.0.7", - "object-assign": "^4.1.0", - "path-is-absolute": "^1.0.1", - "readable-stream": "^2.2.2", - "slash": "^1.0.0", - "vinyl": "^1.2.0", - "vinyl-file": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" } } }, @@ -3203,19 +3231,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=", "optional": 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.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "optional": true, "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -3239,6 +3267,11 @@ "sparkles": "^1.0.0" } }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3268,23 +3301,6 @@ } } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "optional": true, - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", @@ -3299,12 +3315,12 @@ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "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=", "optional": true, "requires": { - "assert-plus": "^0.2.0", + "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } @@ -3328,14 +3344,6 @@ "resolved": "https://registry.npmjs.org/import-regex/-/import-regex-1.1.0.tgz", "integrity": "sha1-pVxS5McFx2XKIQ6SQqBrvMiqf2Y=" }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, "indx": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", @@ -3432,6 +3440,11 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, "ip-regex": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", @@ -3475,6 +3488,12 @@ } } }, + "is-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-1.0.1.tgz", + "integrity": "sha512-lj035IqdAwsodoRGs9/8+Kn3HPoz9CTuZbcw63afugWonxigvUVeHY5d6Ve1O+s1N3RCk7txo2TIWQLbU0SuNA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3495,7 +3514,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { "builtin-modules": "^1.0.0" @@ -3536,19 +3555,6 @@ } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -3559,27 +3565,24 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -3600,7 +3603,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { @@ -3632,16 +3635,6 @@ "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -3661,6 +3654,12 @@ "is-unc-path": "^1.0.0" } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3680,6 +3679,11 @@ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3707,12 +3711,13 @@ "optional": true }, "istextorbinary": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz", - "integrity": "sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", "requires": { - "binaryextensions": "~1.0.0", - "textextensions": "~1.0.0" + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" } }, "jquery": { @@ -3721,9 +3726,9 @@ "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" }, "js-beautify": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.6.tgz", - "integrity": "sha512-TYDZa+lg8vEC5U0OmGQEEwiZ0XFBfvZAUeNOtqflLe+woKuIqF4JzlsBx/C1KVYW5lUewZy2ODL4Obq6sH7a4Q==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.8.tgz", + "integrity": "sha512-qVNq7ZZ7ZbLdzorvSlRDadS0Rh5oyItaE95v6I4wbbuSiijxn7SnnsV6dvKlcXuO2jX7lK8tn9fBulx34K/Ejg==", "requires": { "config-chain": "~1.1.5", "editorconfig": "^0.15.0", @@ -3734,8 +3739,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "json-schema": { "version": "0.2.3", @@ -3743,11 +3747,16 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "optional": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "optional": true, "requires": { "jsonify": "~0.0.0" } @@ -3761,8 +3770,7 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "optional": true + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsprim": { "version": "1.4.1", @@ -3774,45 +3782,110 @@ "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=", - "optional": true - } } }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, "less": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", + "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", "requires": { + "clone": "^2.1.2", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", - "mime": "^1.2.11", + "mime": "^1.4.1", "mkdirp": "^0.5.0", "promise": "^7.1.1", - "request": "2.81.0", - "source-map": "^0.5.3" + "request": "^2.83.0", + "source-map": "~0.6.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "optional": true } } @@ -3834,7 +3907,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { "graceful-fs": "^4.1.2", @@ -3865,9 +3938,10 @@ } }, "lodash": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "lodash._baseassign": { "version": "3.2.0", @@ -3908,29 +3982,11 @@ "lodash.restparam": "^3.0.0" } }, - "lodash._escapehtmlchar": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", - "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", - "requires": { - "lodash._htmlescapes": "~2.4.1" - } - }, - "lodash._escapestringchar": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", - "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=" - }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, - "lodash._htmlescapes": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", - "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=" - }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", @@ -3961,27 +4017,6 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, - "lodash._reunescapedhtml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", - "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", - "requires": { - "lodash._htmlescapes": "~2.4.1", - "lodash.keys": "~2.4.1" - }, - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - } - } - }, "lodash._root": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", @@ -4010,6 +4045,11 @@ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, "lodash.defaults": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", @@ -4122,45 +4162,20 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "lodash.values": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", - "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", - "requires": { - "lodash.keys": "~2.4.1" - }, - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - } - } - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" - }, "make-error": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", @@ -4187,14 +4202,9 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, "map-stream": { "version": "0.1.0", - "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" }, "map-visit": { @@ -4205,26 +4215,15 @@ "object-visit": "^1.0.0" } }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" } }, "merge-stream": { @@ -4242,7 +4241,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -4291,16 +4290,16 @@ "optional": true }, "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "requires": { - "mime-db": "~1.36.0" + "mime-db": "~1.37.0" } }, "mimic-fn": { @@ -4318,7 +4317,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mixin-deep": { @@ -4342,7 +4341,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -4350,7 +4349,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -4368,6 +4367,11 @@ "duplexer2": "0.0.2" } }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -4397,10 +4401,10 @@ "to-regex": "^3.0.1" } }, - "natives": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.5.tgz", - "integrity": "sha512-1pJ+02gl2KJgCPFtpZGtuD4lGSJnIZvvFHCQTOeDRMSXjfu2GmYWuhI8NFMA4W2I5NNFRbfy/YCiVt4CgNpP8A==" + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "node-notifier": { "version": "5.2.1", @@ -4420,13 +4424,28 @@ } } }, - "node.extend": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.0.tgz", - "integrity": "sha1-dSWih1Z36lNHhKXhCseJVhOWFN8=", + "node-releases": { + "version": "1.0.0-alpha.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.14.tgz", + "integrity": "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==", "requires": { - "is": "^3.2.1" - } + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + } + } + }, + "node.extend": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.0.tgz", + "integrity": "sha1-dSWih1Z36lNHhKXhCseJVhOWFN8=", + "requires": { + "is": "^3.2.1" + } }, "nopt": { "version": "4.0.1", @@ -4449,18 +4468,23 @@ } }, "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "requires": { + "once": "^1.3.2" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -4472,9 +4496,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "optional": true }, "object-assign": { @@ -4510,11 +4534,6 @@ } } }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -4523,6 +4542,24 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "dependencies": { + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + } + } + }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -4543,25 +4580,6 @@ "make-iterator": "^1.0.0" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - } - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -4570,6 +4588,15 @@ "isobject": "^3.0.1" } }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4586,26 +4613,56 @@ "mimic-fn": "^1.0.0" } }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "requires": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.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=" - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -4635,32 +4692,6 @@ "path-root": "^0.1.1" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "parse-import": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-import/-/parse-import-2.0.0.tgz", @@ -4752,16 +4783,16 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { "through": "~2.3" } }, "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=", "optional": true }, "pify": { @@ -4823,7 +4854,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" } } @@ -4886,14 +4917,9 @@ } }, "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "pretty-hrtime": { "version": "1.0.3", @@ -4939,35 +4965,43 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", "optional": true }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "optional": true + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, - "randomatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", - "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "optional": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4989,7 +5023,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { "core-util-is": "~1.0.0", @@ -5020,7 +5054,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -5050,23 +5084,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -5076,6 +5093,25 @@ "safe-regex": "^1.1.0" } }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -5091,19 +5127,21 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", "requires": { - "is-finite": "^1.0.0" + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" } }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" - }, "replacestream": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", @@ -5121,7 +5159,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -5144,33 +5182,31 @@ } }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "optional": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "uuid": "^3.3.2" } }, "require-dir": { @@ -5179,11 +5215,21 @@ "integrity": "sha512-XwZR1Gdv8rme0xLSRmxWNue/xQ5mgIfFGwbBJaF7TbFqQBgEBTr/M1/73a4dfn/keF5WDDiUr6RAF4nA1LskrQ==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, "require-dot-file": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/require-dot-file/-/require-dot-file-0.4.0.tgz", "integrity": "sha1-tb9ValWJXC1ZDl3srUU1cXhQqek=" }, + "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=" + }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -5201,6 +5247,14 @@ "global-modules": "^1.0.0" } }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "requires": { + "value-or-function": "^3.0.0" + } + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -5227,6 +5281,13 @@ "requires": { "convert-source-map": "^0.3.3", "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } } }, "rework-import": { @@ -5355,16 +5416,6 @@ "is-promise": "^2.1.0" } }, - "run-sequence": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.1.tgz", - "integrity": "sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw==", - "requires": { - "chalk": "^1.1.3", - "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2" - } - }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -5401,10 +5452,18 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=" + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.0", @@ -5442,11 +5501,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5544,15 +5598,6 @@ } } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "optional": true, - "requires": { - "hoek": "2.x.x" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5610,7 +5655,7 @@ }, "split": { "version": "0.2.10", - "resolved": "http://registry.npmjs.org/split/-/split-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=", "requires": { "through": "2" @@ -5630,9 +5675,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", "optional": true, "requires": { "asn1": "~0.2.3", @@ -5644,16 +5689,13 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, "stat-mode": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", @@ -5680,16 +5722,16 @@ }, "stream-combiner": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "requires": { "duplexer": "~0.1.1" } }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" }, "stream-shift": { "version": "1.0.0", @@ -5736,29 +5778,14 @@ "is-regexp": "^1.0.0" } }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "optional": true - }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", - "requires": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" - } - }, "strip-bom-buf": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", @@ -5768,68 +5795,6 @@ "is-utf8": "^0.2.1" } }, - "strip-bom-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -5840,6 +5805,15 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "ternary-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.0.1.tgz", @@ -5852,13 +5826,13 @@ } }, "textextensions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-1.0.2.tgz", - "integrity": "sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==" }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -5877,7 +5851,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -5899,10 +5873,20 @@ } } }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, "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.0" } @@ -5920,6 +5904,15 @@ "os-tmpdir": "~1.0.2" } }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -5958,20 +5951,32 @@ "repeat-string": "^1.6.1" } }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "requires": { + "through2": "^2.0.3" + } + }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "optional": true, "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + } } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -5984,8 +5989,12 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "uglify-js": { "version": "2.8.29", @@ -5995,6 +6004,34 @@ "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } } }, "uglify-to-browserify": { @@ -6008,6 +6045,27 @@ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -6041,9 +6099,13 @@ } }, "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } }, "unset-value": { "version": "1.0.0", @@ -6086,6 +6148,20 @@ } } }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "optional": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -6099,16 +6175,17 @@ "ip-regex": "^1.0.1" } }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6121,11 +6198,11 @@ "optional": true }, "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", + "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", "requires": { - "user-home": "^1.1.1" + "homedir-polyfill": "^1.0.1" } }, "validate-npm-package-license": { @@ -6137,6 +6214,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -6146,14 +6228,6 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } } }, "vinyl": { @@ -6164,98 +6238,144 @@ "clone": "^1.0.0", "clone-stats": "^0.0.1", "replace-ext": "0.0.1" + }, + "dependencies": { + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + } } }, - "vinyl-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", - "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "is-utf8": "^0.2.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" } }, "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" }, "dependencies": { "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "remove-trailing-separator": "^1.0.1" } }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -6281,6 +6401,11 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -6291,6 +6416,35 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6306,6 +6460,11 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -6321,20 +6480,62 @@ } }, "yargs": { - "version": "3.10.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "camelcase": "^3.0.0" }, "dependencies": { "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" } } } diff --git a/package.json b/package.json index 4e4541f07c..26c790a996 100644 --- a/package.json +++ b/package.json @@ -42,57 +42,55 @@ "gulp-replace": "*", "gulp-rtlcss": "*", "gulp-uglify": "*", - "gulp-util": "*", - "gulp-watch": "*", "map-stream": "*", + "replace-ext": "*", "require-dot-file": "*", - "run-sequence": "*", "yamljs": "*" }, "dependencies": { "better-console": "*", "del": "^3.0.0", - "extend": "^3.0.1", - "gulp": "^3.9.1", - "gulp-autoprefixer": "^4.0.0", + "extend": "^3.0.2", + "gulp": "^4.0.0", + "gulp-autoprefixer": "^6.0.0", "gulp-chmod": "^2.0.0", - "gulp-clone": "^1.1.3", + "gulp-clean-css": "^3.10.0", + "gulp-clone": "^2.0.1", "gulp-concat": "^2.6.1", - "gulp-concat-css": "^2.3.0", - "gulp-copy": "1.0.0", + "gulp-concat-css": "^3.1.0", + "gulp-copy": "^4.0.0", "gulp-dedupe": "0.0.2", - "gulp-flatten": "^0.3.1", - "gulp-header": "^1.8.9", - "gulp-help": "^1.6.1", + "gulp-flatten": "^0.4.0", + "gulp-header": "^2.0.5", + "gulp-help": "github:chmontgomery/gulp-help#gulp4", "gulp-if": "^2.0.2", - "gulp-json-editor": "^2.2.1", - "gulp-less": "^3.3.2", - "gulp-clean-css": "^3.7.0", + "gulp-json-editor": "^2.4.3", + "gulp-less": "^4.0.1", "gulp-notify": "^3.0.0", "gulp-plumber": "^1.1.0", - "gulp-print": "^2.0.1", - "prompt-sui": "^3.2.1", - "gulp-rename": "^1.2.2", - "gulp-replace": "^0.6.1", - "gulp-rtlcss": "^1.0.0", - "gulp-uglify": "^3.0.0", - "gulp-util": "^3.0.8", - "gulp-watch": "^4.3.11", + "gulp-print": "^5.0.0", + "gulp-rename": "^1.4.0", + "gulp-replace": "^1.0.0", + "gulp-rtlcss": "^1.3.0", + "gulp-uglify": "^3.0.1", "jquery": "^3.2.1", "map-stream": "^0.1.0", "merge-stream": "^1.0.0", "mkdirp": "^0.5.1", + "normalize-path": "^3.0.0", + "prompt-sui": "^3.2.1", + "replace-ext": "^1.0.0", "require-dot-file": "^0.4.0", - "run-sequence": "^2.1.0", "wrench-sui": "^0.0.3", "yamljs": "^0.3.0" }, "devDependencies": { - "github": "*", + "@octokit/rest": "*", "gulp-concat-filenames": "*", "gulp-debug": "*", "gulp-git": "*", "gulp-tap": "*", + "less": "^3.7.0", "merge-stream": "*" }, "style": "dist/semantic.css" diff --git a/tasks/admin/components/create.js b/tasks/admin/components/create.js index 3d4ed6d3be..58e377fbfa 100644 --- a/tasks/admin/components/create.js +++ b/tasks/admin/components/create.js @@ -18,23 +18,17 @@ var gulp = require('gulp'), // node dependencies - console = require('better-console'), - del = require('del'), fs = require('fs'), path = require('path'), - runSequence = require('run-sequence'), // admin dependencies concatFileNames = require('gulp-concat-filenames'), - debug = require('gulp-debug'), flatten = require('gulp-flatten'), - git = require('gulp-git'), jsonEditor = require('gulp-json-editor'), plumber = require('gulp-plumber'), rename = require('gulp-rename'), replace = require('gulp-replace'), tap = require('gulp-tap'), - util = require('gulp-util'), // config config = require('../../config/user'), @@ -137,17 +131,17 @@ module.exports = function(callback) { ; // copy dist files into output folder adjusting asset paths - gulp.task(task.repo, false, function() { + function copyDist() { return gulp.src(release.source + component + '.*') .pipe(plumber()) .pipe(flatten()) .pipe(replace(release.paths.source, release.paths.output)) .pipe(gulp.dest(outputDirectory)) ; - }); + } // create npm module - gulp.task(task.npm, false, function() { + function createNpmModule() { return gulp.src(release.source + component + '!(*.min|*.map).js') .pipe(plumber()) .pipe(flatten()) @@ -159,10 +153,10 @@ module.exports = function(callback) { .pipe(rename('index.js')) .pipe(gulp.dest(outputDirectory)) ; - }); + } // create readme - gulp.task(task.readme, false, function() { + function createReadme() { return gulp.src(release.templates.readme) .pipe(plumber()) .pipe(flatten()) @@ -170,10 +164,10 @@ module.exports = function(callback) { .pipe(replace(regExp.match.titleName, regExp.replace.titleName)) .pipe(gulp.dest(outputDirectory)) ; - }); + } // extend bower.json - gulp.task(task.bower, false, function() { + function extendBower() { return gulp.src(release.templates.bower) .pipe(plumber()) .pipe(flatten()) @@ -205,10 +199,10 @@ module.exports = function(callback) { })) .pipe(gulp.dest(outputDirectory)) ; - }); + } // extend package.json - gulp.task(task.package, false, function() { + function extendPackage() { return gulp.src(release.templates.package) .pipe(plumber()) .pipe(flatten()) @@ -233,10 +227,10 @@ module.exports = function(callback) { })) .pipe(gulp.dest(outputDirectory)) ; - }); + } // extend composer.json - gulp.task(task.composer, false, function() { + function extendComposer(){ return gulp.src(release.templates.composer) .pipe(plumber()) .pipe(flatten()) @@ -256,10 +250,10 @@ module.exports = function(callback) { })) .pipe(gulp.dest(outputDirectory)) ; - }); + } // create release notes - gulp.task(task.notes, false, function() { + function createReleaseNotes() { return gulp.src(release.templates.notes) .pipe(plumber()) .pipe(flatten()) @@ -271,10 +265,10 @@ module.exports = function(callback) { .pipe(replace(regExp.match.trim, regExp.replace.trim)) .pipe(gulp.dest(outputDirectory)) ; - }); + } // Creates meteor package.js - gulp.task(task.meteor, function() { + function createMeteorPackage() { var filenames = '' ; @@ -306,27 +300,20 @@ module.exports = function(callback) { ; }) ; - }); - - - // synchronous tasks in orchestrator? I think not - gulp.task(task.all, false, function(callback) { - runSequence([ - task.repo, - task.npm, - task.bower, - task.readme, - task.package, - task.composer, - task.notes, - task.meteor - ], callback); - }); - - tasks.push(task.all); + } + tasks.push(gulp.series( + copyDist, + createNpmModule, + extendBower, + createReadme, + extendPackage, + extendComposer, + createReleaseNotes, + createMeteorPackage + )); })(component); } - runSequence(tasks, callback); + gulp.series(...tasks)(callback); }; diff --git a/tasks/admin/components/init.js b/tasks/admin/components/init.js index 168f8dfc02..c9f627af9a 100644 --- a/tasks/admin/components/init.js +++ b/tasks/admin/components/init.js @@ -21,7 +21,6 @@ var fs = require('fs'), path = require('path'), git = require('gulp-git'), - githubAPI = require('github'), mkdirp = require('mkdirp'), // admin files diff --git a/tasks/admin/components/update.js b/tasks/admin/components/update.js index d69501b474..276c9e21fe 100644 --- a/tasks/admin/components/update.js +++ b/tasks/admin/components/update.js @@ -20,8 +20,6 @@ var fs = require('fs'), path = require('path'), git = require('gulp-git'), - githubAPI = require('github'), - requireDotFile = require('require-dot-file'), // admin files github = require('../../config/admin/github.js'), diff --git a/tasks/admin/distributions/create.js b/tasks/admin/distributions/create.js index 732707f85e..6fe6921643 100644 --- a/tasks/admin/distributions/create.js +++ b/tasks/admin/distributions/create.js @@ -13,23 +13,16 @@ var gulp = require('gulp'), // node dependencies - console = require('better-console'), - del = require('del'), fs = require('fs'), path = require('path'), - runSequence = require('run-sequence'), mergeStream = require('merge-stream'), // admin dependencies - concatFileNames = require('gulp-concat-filenames'), - debug = require('gulp-debug'), flatten = require('gulp-flatten'), - git = require('gulp-git'), jsonEditor = require('gulp-json-editor'), plumber = require('gulp-plumber'), rename = require('gulp-rename'), replace = require('gulp-replace'), - tap = require('gulp-tap'), // config config = require('../../config/user'), @@ -129,24 +122,23 @@ module.exports = function(callback) { return filenames; }; - - gulp.task(task.meteor, function() { - var - files = gatherFiles(outputDirectory), - filenames = createList(files) - ; - gulp.src(release.templates.meteor[distLowerCase]) - .pipe(plumber()) - .pipe(flatten()) - .pipe(replace(regExp.match.version, version)) - .pipe(replace(regExp.match.files, filenames)) - .pipe(rename(release.files.meteor)) - .pipe(gulp.dest(outputDirectory)) - ; + tasks.push(function() { + var + files = gatherFiles(outputDirectory), + filenames = createList(files) + ; + gulp.src(release.templates.meteor[distLowerCase]) + .pipe(plumber()) + .pipe(flatten()) + .pipe(replace(regExp.match.version, version)) + .pipe(replace(regExp.match.files, filenames)) + .pipe(rename(release.files.meteor)) + .pipe(gulp.dest(outputDirectory)) + ; }); if(distribution == 'CSS') { - gulp.task(task.repo, function() { + tasks.push(function() { var themes, components, @@ -165,7 +157,7 @@ module.exports = function(callback) { }); } else if(distribution == 'LESS') { - gulp.task(task.repo, function() { + tasks.push(function() { var definitions, themeImport, @@ -196,7 +188,7 @@ module.exports = function(callback) { } // extend package.json - gulp.task(task.package, function() { + tasks.push(function() { return gulp.src(packageFile) .pipe(plumber()) .pipe(jsonEditor(function(package) { @@ -209,11 +201,8 @@ module.exports = function(callback) { ; }); - tasks.push(task.meteor); - tasks.push(task.repo); - tasks.push(task.package); - })(distribution); } - runSequence(tasks, callback); + + gulp.series(...tasks)(callback); }; \ No newline at end of file diff --git a/tasks/admin/distributions/init.js b/tasks/admin/distributions/init.js index 8ed75a0cac..124e13167d 100644 --- a/tasks/admin/distributions/init.js +++ b/tasks/admin/distributions/init.js @@ -21,7 +21,6 @@ var fs = require('fs'), path = require('path'), git = require('gulp-git'), - githubAPI = require('github'), mkdirp = require('mkdirp'), // admin files diff --git a/tasks/admin/distributions/update.js b/tasks/admin/distributions/update.js index 1fce7d2e8b..bc3614b6a5 100644 --- a/tasks/admin/distributions/update.js +++ b/tasks/admin/distributions/update.js @@ -20,8 +20,6 @@ var fs = require('fs'), path = require('path'), git = require('gulp-git'), - githubAPI = require('github'), - requireDotFile = require('require-dot-file'), // admin files github = require('../../config/admin/github.js'), diff --git a/tasks/admin/publish.js b/tasks/admin/publish.js index e80c86a50c..f969e177f2 100644 --- a/tasks/admin/publish.js +++ b/tasks/admin/publish.js @@ -1,6 +1,6 @@ /******************************* - Release All -*******************************/ + * Release All + *******************************/ /* This task update all SUI individual component repos with new versions of components @@ -10,16 +10,15 @@ */ var - runSequence = require('run-sequence') + gulp = require('gulp') ; /* Release All */ -module.exports = function(callback) { +module.exports = function (callback) { - runSequence( + gulp.series( 'update distributions', // commit less/css versions to github 'update components', // commit components to github - callback - ); + )(callback); }; \ No newline at end of file diff --git a/tasks/admin/release.js b/tasks/admin/release.js index a247e8bfac..87962affe3 100644 --- a/tasks/admin/release.js +++ b/tasks/admin/release.js @@ -1,6 +1,6 @@ /******************************* - Release -*******************************/ + * Release + *******************************/ /* This task update all SUI individual component repos with new versions of components @@ -11,19 +11,18 @@ */ var - runSequence = require('run-sequence') + gulp = require('gulp') ; /* Release All */ -module.exports = function(callback) { +module.exports = function (callback) { - runSequence( + gulp.series( //'build', // build Semantic 'init distributions', // sync with current github version 'create distributions', // update each repo with changes from master repo 'init components', // sync with current github version 'create components', // update each repo - callback - ); + )(callback); }; \ No newline at end of file diff --git a/tasks/build.js b/tasks/build.js index 56ea879242..60ecb6867d 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,50 +1,23 @@ /******************************* - Build Task -*******************************/ + * Build Task + *******************************/ var // dependencies - gulp = require('gulp-help')(require('gulp')), - runSequence = require('run-sequence'), + gulp = require('gulp-help')(require('gulp')), // config - config = require('./config/user'), - install = require('./config/project/install'), - - // task sequence - tasks = [] + install = require('./config/project/install') ; - -// sub-tasks -if(config.rtl) { - require('./collections/rtl')(gulp); -} -require('./collections/build')(gulp); - - -module.exports = function(callback) { +module.exports = function (callback) { console.info('Building Semantic'); - if( !install.isSetup() ) { + if (!install.isSetup()) { console.error('Cannot find semantic.json. Run "gulp install" to set-up Semantic'); return 1; } - // check for right-to-left (RTL) language - if(config.rtl === true || config.rtl === 'Yes') { - gulp.start('build-rtl'); - return; - } - - if(config.rtl == 'both') { - tasks.push('build-rtl'); - } - - tasks.push('build-javascript'); - tasks.push('build-css'); - tasks.push('build-assets'); - - runSequence(tasks, callback); + gulp.series('build-css', 'build-javascript', 'build-assets')(callback); }; diff --git a/tasks/build/assets.js b/tasks/build/assets.js index bc37ad993c..698d1f4adc 100644 --- a/tasks/build/assets.js +++ b/tasks/build/assets.js @@ -1,35 +1,63 @@ /******************************* - Build Task -*******************************/ + Build Task + *******************************/ var - gulp = require('gulp'), + gulp = require('gulp'), // gulp dependencies - chmod = require('gulp-chmod'), - gulpif = require('gulp-if'), + chmod = require('gulp-chmod'), + gulpif = require('gulp-if'), + normalize = require('normalize-path'), + print = require('gulp-print').default, // config - config = require('../config/user'), - tasks = require('../config/tasks'), + config = require('../config/user'), + tasks = require('../config/tasks'), + install = require('../config/project/install'), - // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, - - log = tasks.log + log = tasks.log ; -module.exports = function(callback) { - - console.info('Building assets'); - - // copy assets - return gulp.src(source.themes + '/**/assets/**/*.*') +function build(src, config) { + return gulp.src(src, {base: config.paths.source.themes}) .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - ; + .pipe(gulp.dest(config.paths.output.themes)) + .pipe(print(log.created)) + ; +} + +function buildAssets(src, config, callback) { + if (!install.isSetup()) { + console.error('Cannot build assets. Run "gulp install" to set-up Semantic'); + callback(); + return; + } + + if (callback === undefined) { + callback = config; + config = src; + src = config.paths.source.themes + '/**/assets/**/*.*'; + } -}; \ No newline at end of file + // copy assets + var assets = () => build(src, config); + assets.displayName = "Building Assets"; + + gulp.series(assets)(callback); +} + +module.exports = function (callback) { + buildAssets(config, callback); +}; + +module.exports.watch = function (type, config) { + gulp + .watch([normalize(config.paths.source.themes + '/**/assets/**/*.*')]) + .on('all', function (event, path) { + console.log('Change in assets detected'); + return gulp.series((callback) => buildAssets(path, config, callback))(); + }); +}; + +module.exports.buildAssets = buildAssets; \ No newline at end of file diff --git a/tasks/build/css.js b/tasks/build/css.js index 6f579d82da..79afffc640 100644 --- a/tasks/build/css.js +++ b/tasks/build/css.js @@ -1,113 +1,251 @@ /******************************* - Build Task -*******************************/ + * Build Task + *******************************/ -var +const gulp = require('gulp'), // node dependencies console = require('better-console'), - fs = require('fs'), // gulp dependencies autoprefixer = require('gulp-autoprefixer'), chmod = require('gulp-chmod'), - clone = require('gulp-clone'), + concatCSS = require('gulp-concat-css'), + dedupe = require('gulp-dedupe'), flatten = require('gulp-flatten'), gulpif = require('gulp-if'), + header = require('gulp-header'), less = require('gulp-less'), minifyCSS = require('gulp-clean-css'), + normalize = require('normalize-path'), plumber = require('gulp-plumber'), - print = require('gulp-print'), + print = require('gulp-print').default, rename = require('gulp-rename'), replace = require('gulp-replace'), - runSequence = require('run-sequence'), + replaceExt = require('replace-ext'), + rtlcss = require('gulp-rtlcss'), // config - config = require('../config/user'), + config = require('./../config/user'), + docsConfig = require('./../config/docs'), tasks = require('../config/tasks'), install = require('../config/project/install'), // shorthand globs = config.globs, assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, banner = tasks.banner, + filenames = tasks.filenames, comments = tasks.regExp.comments, log = tasks.log, settings = tasks.settings ; -// add internal tasks (concat release) -require('../collections/internal')(gulp); - -module.exports = function(callback) { - - var - tasksCompleted = 0, - maybeCallback = function() { - tasksCompleted++; - if(tasksCompleted === 2) { - callback(); - } - }, - - stream, - compressedStream, - uncompressedStream - ; - - console.info('Building CSS'); - - if( !install.isSetup() ) { - console.error('Cannot build files. Run "gulp install" to set-up Semantic'); - return; +/** + * Builds the css + * @param src + * @param type + * @param compress + * @param config + * @param opts + * @return {*} + */ +function build(src, type, compress, config, opts) { + let fileExtension; + if (type === 'rtl' && compress) { + fileExtension = settings.rename.rtlMinCSS; + } else if (type === 'rtl') { + fileExtension = settings.rename.rtlCSS; + } else if (compress) { + fileExtension = settings.rename.minCSS; } - // unified css stream - stream = gulp.src(source.definitions + '/**/' + globs.components + '.less') + return gulp.src(src, opts) .pipe(plumber(settings.plumber.less)) .pipe(less(settings.less)) .pipe(autoprefixer(settings.prefix)) + .pipe(gulpif(type === 'rtl', rtlcss())) .pipe(replace(comments.variables.in, comments.variables.out)) .pipe(replace(comments.license.in, comments.license.out)) .pipe(replace(comments.large.in, comments.large.out)) .pipe(replace(comments.small.in, comments.small.out)) .pipe(replace(comments.tiny.in, comments.tiny.out)) .pipe(flatten()) - ; - - // two concurrent streams from same source to concat release - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - // uncompressed component css - uncompressedStream - .pipe(plumber()) - .pipe(replace(assets.source, assets.uncompressed)) + .pipe(replace(config.paths.assets.source, + compress ? config.paths.assets.compressed : config.paths.assets.uncompressed)) + .pipe(gulpif(compress, minifyCSS(settings.minify))) + .pipe(gulpif(fileExtension, rename(fileExtension))) .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) + .pipe(gulp.dest(compress ? config.paths.output.compressed : config.paths.output.uncompressed)) .pipe(print(log.created)) - .on('end', function() { - runSequence('package uncompressed css', maybeCallback); - }) - ; + ; +} + +/** + * Packages the css files in dist + * @param {string} type - type of the css processing (none, rtl, docs) + * @param {boolean} compress - should the output be compressed + */ +function pack(type, compress) { + const output = type === 'docs' ? docsConfig.paths.output : config.paths.output; + const ignoredGlobs = type === 'rtl' ? globs.ignoredRTL + '.rtl.css' : globs.ignored + '.css'; + + let concatenatedCSS; + if (type === 'rtl') { + concatenatedCSS = compress ? filenames.concatenatedMinifiedRTLCSS : filenames.concatenatedRTLCSS; + } else { + concatenatedCSS = compress ? filenames.concatenatedMinifiedCSS : filenames.concatenatedCSS; + } - // compressed component css - compressedStream = stream + return gulp.src(output.uncompressed + '/**/' + globs.components + ignoredGlobs) .pipe(plumber()) - .pipe(clone()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.minCSS)) + .pipe(dedupe()) + .pipe(replace(assets.uncompressed, assets.packaged)) + .pipe(concatCSS(concatenatedCSS, settings.concatCSS)) .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.compressed)) + .pipe(gulpif(compress, minifyCSS(settings.concatMinify))) + .pipe(header(banner, settings.header)) + .pipe(gulp.dest(output.packaged)) .pipe(print(log.created)) - .on('end', function() { - runSequence('package compressed css', maybeCallback); - }) - ; + ; +} + +function buildCSS(src, type, config, opts, callback) { + if (!install.isSetup()) { + console.error('Cannot build CSS files. Run "gulp install" to set-up Semantic'); + callback(); + return; + } + + if (callback === undefined) { + callback = opts; + opts = config; + config = type; + type = src; + src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; + } + + const buildUncompressed = () => build(src, type, false, config, opts); + buildUncompressed.displayName = 'Building uncompressed CSS'; + const buildCompressed = () => build(src, type, true, config, opts); + buildCompressed.displayName = 'Building compressed CSS'; + + const packUncompressed = () => pack(type, false); + packUncompressed.displayName = 'Packing uncompressed CSS'; + + const packCompressed = () => pack(type, true); + packCompressed.displayName = 'Packing compressed CSS'; + + gulp.parallel( + gulp.series(buildUncompressed, packUncompressed), + gulp.series(buildCompressed, packCompressed) + )(callback); +} + +function rtlAndNormal(src, callback) { + if (callback === undefined) { + callback = src; + src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; + } + + const rtl = (callback) => buildCSS(src, 'rtl', config, {}, callback); + rtl.displayName = "CSS Right-To-Left"; + const css = (callback) => buildCSS(src, 'default', config, {}, callback); + css.displayName = "CSS"; + + if (config.rtl === true || config.rtl === 'Yes') { + rtl(callback); + } else if (config.rtl === 'both') { + gulp.series(rtl, css)(callback); + } else { + css(callback); + } +} + +function docs(src, callback) { + if (callback === undefined) { + callback = src; + src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; + } + + const func = (callback) => buildCSS(src, 'docs', config, {}, callback); + func.displayName = "CSS Docs"; + + func(callback); +} + +// Default tasks +module.exports = rtlAndNormal; + +// We keep the changed files in an array to call build with all of them at the same time +let timeout, files = []; + +/** + * Watch changes in CSS files and call the correct build pipe + * @param type + * @param config + */ +module.exports.watch = function (type, config) { + const method = type === 'docs' ? docs : rtlAndNormal; + + // Watch theme.config file + gulp.watch([normalize(config.paths.source.config)]) + .on('all', function () { + // Clear timeout and reset files + timeout && clearTimeout(timeout); + files = []; + return gulp.series(method)(); + }); + + // Watch any less / overrides / variables files + gulp.watch([ + normalize(config.paths.source.definitions + '/**/*.less'), + normalize(config.paths.source.site + '/**/*.{overrides,variables}'), + normalize(config.paths.source.themes + '/**/*.{overrides,variables}') + ]) + .on('all', function (event, path) { + // We don't handle deleted files yet + if (event === 'unlink' || event === 'unlinkDir') { + return; + } + + // Clear timeout + timeout && clearTimeout(timeout); + + // Determine which LESS file has to be recompiled + let lessPath; + if (path.indexOf(config.paths.source.themes) !== -1) { + console.log('Change detected in packaged theme'); + lessPath = replaceExt(path, '.less'); + lessPath = lessPath.replace(tasks.regExp.theme, config.paths.source.definitions); + } else if (path.indexOf(config.paths.source.site) !== -1) { + console.log('Change detected in site theme'); + lessPath = replaceExt(path, '.less'); + lessPath = lessPath.replace(config.paths.source.site, config.paths.source.definitions); + } else { + console.log('Change detected in definition'); + lessPath = path; + } + + // Add file to internal changed files array + if (!files.includes(lessPath)) { + files.push(lessPath); + } + + // Update timeout + timeout = setTimeout(() => { + // Copy files to build in another array + const buildFiles = [...files]; + // Call method + gulp.series((callback) => method(buildFiles, callback))(); + // Reset internal changed files array + files = []; + }, 1000); + }); }; + +// Expose build css method +module.exports.buildCSS = buildCSS; \ No newline at end of file diff --git a/tasks/build/javascript.js b/tasks/build/javascript.js index f99c1304f2..3d521d3e21 100644 --- a/tasks/build/javascript.js +++ b/tasks/build/javascript.js @@ -1,77 +1,152 @@ /******************************* - Build Task -*******************************/ + Build Task + *******************************/ -var - gulp = require('gulp'), +const + gulp = require('gulp'), // node dependencies - console = require('better-console'), - fs = require('fs'), + console = require('better-console'), // gulp dependencies - chmod = require('gulp-chmod'), - flatten = require('gulp-flatten'), - gulpif = require('gulp-if'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), + chmod = require('gulp-chmod'), + concat = require('gulp-concat'), + dedupe = require('gulp-dedupe'), + flatten = require('gulp-flatten'), + gulpif = require('gulp-if'), + header = require('gulp-header'), + normalize = require('normalize-path'), + plumber = require('gulp-plumber'), + print = require('gulp-print').default, + rename = require('gulp-rename'), + replace = require('gulp-replace'), + uglify = require('gulp-uglify'), // config - config = require('../config/user'), - tasks = require('../config/tasks'), - install = require('../config/project/install'), + config = require('./../config/user'), + docsConfig = require('./../config/docs'), + tasks = require('../config/tasks'), + install = require('../config/project/install'), // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, - - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings -; - -// add internal tasks (concat release) -require('../collections/internal')(gulp); - -module.exports = function(callback) { - - var - stream, - compressedStream, - uncompressedStream - ; + globs = config.globs, + assets = config.paths.assets, - console.info('Building Javascript'); - - if( !install.isSetup() ) { - console.error('Cannot build files. Run "gulp install" to set-up Semantic'); - return; - } + banner = tasks.banner, + filenames = tasks.filenames, + comments = tasks.regExp.comments, + log = tasks.log, + settings = tasks.settings +; - // copy source javascript - gulp.src(source.definitions + '/**/' + globs.components + '.js') +/** + * Concat and uglify the Javascript files + * @param {string|array} src - source files + * @param type + * @param config + * @return {*} + */ +function build(src, type, config) { + return gulp.src(src) .pipe(plumber()) .pipe(flatten()) .pipe(replace(comments.license.in, comments.license.out)) - .pipe(gulp.dest(output.uncompressed)) + .pipe(gulp.dest(config.paths.output.uncompressed)) .pipe(gulpif(config.hasPermission, chmod(config.permission))) .pipe(print(log.created)) .pipe(uglify(settings.uglify)) .pipe(rename(settings.rename.minJS)) - .pipe(gulp.dest(output.compressed)) + .pipe(header(banner, settings.header)) + .pipe(gulp.dest(config.paths.output.compressed)) + .pipe(gulpif(config.hasPermission, chmod(config.permission))) + .pipe(print(log.created)) + ; +} + +/** + * Packages the Javascript files in dist + * @param {string} type - type of the js processing (none, rtl, docs) + * @param {boolean} compress - should the output be compressed + */ +function pack(type, compress) { + const output = type === 'docs' ? docsConfig.paths.output : config.paths.output; + const concatenatedJS = compress ? filenames.concatenatedMinifiedJS : filenames.concatenatedJS; + + return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js') + .pipe(plumber()) + .pipe(dedupe()) + .pipe(replace(assets.uncompressed, assets.packaged)) + .pipe(concat(concatenatedJS)) + .pipe(gulpif(compress, uglify(settings.concatUglify))) + .pipe(header(banner, settings.header)) .pipe(gulpif(config.hasPermission, chmod(config.permission))) + .pipe(gulp.dest(output.packaged)) .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed js'); - gulp.start('package uncompressed js'); - callback(); - }) - ; - -}; \ No newline at end of file + ; +} + +function buildJS(src, type, config, callback) { + if (!install.isSetup()) { + console.error('Cannot build Javascript. Run "gulp install" to set-up Semantic'); + callback(); + return; + } + + if (callback === undefined) { + callback = config; + config = type; + type = src; + src = config.paths.source.definitions + '/**/' + config.globs.components + (config.globs.ignored || '') + '.js'; + } + + // copy source javascript + const js = () => build(src, type, config); + js.displayName = "Building un/compressed Javascript"; + + const packUncompressed = () => pack(type, false); + packUncompressed.displayName = 'Packing uncompressed Javascript'; + + const packCompressed = () => pack(type, true); + packCompressed.displayName = 'Packing compressed Javascript'; + + gulp.series(js, gulp.parallel(packUncompressed, packCompressed))(callback); +} + +module.exports = function (callback) { + buildJS(false, config, callback); +}; + +// We keep the changed files in an array to call build with all of them at the same time +let timeout, files = []; + +module.exports.watch = function (type, config) { + gulp + .watch([normalize(config.paths.source.definitions + '/**/*.js')]) + .on('all', function (event, path) { + // We don't handle deleted files yet + if (event === 'unlink' || event === 'unlinkDir') { + return; + } + + // Clear timeout + timeout && clearTimeout(timeout); + + // Add file to internal changed files array + if (!files.includes(path)) { + files.push(path); + } + + // Update timeout + timeout = setTimeout(() => { + console.log('Change in javascript detected'); + // Copy files to build in another array + const buildFiles = [...files]; + // Call method + gulp.series((callback) => buildJS(buildFiles, type, config, callback))(); + // Reset internal changed files array + files = []; + }, 1000); + }); +}; + +module.exports.buildJS = buildJS; \ No newline at end of file diff --git a/tasks/check-install.js b/tasks/check-install.js index 9bab87e87d..a82297e82f 100644 --- a/tasks/check-install.js +++ b/tasks/check-install.js @@ -1,28 +1,27 @@ /******************************* - Check Install -*******************************/ + * Check Install + *******************************/ var // node dependencies - gulp = require('gulp'), - fs = require('fs'), - console = require('better-console'), - install = require('./config/project/install') + gulp = require('gulp'), + console = require('better-console'), + isSetup = require('./config/project/install').isSetup, + + install = require('./install'), + watch = require('./watch') ; // export task -module.exports = function() { +module.exports = function (callback) { - setTimeout(function() { - if( !install.isSetup() ) { + setTimeout(function () { + if (!isSetup()) { console.log('Starting install...'); - gulp.start('install'); - return; - } - else { - gulp.start('watch'); + install(callback); + } else { + watch(callback); } }, 50); // Delay to allow console.clear to remove messages from check event - }; \ No newline at end of file diff --git a/tasks/clean.js b/tasks/clean.js index f435b4e240..262cf21d74 100644 --- a/tasks/clean.js +++ b/tasks/clean.js @@ -9,6 +9,6 @@ var ; // cleans distribution files -module.exports = function(callback) { - return del([config.paths.clean], tasks.settings.del, callback); +module.exports = function() { + return del([config.paths.clean], tasks.settings.del); }; \ No newline at end of file diff --git a/tasks/collections/admin.js b/tasks/collections/admin.js index a384d1faba..4a40c1f5e8 100644 --- a/tasks/collections/admin.js +++ b/tasks/collections/admin.js @@ -1,6 +1,6 @@ /******************************* - Admin Task Collection -*******************************/ + * Admin Task Collection + *******************************/ /* This are tasks to be run by project maintainers @@ -10,11 +10,11 @@ */ /******************************* - Tasks -*******************************/ + * Tasks + *******************************/ -module.exports = function(gulp) { +module.exports = function (gulp) { var // less/css distributions initComponents = require('../admin/components/init'), @@ -32,18 +32,33 @@ module.exports = function(gulp) { ; /* Release */ - gulp.task('init distributions', 'Grabs each component from GitHub', initDistributions); - gulp.task('create distributions', 'Updates files in each repo', createDistributions); - gulp.task('init components', 'Grabs each component from GitHub', initComponents); - gulp.task('create components', 'Updates files in each repo', createComponents); + gulp.task('init distributions', initDistributions); + gulp.task('init distributions').description = 'Grabs each component from GitHub'; + + gulp.task('create distributions', createDistributions); + gulp.task('create distributions').description = 'Updates files in each repo'; + + gulp.task('init components', initComponents); + gulp.task('init components').description = 'Grabs each component from GitHub'; + + gulp.task('create components', createComponents); + gulp.task('create components').description = 'Updates files in each repo'; /* Publish */ - gulp.task('update distributions', 'Commits component updates from create to GitHub', updateDistributions); - gulp.task('update components', 'Commits component updates from create to GitHub', updateComponents); + gulp.task('update distributions', updateDistributions); + gulp.task('update distributions').description = 'Commits component updates from create to GitHub'; + + gulp.task('update components', updateComponents); + gulp.task('update components').description = 'Commits component updates from create to GitHub'; /* Tasks */ - gulp.task('release', 'Stages changes in GitHub repos for all distributions', release); - gulp.task('publish', 'Publishes all releases (components, package)', publish); - gulp.task('register', 'Registers all packages with NPM', register); + gulp.task('release', release); + gulp.task('release').description = 'Stages changes in GitHub repos for all distributions'; + + gulp.task('publish', publish); + gulp.task('publish').description = 'Publishes all releases (components, package)'; + + gulp.task('register', register); + gulp.task('register').description = 'Registers all packages with NPM'; }; \ No newline at end of file diff --git a/tasks/collections/build.js b/tasks/collections/build.js index f7ea287673..4750e2fb3b 100644 --- a/tasks/collections/build.js +++ b/tasks/collections/build.js @@ -1,19 +1,32 @@ /******************************* - Define Sub-Tasks -*******************************/ + * Define Build Sub-Tasks + *******************************/ -module.exports = function(gulp) { +module.exports = function (gulp) { - var - // build sub-tasks - buildJS = require('./../build/javascript'), - buildCSS = require('./../build/css'), - buildAssets = require('./../build/assets') + // build sub-tasks + const + watch = require('./../watch'), + + build = require('./../build'), + buildJS = require('./../build/javascript'), + buildCSS = require('./../build/css'), + buildAssets = require('./../build/assets') ; - // in case these tasks are undefined during import, less make sure these are available in scope - gulp.task('build-javascript', 'Builds all javascript from source', buildJS); - gulp.task('build-css', 'Builds all css from source', buildCSS); - gulp.task('build-assets', 'Copies all assets from source', buildAssets); + gulp.task('watch', watch); + gulp.task('watch').description = 'Watch for site/theme changes'; + + gulp.task('build', build); + gulp.task('build').description = 'Builds all files from source'; + + gulp.task('build-javascript', buildJS); + gulp.task('build-javascript').description = 'Builds all javascript from source'; + + gulp.task('build-css', buildCSS); + gulp.task('build-css').description = 'Builds all css from source'; + + gulp.task('build-assets', buildAssets); + gulp.task('build-assets').description = 'Copies all assets from source'; }; diff --git a/tasks/collections/docs.js b/tasks/collections/docs.js new file mode 100644 index 0000000000..ffb9452405 --- /dev/null +++ b/tasks/collections/docs.js @@ -0,0 +1,23 @@ +/******************************* + * Define Docs Sub-Tasks + *******************************/ + +/* + Lets you serve files to a local documentation instance + https://github.com/Semantic-Org/Semantic-UI-Docs/ +*/ +module.exports = function (gulp) { + + var + // docs tasks + serveDocs = require('./../docs/serve'), + buildDocs = require('./../docs/build') + ; + + gulp.task('serve-docs', serveDocs); + gulp.task('serve-docs').description = 'Serve file changes to SUI Docs'; + + gulp.task('build-docs', buildDocs); + gulp.task('build-docs').description = 'Build all files and add to SUI Docs'; + +}; diff --git a/tasks/collections/install.js b/tasks/collections/install.js new file mode 100644 index 0000000000..7f172c324b --- /dev/null +++ b/tasks/collections/install.js @@ -0,0 +1,23 @@ +/******************************* + * Define Install Sub-Tasks + *******************************/ + +/* + Lets you serve files to a local documentation instance + https://github.com/Semantic-Org/Semantic-UI-Docs/ +*/ +module.exports = function (gulp) { + + var + // docs tasks + install = require('./../install'), + checkInstall = require('./../check-install') + ; + + gulp.task('install', install); + gulp.task('install').description = 'Runs set-up'; + + gulp.task('check-install', checkInstall); + gulp.task('check-install').description = 'Displays current version of Semantic'; + +}; diff --git a/tasks/collections/internal.js b/tasks/collections/internal.js deleted file mode 100644 index 63d2241178..0000000000 --- a/tasks/collections/internal.js +++ /dev/null @@ -1,227 +0,0 @@ -/******************************* - Internal Task Collection -*******************************/ - -/* These tasks create packaged files from **dist** components - Not intended to be called directly by a user because - these do not build fresh from **src** -*/ - -module.exports = function(gulp) { - - var - // node dependencies - fs = require('fs'), - chmod = require('gulp-chmod'), - concat = require('gulp-concat'), - concatCSS = require('gulp-concat-css'), - clone = require('gulp-clone'), - dedupe = require('gulp-dedupe'), - gulpif = require('gulp-if'), - header = require('gulp-header'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), - - // user config - config = require('./../config/user'), - docsConfig = require('./../config/docs'), - - // install config - tasks = require('./../config/tasks'), - release = require('./../config/project/release'), - - // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - - banner = tasks.banner, - filenames = tasks.filenames, - log = tasks.log, - settings = tasks.settings - ; - - /*-------------- - Packaged - ---------------*/ - - gulp.task('package uncompressed css', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(plumber()) - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed css', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(plumber()) - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(minifyCSS(settings.concatMinify)) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package uncompressed js', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js') - .pipe(plumber()) - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concat(filenames.concatenatedJS)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed js', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js') - .pipe(plumber()) - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concat(filenames.concatenatedMinifiedJS)) - .pipe(uglify(settings.concatUglify)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - /*-------------- - RTL - ---------------*/ - - if(config.rtl) { - - gulp.task('package uncompressed rtl css', function () { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignoredRTL + '.rtl.css') - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedRTLCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed rtl css', function () { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignoredRTL + '.rtl.css') - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedMinifiedRTLCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(minifyCSS(settings.concatMinify)) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package uncompressed docs css', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed docs css', function() { - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS)) - .pipe(minifyCSS(settings.concatMinify)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; - }); - - } - - /*-------------- - Docs - ---------------*/ - - var - docsOutput = docsConfig.paths.output - ; - - gulp.task('package uncompressed docs css', function() { - return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(docsOutput.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed docs css', function() { - return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.css') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS)) - .pipe(minifyCSS(settings.concatMinify)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(docsOutput.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package uncompressed docs js', function() { - return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.js') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concat(filenames.concatenatedJS)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(docsOutput.packaged)) - .pipe(print(log.created)) - ; - }); - - gulp.task('package compressed docs js', function() { - return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.js') - .pipe(dedupe()) - .pipe(plumber()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concat(filenames.concatenatedMinifiedJS)) - .pipe(uglify(settings.concatUglify)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(docsOutput.packaged)) - .pipe(print(log.created)) - ; - }); - -}; diff --git a/tasks/collections/rtl.js b/tasks/collections/rtl.js index 4c8e70a429..3eae606bc7 100644 --- a/tasks/collections/rtl.js +++ b/tasks/collections/rtl.js @@ -1,16 +1,19 @@ /******************************* - Define Sub-Tasks -*******************************/ + * Define RTL Sub-Tasks + *******************************/ -module.exports = function(gulp) { +module.exports = function (gulp) { + // rtl var - // rtl - buildRTL = require('./../rtl/build'), - watchRTL = require('./../rtl/watch') + buildRTL = require('./../rtl/build'), + watchRTL = require('./../rtl/watch') ; - gulp.task('watch-rtl', 'Build all files as RTL', watchRTL); - gulp.task('build-rtl', 'Watch files as RTL ', buildRTL); + gulp.task('watch-rtl', watchRTL); + gulp.task('watch-rtl').description = 'DEPRECATED - use \'watch\' instead - Watch files as RTL'; + + gulp.task('build-rtl', buildRTL); + gulp.task('build-rtl').description = 'DEPRECATED - use \'build\' instead - Build all files as RTL'; }; diff --git a/tasks/collections/various.js b/tasks/collections/various.js new file mode 100644 index 0000000000..39d0a2ce21 --- /dev/null +++ b/tasks/collections/various.js @@ -0,0 +1,22 @@ +/******************************* + * Define Various Sub-Tasks + *******************************/ + +/* + Lets you serve files to a local documentation instance + https://github.com/Semantic-Org/Semantic-UI-Docs/ +*/ +module.exports = function (gulp) { + + var + clean = require('./../clean'), + version = require('./../version') + ; + + gulp.task('clean', clean); + gulp.task('clean').description = 'Clean dist folder'; + + gulp.task('version', version); + gulp.task('version').description = 'Clean dist folder'; + +}; diff --git a/tasks/config/admin/github.js b/tasks/config/admin/github.js index 6f0f4c27e5..a2c9e20bf7 100644 --- a/tasks/config/admin/github.js +++ b/tasks/config/admin/github.js @@ -8,7 +8,7 @@ var fs = require('fs'), path = require('path'), - githubAPI = require('github'), + githubAPI = require('@octokit/rest'), // stores oauth info for GitHub API oAuthConfig = path.join(__dirname, 'oauth.js'), diff --git a/tasks/config/npm/gulpfile.js b/tasks/config/npm/gulpfile.js index bde19605ec..f1284c7c67 100644 --- a/tasks/config/npm/gulpfile.js +++ b/tasks/config/npm/gulpfile.js @@ -1,72 +1,34 @@ /******************************* - Set-up -*******************************/ + * Set-up + *******************************/ var - gulp = require('gulp-help')(require('gulp')), + gulp = require('gulp-help')(require('gulp')), // read user config to know what task to load - config = require('./tasks/config/user'), - - // watch changes - watch = require('./tasks/watch'), - - // build all files - build = require('./tasks/build'), - buildJS = require('./tasks/build/javascript'), - buildCSS = require('./tasks/build/css'), - buildAssets = require('./tasks/build/assets'), - - // utility - clean = require('./tasks/clean'), - version = require('./tasks/version'), - - // docs tasks - serveDocs = require('./tasks/docs/serve'), - buildDocs = require('./tasks/docs/build'), - - // rtl - buildRTL = require('./tasks/rtl/build'), - watchRTL = require('./tasks/rtl/watch') + config = require('./tasks/config/user') ; /******************************* - Tasks -*******************************/ + * Tasks + *******************************/ -gulp.task('default', false, [ - 'watch' -]); +require('./tasks/collections/build')(gulp); +require('./tasks/collections/install')(gulp); -gulp.task('watch', 'Watch for site/theme changes', watch); - -gulp.task('build', 'Builds all files from source', build); -gulp.task('build-javascript', 'Builds all javascript from source', buildJS); -gulp.task('build-css', 'Builds all css from source', buildCSS); -gulp.task('build-assets', 'Copies all assets from source', buildAssets); - -gulp.task('clean', 'Clean dist folder', clean); -gulp.task('version', 'Displays current version of Semantic', version); +gulp.task('default', gulp.series('watch')); /*-------------- Docs ---------------*/ -/* - Lets you serve files to a local documentation instance - https://github.com/Semantic-Org/Semantic-UI-Docs/ -*/ - -gulp.task('serve-docs', 'Serve file changes to SUI Docs', serveDocs); -gulp.task('build-docs', 'Build all files and add to SUI Docs', buildDocs); - +require('./tasks/collections/docs')(gulp); /*-------------- RTL ---------------*/ -if(config.rtl) { - gulp.task('watch-rtl', 'Watch files as RTL', watchRTL); - gulp.task('build-rtl', 'Build all files as RTL', buildRTL); -} +if (config.rtl) { + require('./tasks/collections/rtl')(gulp); +} \ No newline at end of file diff --git a/tasks/docs/build.js b/tasks/docs/build.js index 3d420c86f9..c6b42089ef 100644 --- a/tasks/docs/build.js +++ b/tasks/docs/build.js @@ -1,110 +1,90 @@ /******************************* - Build Docs -*******************************/ + Build Docs + *******************************/ var - gulp = require('gulp'), + gulp = require('gulp'), // node dependencies - console = require('better-console'), - fs = require('fs'), - map = require('map-stream'), + console = require('better-console'), + fs = require('fs'), + map = require('map-stream'), // gulp dependencies - autoprefixer = require('gulp-autoprefixer'), - chmod = require('gulp-chmod'), - clone = require('gulp-clone'), - flatten = require('gulp-flatten'), - gulpif = require('gulp-if'), - header = require('gulp-header'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), + print = require('gulp-print').default, // user config - config = require('../config/docs'), + config = require('../config/docs'), // install config - tasks = require('../config/tasks'), - configSetup = require('../config/project/config'), - install = require('../config/project/install'), + tasks = require('../config/tasks'), + configSetup = require('../config/project/config'), + install = require('../config/project/install'), // metadata parsing - metadata = require('./metadata'), + metadata = require('./metadata'), + + // build methods + buildJS = require('../build/javascript').buildJS, + buildCSS = require('../build/css').buildCSS, + buildAssets = require('../build/assets').buildAssets, // shorthand - globs, - assets, - output, - source, - - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings + log = tasks.log ; -// add internal tasks (concat release) -require('../collections/internal')(gulp); - -module.exports = function(callback) { - var - stream, - compressedStream, - uncompressedStream - ; +module.exports = function (callback) { // use a different config config = configSetup.addDerivedValues(config); // shorthand - globs = config.globs; - assets = config.paths.assets; - output = config.paths.output; - source = config.paths.source; + const globs = config.globs; + const output = config.paths.output; /*-------------- Parse metadata ---------------*/ - // parse all *.html.eco in docs repo, data will end up in - // metadata.result object. Note this assumes that the docs - // repository is present and in proper directory location as - // specified by docs.json. - console.info('Building Metadata'); - gulp.src(config.paths.template.eco + globs.eco) - .pipe(map(metadata.parser)) - .on('end', function() { - fs.writeFile(output.metadata + '/metadata.json', JSON.stringify(metadata.result, null, 2), new Function()); - }) - ; + function buildMetaData() { + // parse all *.html.eco in docs repo, data will end up in + // metadata.result object. Note this assumes that the docs + // repository is present and in proper directory location as + // specified by docs.json. + console.info('Building Metadata'); + return gulp.src(config.paths.template.eco + globs.eco) + .pipe(map(metadata.parser)) + .on('end', function () { + fs.writeFile(output.metadata + '/metadata.json', JSON.stringify(metadata.result, null, 2), new Function()); + }); + } /*-------------- Copy Examples ---------------*/ - console.info('Copying examples'); - // copy src/ to server - gulp.src('examples/**/*.*') - .pipe(gulp.dest(output.examples)) - .pipe(print(log.created)) - ; + function copyExample() { + // copy src/ to server + console.info('Copying examples'); + return gulp.src('examples/**/*.*') + .pipe(gulp.dest(output.examples)) + .pipe(print(log.created)); + } + /*-------------- Copy Source ---------------*/ - console.info('Copying LESS source'); - // copy src/ to server - gulp.src('src/**/*.*') - .pipe(gulp.dest(output.less)) - .pipe(print(log.created)) - ; + function copyLess() { + // copy src/ to server + console.info('Copying LESS source'); + return gulp.src('src/**/*.*') + .pipe(gulp.dest(output.less)) + .pipe(print(log.created)); + } + /*-------------- Build @@ -112,78 +92,19 @@ module.exports = function(callback) { console.info('Building Semantic for docs'); - if( !install.isSetup() ) { + if (!install.isSetup()) { console.error('Cannot build files. Run "gulp install" to set-up Semantic'); + callback(); return; } - // unified css stream - stream = gulp.src(source.definitions + '/**/' + globs.components + '.less') - .pipe(plumber()) - .pipe(less(settings.less)) - .pipe(autoprefixer(settings.prefix)) - .pipe(flatten()) - ; - - // two concurrent streams from same source to concat release - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - uncompressedStream - .pipe(plumber()) - .pipe(replace(comments.variables.in, comments.variables.out)) - .pipe(replace(comments.large.in, comments.large.out)) - .pipe(replace(comments.small.in, comments.small.out)) - .pipe(replace(comments.tiny.in, comments.tiny.out)) - .pipe(replace(assets.source, assets.uncompressed)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package uncompressed docs css'); - }) - ; - - compressedStream = stream - .pipe(plumber()) - .pipe(clone()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.minCSS)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - callback(); - gulp.start('package compressed docs css'); - }) - ; - - // copy assets - gulp.src(source.themes + '/**/assets/**/*.*') - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - ; - - // copy source javascript - gulp.src(source.definitions + '/**/' + globs.components + '.js') - .pipe(plumber()) - .pipe(flatten()) - .pipe(gulp.dest(output.uncompressed)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.compressed)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed docs js'); - gulp.start('package uncompressed docs js'); - }) - ; + gulp.series( + buildMetaData, + copyExample, + copyLess, + (callback) => buildJS('docs', config, callback), + (callback) => buildCSS('docs', config, {}, callback), + (callback) => buildAssets(config, callback) + )(callback); }; diff --git a/tasks/docs/serve.js b/tasks/docs/serve.js index 66673130b6..51af308861 100644 --- a/tasks/docs/serve.js +++ b/tasks/docs/serve.js @@ -1,78 +1,56 @@ /******************************* - Serve Docs -*******************************/ + Serve Docs + *******************************/ var - gulp = require('gulp'), + gulp = require('gulp'), // node dependencies - console = require('better-console'), - fs = require('fs'), + console = require('better-console'), // gulp dependencies - autoprefixer = require('gulp-autoprefixer'), - chmod = require('gulp-chmod'), - clone = require('gulp-clone'), - gulpif = require('gulp-if'), - header = require('gulp-header'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), - util = require('gulp-util'), - watch = require('gulp-watch'), + print = require('gulp-print').default, // user config - config = require('../config/docs'), + config = require('../config/docs'), // task config - tasks = require('../config/tasks'), - configSetup = require('../config/project/config'), - install = require('../config/project/install'), + tasks = require('../config/tasks'), + configSetup = require('../config/project/config'), // shorthand - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings, - - globs, - assets, - output, - source + log = tasks.log, + + css = require('../build/css'), + js = require('../build/javascript'), + assets = require('../build/assets') ; -require('../collections/internal')(gulp); module.exports = function () { // use a different config config = configSetup.addDerivedValues(config); - // shorthand - globs = config.globs; - assets = config.paths.assets; - output = config.paths.output; - source = config.paths.source; - + console.clear(); + console.log('Watching source files for changes'); /*-------------- Copy Source ---------------*/ gulp - .watch([ - 'src/**/*.*' - ], function(file) { - console.clear(); - return gulp.src(file.path, { - base: 'src/' - }) - .pipe(gulp.dest(output.less)) + .watch(['src/**/*.*']) + .on('all', function (event, path) { + // We don't handle deleted files yet + if (event === 'unlink' || event === 'unlinkDir') { + return; + } + return gulp.src(path, { + base: 'src/' + }) + .pipe(gulp.dest(config.paths.output.less)) .pipe(print(log.created)) - ; + ; }) ; @@ -81,16 +59,18 @@ module.exports = function () { ---------------*/ gulp - .watch([ - 'examples/**/*.*' - ], function(file) { - console.clear(); - return gulp.src(file.path, { - base: 'examples/' - }) - .pipe(gulp.dest(output.examples)) + .watch(['examples/**/*.*']) + .on('all', function (event, path) { + // We don't handle deleted files yet + if (event === 'unlink' || event === 'unlinkDir') { + return; + } + return gulp.src(path, { + base: 'examples/' + }) + .pipe(gulp.dest(config.paths.output.examples)) .pipe(print(log.created)) - ; + ; }) ; @@ -98,158 +78,18 @@ module.exports = function () { Watch CSS ---------------*/ - gulp - .watch([ - source.config, - source.definitions + '/**/*.less', - source.site + '/**/*.{overrides,variables}', - source.themes + '/**/*.{overrides,variables}' - ], function(file) { - - var - lessPath, - - stream, - compressedStream, - uncompressedStream, - - isDefinition, - isPackagedTheme, - isSiteTheme, - isConfig - ; - - // log modified file - gulp.src(file.path) - .pipe(print(log.modified)) - ; - - /*-------------- - Find Source - ---------------*/ - - // recompile on *.override , *.variable change - isConfig = (file.path.indexOf('theme.config') !== -1 || file.path.indexOf('site.variables') !== -1); - isPackagedTheme = (file.path.indexOf(source.themes) !== -1); - isSiteTheme = (file.path.indexOf(source.site) !== -1); - isDefinition = (file.path.indexOf(source.definitions) !== -1); - - if(isConfig) { - // console.info('Rebuilding all files'); - // cant rebuild paths are wrong - // gulp.start('build-docs'); - return; - } - else if(isPackagedTheme) { - console.log('Change detected in packaged theme'); - lessPath = util.replaceExtension(file.path, '.less'); - lessPath = lessPath.replace(tasks.regExp.theme, source.definitions); - } - else if(isSiteTheme) { - console.log('Change detected in site theme'); - lessPath = util.replaceExtension(file.path, '.less'); - lessPath = lessPath.replace(source.site, source.definitions); - } - else { - console.log('Change detected in definition'); - lessPath = file.path; - } - - /*-------------- - Create CSS - ---------------*/ - - if( fs.existsSync(lessPath) ) { - - // unified css stream - stream = gulp.src(lessPath) - .pipe(plumber()) - .pipe(less(settings.less)) - .pipe(replace(comments.variables.in, comments.variables.out)) - .pipe(replace(comments.large.in, comments.large.out)) - .pipe(replace(comments.small.in, comments.small.out)) - .pipe(replace(comments.tiny.in, comments.tiny.out)) - .pipe(autoprefixer(settings.prefix)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - ; - - // use 2 concurrent streams from same pipe - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - uncompressedStream - .pipe(plumber()) - .pipe(replace(assets.source, assets.uncompressed)) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package uncompressed docs css'); - }) - ; - - compressedStream = stream - .pipe(plumber()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.minCSS)) - .pipe(header(banner, settings.header)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed docs css'); - }) - ; - - } - else { - console.log('Cannot find UI definition at path', lessPath); - } - }) - ; + css.watch('docs', config); /*-------------- Watch JS ---------------*/ - gulp - .watch([ - source.definitions + '/**/*.js' - ], function(file) { - gulp.src(file.path) - .pipe(plumber()) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed docs js'); - gulp.start('package uncompressed docs js'); - }) - ; - }) - ; + js.watch('docs', config); /*-------------- Watch Assets ---------------*/ - // only copy assets that match component names (or their plural) - gulp - .watch([ - source.themes + '/**/assets/**/' + globs.components + '?(s).*' - ], function(file) { - // copy assets - gulp.src(file.path, { base: source.themes }) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - .pipe(print(log.created)) - ; - }) - ; - + assets.watch('docs', config); }; diff --git a/tasks/install.js b/tasks/install.js index a6f9e1f948..c4c0b3ff87 100644 --- a/tasks/install.js +++ b/tasks/install.js @@ -1,6 +1,6 @@ /******************************* - Install Task -*******************************/ + * Install Task + *******************************/ /* Install tasks @@ -23,7 +23,6 @@ var fs = require('fs'), mkdirp = require('mkdirp'), path = require('path'), - runSequence = require('run-sequence'), // gulp dependencies chmod = require('gulp-chmod'), @@ -57,403 +56,387 @@ var // Export install task module.exports = function (callback) { -var - currentConfig = requireDotFile('semantic.json'), - manager = install.getPackageManager(), - rootQuestions = questions.root, - installFolder = false, - answers -; - -console.clear(); - -/* Test NPM install -manager = { - name : 'NPM', - root : path.normalize(__dirname + '/../') -}; -*/ - - -/* Don't do end user config if SUI is a sub-module */ -if( install.isSubModule() ) { - console.info('SUI is a sub-module, skipping end-user install'); - return; -} - -/*----------------- - Update SUI ------------------*/ - -// run update scripts if semantic.json exists -if(currentConfig && manager.name === 'NPM') { - var - updateFolder = path.join(manager.root, currentConfig.base), - updatePaths = { - config : path.join(manager.root, files.config), - tasks : path.join(updateFolder, folders.tasks), - themeImport : path.join(updateFolder, folders.themeImport), - definition : path.join(currentConfig.paths.source.definitions), - site : path.join(currentConfig.paths.source.site), - theme : path.join(currentConfig.paths.source.themes), - defaultTheme : path.join(currentConfig.paths.source.themes, folders.defaultTheme) - } + currentConfig = requireDotFile('semantic.json'), + manager = install.getPackageManager(), + rootQuestions = questions.root, + installFolder = false, + answers ; - // duck-type if there is a project installed - if( fs.existsSync(updatePaths.definition) ) { + console.clear(); - // perform update if new version - if(currentConfig.version !== release.version) { - console.log('Updating Semantic UI from ' + currentConfig.version + ' to ' + release.version); + /* Test NPM install + manager = { + name : 'NPM', + root : path.normalize(__dirname + '/../') + }; + */ - console.info('Updating ui definitions...'); - wrench.copyDirSyncRecursive(source.definitions, updatePaths.definition, settings.wrench.overwrite); - console.info('Updating default theme...'); - wrench.copyDirSyncRecursive(source.themes, updatePaths.theme, settings.wrench.merge); - wrench.copyDirSyncRecursive(source.defaultTheme, updatePaths.defaultTheme, settings.wrench.overwrite); + /* Don't do end user config if SUI is a sub-module */ + if (install.isSubModule()) { + console.info('SUI is a sub-module, skipping end-user install'); + return; + } - console.info('Updating tasks...'); - wrench.copyDirSyncRecursive(source.tasks, updatePaths.tasks, settings.wrench.overwrite); + /*----------------- + Update SUI + -----------------*/ - console.info('Updating gulpfile.js'); - gulp.src(source.userGulpFile) - .pipe(plumber()) - .pipe(gulp.dest(updateFolder)) - ; - - // copy theme import - console.info('Updating theme import file'); - gulp.src(source.themeImport) - .pipe(plumber()) - .pipe(gulp.dest(updatePaths.themeImport)) - ; +// run update scripts if semantic.json exists + if (currentConfig && manager.name === 'NPM') { - console.info('Adding new site theme files...'); - wrench.copyDirSyncRecursive(source.site, updatePaths.site, settings.wrench.merge); + var + updateFolder = path.join(manager.root, currentConfig.base), + updatePaths = { + config : path.join(manager.root, files.config), + tasks : path.join(updateFolder, folders.tasks), + themeImport : path.join(updateFolder, folders.themeImport), + definition : path.join(currentConfig.paths.source.definitions), + site : path.join(currentConfig.paths.source.site), + theme : path.join(currentConfig.paths.source.themes), + defaultTheme: path.join(currentConfig.paths.source.themes, folders.defaultTheme) + } + ; - console.info('Updating version...'); + // duck-type if there is a project installed + if (fs.existsSync(updatePaths.definition)) { - // update version number in semantic.json - gulp.src(updatePaths.config) - .pipe(plumber()) - .pipe(rename(settings.rename.json)) // preserve file extension - .pipe(jsonEditor({ - version: release.version - })) - .pipe(gulp.dest(manager.root)) - ; + // perform update if new version + if (currentConfig.version !== release.version) { + console.log('Updating Semantic UI from ' + currentConfig.version + ' to ' + release.version); - console.info('Update complete! Run "\x1b[92mgulp build\x1b[0m" to rebuild dist/ files.'); + console.info('Updating ui definitions...'); + wrench.copyDirSyncRecursive(source.definitions, updatePaths.definition, settings.wrench.overwrite); - return; - } - else { - console.log('Current version of Semantic UI already installed'); - return; - } + console.info('Updating default theme...'); + wrench.copyDirSyncRecursive(source.themes, updatePaths.theme, settings.wrench.merge); + wrench.copyDirSyncRecursive(source.defaultTheme, updatePaths.defaultTheme, settings.wrench.overwrite); - } - else { - console.error('Cannot locate files to update at path: ', updatePaths.definition); - console.log('Running installer'); - } + console.info('Updating tasks...'); + wrench.copyDirSyncRecursive(source.tasks, updatePaths.tasks, settings.wrench.overwrite); -} + console.info('Updating gulpfile.js'); + gulp.src(source.userGulpFile) + .pipe(plumber()) + .pipe(gulp.dest(updateFolder)) + ; -/*-------------- - Determine Root ----------------*/ + // copy theme import + console.info('Updating theme import file'); + gulp.src(source.themeImport) + .pipe(plumber()) + .pipe(gulp.dest(updatePaths.themeImport)) + ; -// PM that supports Build Tools (NPM Only Now) -if(manager.name == 'NPM') { - rootQuestions[0].message = rootQuestions[0].message - .replace('{packageMessage}', 'We detected you are using ' + manager.name + ' Nice!') - .replace('{root}', manager.root) - ; - // set default path to detected PM root - rootQuestions[0].default = manager.root; - rootQuestions[1].default = manager.root; + console.info('Adding new site theme files...'); + wrench.copyDirSyncRecursive(source.site, updatePaths.site, settings.wrench.merge); - // insert PM questions after "Install Type" question - Array.prototype.splice.apply(questions.setup, [2, 0].concat(rootQuestions)); + console.info('Updating version...'); - // omit cleanup questions for managed install - questions.cleanup = []; -} + // update version number in semantic.json + gulp.src(updatePaths.config) + .pipe(plumber()) + .pipe(rename(settings.rename.json)) // preserve file extension + .pipe(jsonEditor({ + version: release.version + })) + .pipe(gulp.dest(manager.root)) + ; + console.info('Update complete! Run "\x1b[92mgulp build\x1b[0m" to rebuild dist/ files.'); -/*-------------- - Create SUI ----------------*/ + callback(); + return; + } else { + console.log('Current version of Semantic UI already installed'); + callback(); + return; + } -gulp.task('run setup', function() { + } else { + console.error('Cannot locate files to update at path: ', updatePaths.definition); + console.log('Running installer'); + } - // If auto-install is switched on, we skip the configuration section and simply reuse the configuration from semantic.json - if(install.shouldAutoInstall()) { - answers = { - overwrite : 'yes', - install : 'auto', - useRoot : true, - semanticRoot : currentConfig.base - }; } - else { - return gulp - .src('gulpfile.js') - .pipe(prompt.prompt(questions.setup, function(setupAnswers) { - // hoist - answers = setupAnswers; - })) - ; - } -}); - -gulp.task('create install files', function(callback) { /*-------------- - Exit Conditions + Determine Root ---------------*/ - // if config exists and user specifies not to proceed - if(answers.overwrite !== undefined && answers.overwrite == 'no') { - return; - } - console.clear(); - if(install.shouldAutoInstall()) { - console.log('Auto-Installing (Without User Interaction)'); - } - else { - console.log('Installing'); - } - console.log('------------------------------'); +// PM that supports Build Tools (NPM Only Now) + if (manager.name === 'NPM') { + rootQuestions[0].message = rootQuestions[0].message + .replace('{packageMessage}', 'We detected you are using ' + manager.name + ' Nice!') + .replace('{root}', manager.root) + ; + // set default path to detected PM root + rootQuestions[0].default = manager.root; + rootQuestions[1].default = manager.root; + // insert PM questions after "Install Type" question + Array.prototype.splice.apply(questions.setup, [2, 0].concat(rootQuestions)); - /*-------------- - Paths - ---------------*/ + // omit cleanup questions for managed install + questions.cleanup = []; + } - var - installPaths = { - config : files.config, - configFolder : folders.config, - site : answers.site || folders.site, - themeConfig : files.themeConfig, - themeConfigFolder : folders.themeConfig - } - ; /*-------------- - NPM Install + Create SUI ---------------*/ - // Check if PM install - if(manager && (answers.useRoot || answers.customRoot)) { - - // Set root to custom root path if set - if(answers.customRoot) { - if(answers.customRoot === '') { - console.log('Unable to proceed, invalid project root'); - return; - } - manager.root = answers.customRoot; + gulp.task('run setup', function (callback) { + + // If auto-install is switched on, we skip the configuration section and simply reuse the configuration from semantic.json + if (install.shouldAutoInstall()) { + answers = { + overwrite : 'yes', + install : 'auto', + useRoot : true, + semanticRoot: currentConfig.base + }; + callback(); + } else { + return gulp + .src('gulpfile.js') + .pipe(prompt.prompt(questions.setup, function (setupAnswers) { + // hoist + answers = setupAnswers; + })) + ; } + }); - // special install paths only for PM install - installPaths = extend(false, {}, installPaths, { - definition : folders.definitions, - lessImport : folders.lessImport, - tasks : folders.tasks, - theme : folders.themes, - defaultTheme : path.join(folders.themes, folders.defaultTheme), - themeImport : folders.themeImport - }); + gulp.task('create install files', function (callback) { - // add project root to semantic root - installFolder = path.join(manager.root, answers.semanticRoot); + /*-------------- + Exit Conditions + ---------------*/ - // add install folder to all output paths - for(var destination in installPaths) { - if( installPaths.hasOwnProperty(destination) ) { - // config goes in project root, rest in install folder - installPaths[destination] = (destination == 'config' || destination == 'configFolder') - ? path.normalize( path.join(manager.root, installPaths[destination]) ) - : path.normalize( path.join(installFolder, installPaths[destination]) ) - ; - } - } - - // create project folders - try { - mkdirp.sync(installFolder); - mkdirp.sync(installPaths.definition); - mkdirp.sync(installPaths.theme); - mkdirp.sync(installPaths.tasks); + // if config exists and user specifies not to proceed + if (answers.overwrite !== undefined && answers.overwrite == 'no') { + callback(); + return; } - catch(error) { - console.error('NPM does not have permissions to create folders at your specified path. Adjust your folders permissions and run "npm install" again'); + console.clear(); + if (install.shouldAutoInstall()) { + console.log('Auto-Installing (Without User Interaction)'); + } else { + console.log('Installing'); } + console.log('------------------------------'); - console.log('Installing to \x1b[92m' + answers.semanticRoot + '\x1b[0m'); - - console.info('Copying UI definitions'); - wrench.copyDirSyncRecursive(source.definitions, installPaths.definition, settings.wrench.overwrite); - console.info('Copying UI themes'); - wrench.copyDirSyncRecursive(source.themes, installPaths.theme, settings.wrench.merge); - wrench.copyDirSyncRecursive(source.defaultTheme, installPaths.defaultTheme, settings.wrench.overwrite); + /*-------------- + Paths + ---------------*/ - console.info('Copying gulp tasks'); - wrench.copyDirSyncRecursive(source.tasks, installPaths.tasks, settings.wrench.overwrite); - - // copy theme import - console.info('Adding theme files'); - gulp.src(source.themeImport) - .pipe(plumber()) - .pipe(gulp.dest(installPaths.themeImport)) - ; - gulp.src(source.lessImport) - .pipe(plumber()) - .pipe(gulp.dest(installPaths.lessImport)) + var + installPaths = { + config : files.config, + configFolder : folders.config, + site : answers.site || folders.site, + themeConfig : files.themeConfig, + themeConfigFolder: folders.themeConfig + } ; - // create gulp file - console.info('Creating gulpfile.js'); - gulp.src(source.userGulpFile) - .pipe(plumber()) - .pipe(gulp.dest(installFolder)) - ; + /*-------------- + NPM Install + ---------------*/ - } + // Check if PM install + if (manager && (answers.useRoot || answers.customRoot)) { + // Set root to custom root path if set + if (answers.customRoot) { + if (answers.customRoot === '') { + console.log('Unable to proceed, invalid project root'); + callback(); + return; + } + manager.root = answers.customRoot; + } - /*-------------- - Site Theme - ---------------*/ + // special install paths only for PM install + installPaths = extend(false, {}, installPaths, { + definition : folders.definitions, + lessImport : folders.lessImport, + tasks : folders.tasks, + theme : folders.themes, + defaultTheme: path.join(folders.themes, folders.defaultTheme), + themeImport : folders.themeImport + }); + + // add project root to semantic root + installFolder = path.join(manager.root, answers.semanticRoot); + + // add install folder to all output paths + for (var destination in installPaths) { + if (installPaths.hasOwnProperty(destination)) { + // config goes in project root, rest in install folder + installPaths[destination] = (destination == 'config' || destination == 'configFolder') + ? path.normalize(path.join(manager.root, installPaths[destination])) + : path.normalize(path.join(installFolder, installPaths[destination])) + ; + } + } - // Copy _site templates folder to destination - if( fs.existsSync(installPaths.site) ) { - console.info('Site folder exists, merging files (no overwrite)', installPaths.site); - } - else { - console.info('Creating site theme folder', installPaths.site); - } - wrench.copyDirSyncRecursive(source.site, installPaths.site, settings.wrench.merge); + // create project folders + try { + mkdirp.sync(installFolder); + mkdirp.sync(installPaths.definition); + mkdirp.sync(installPaths.theme); + mkdirp.sync(installPaths.tasks); + } catch (error) { + console.error('NPM does not have permissions to create folders at your specified path. Adjust your folders permissions and run "npm install" again'); + } - /*-------------- - Theme Config - ---------------*/ + console.log('Installing to \x1b[92m' + answers.semanticRoot + '\x1b[0m'); - gulp.task('create theme.config', function() { - var - // determine path to site theme folder from theme config - // force CSS path variable to use forward slashes for paths - pathToSite = path.relative(path.resolve(installPaths.themeConfigFolder), path.resolve(installPaths.site)).replace(/\\/g,'/'), - siteVariable = "@siteFolder : '" + pathToSite + "/';" - ; + console.info('Copying UI definitions'); + wrench.copyDirSyncRecursive(source.definitions, installPaths.definition, settings.wrench.overwrite); + + console.info('Copying UI themes'); + wrench.copyDirSyncRecursive(source.themes, installPaths.theme, settings.wrench.merge); + wrench.copyDirSyncRecursive(source.defaultTheme, installPaths.defaultTheme, settings.wrench.overwrite); - // rewrite site variable in theme.less - console.info('Adjusting @siteFolder to: ', pathToSite + '/'); + console.info('Copying gulp tasks'); + wrench.copyDirSyncRecursive(source.tasks, installPaths.tasks, settings.wrench.overwrite); - if(fs.existsSync(installPaths.themeConfig)) { - console.info('Modifying src/theme.config (LESS config)', installPaths.themeConfig); - return gulp.src(installPaths.themeConfig) + // copy theme import + console.info('Adding theme files'); + gulp.src(source.themeImport) .pipe(plumber()) - .pipe(replace(regExp.siteVariable, siteVariable)) - .pipe(gulp.dest(installPaths.themeConfigFolder)) + .pipe(gulp.dest(installPaths.themeImport)) ; - } - else { - console.info('Creating src/theme.config (LESS config)', installPaths.themeConfig); - return gulp.src(source.themeConfig) + gulp.src(source.lessImport) .pipe(plumber()) - .pipe(rename({ extname : '' })) - .pipe(replace(regExp.siteVariable, siteVariable)) - .pipe(gulp.dest(installPaths.themeConfigFolder)) + .pipe(gulp.dest(installPaths.lessImport)) ; - } - }); - /*-------------- - Semantic.json - ---------------*/ + // create gulp file + console.info('Creating gulpfile.js'); + gulp.src(source.userGulpFile) + .pipe(plumber()) + .pipe(gulp.dest(installFolder)) + ; - gulp.task('create semantic.json', function() { + } - var - jsonConfig = install.createJSON(answers) - ; - // adjust variables in theme.less - if( fs.existsSync(installPaths.config) ) { - console.info('Extending config file (semantic.json)', installPaths.config); - return gulp.src(installPaths.config) - .pipe(plumber()) - .pipe(rename(settings.rename.json)) // preserve file extension - .pipe(jsonEditor(jsonConfig)) - .pipe(gulp.dest(installPaths.configFolder)) - ; + /*-------------- + Site Theme + ---------------*/ + + // Copy _site templates folder to destination + if (fs.existsSync(installPaths.site)) { + console.info('Site folder exists, merging files (no overwrite)', installPaths.site); + } else { + console.info('Creating site theme folder', installPaths.site); } - else { - console.info('Creating config file (semantic.json)', installPaths.config); - return gulp.src(source.config) - .pipe(plumber()) - .pipe(rename({ extname : '' })) // remove .template from ext - .pipe(jsonEditor(jsonConfig, { end_with_newline: true })) - .pipe(gulp.dest(installPaths.configFolder)) + wrench.copyDirSyncRecursive(source.site, installPaths.site, settings.wrench.merge); + + /*-------------- + Theme Config + ---------------*/ + + gulp.task('create theme.config', function () { + var + // determine path to site theme folder from theme config + // force CSS path variable to use forward slashes for paths + pathToSite = path.relative(path.resolve(installPaths.themeConfigFolder), path.resolve(installPaths.site)).replace(/\\/g, '/'), + siteVariable = "@siteFolder : '" + pathToSite + "/';" ; - } - - }); - runSequence( - 'create theme.config', - 'create semantic.json', - callback - ); + // rewrite site variable in theme.less + console.info('Adjusting @siteFolder to: ', pathToSite + '/'); + + if (fs.existsSync(installPaths.themeConfig)) { + console.info('Modifying src/theme.config (LESS config)', installPaths.themeConfig); + return gulp.src(installPaths.themeConfig) + .pipe(plumber()) + .pipe(replace(regExp.siteVariable, siteVariable)) + .pipe(gulp.dest(installPaths.themeConfigFolder)) + ; + } else { + console.info('Creating src/theme.config (LESS config)', installPaths.themeConfig); + return gulp.src(source.themeConfig) + .pipe(plumber()) + .pipe(rename({extname: ''})) + .pipe(replace(regExp.siteVariable, siteVariable)) + .pipe(gulp.dest(installPaths.themeConfigFolder)) + ; + } + }); -}); + /*-------------- + Semantic.json + ---------------*/ -gulp.task('clean up install', function() { + gulp.task('create semantic.json', function () { - // Completion Message - if(installFolder && !install.shouldAutoInstall()) { - console.log('\n Setup Complete! \n Installing Peer Dependencies. \x1b[0;31mPlease refrain from ctrl + c\x1b[0m... \n After completion navigate to \x1b[92m' + answers.semanticRoot + '\x1b[0m and run "\x1b[92mgulp build\x1b[0m" to build'); - process.exit(0); - } - else { - console.log(''); - console.log(''); - } + var + jsonConfig = install.createJSON(answers) + ; - // If auto-install is switched on, we skip the configuration section and simply build the dependencies - if(install.shouldAutoInstall()) { - return gulp.start('build'); - } - else { - return gulp - .src('gulpfile.js') - .pipe(prompt.prompt(questions.cleanup, function(answers) { - if(answers.cleanup == 'yes') { - del(install.setupFiles); - } - if(answers.build == 'yes') { - gulp.start('build'); - } - })) - ; - } + // adjust variables in theme.less + if (fs.existsSync(installPaths.config)) { + console.info('Extending config file (semantic.json)', installPaths.config); + return gulp.src(installPaths.config) + .pipe(plumber()) + .pipe(rename(settings.rename.json)) // preserve file extension + .pipe(jsonEditor(jsonConfig)) + .pipe(gulp.dest(installPaths.configFolder)) + ; + } else { + console.info('Creating config file (semantic.json)', installPaths.config); + return gulp.src(source.config) + .pipe(plumber()) + .pipe(rename({extname: ''})) // remove .template from ext + .pipe(jsonEditor(jsonConfig, {end_with_newline: true})) + .pipe(gulp.dest(installPaths.configFolder)) + ; + } + }); -}); + gulp.series('create theme.config', 'create semantic.json')(callback); + }); -runSequence( - 'run setup', - 'create install files', - 'clean up install', - callback -); + gulp.task('clean up install', function (callback) { + + // Completion Message + if (installFolder && !install.shouldAutoInstall()) { + console.log('\n Setup Complete! \n Installing Peer Dependencies. \x1b[0;31mPlease refrain from ctrl + c\x1b[0m... \n After completion navigate to \x1b[92m' + answers.semanticRoot + '\x1b[0m and run "\x1b[92mgulp build\x1b[0m" to build'); + callback(); + } else { + console.log(''); + console.log(''); + + // If auto-install is switched on, we skip the configuration section and simply build the dependencies + if (install.shouldAutoInstall()) { + gulp.series('build')(callback); + } else { + gulp + .src('gulpfile.js') + .pipe(prompt.prompt(questions.cleanup, function (answers) { + if (answers.cleanup === 'yes') { + del(install.setupFiles); + } + if (answers.build === 'yes') { + gulp.series('build')(callback); + } else { + callback(); + } + })) + ; + } + } + }); + gulp.series('run setup', 'create install files', 'clean up install')(callback); }; diff --git a/tasks/rtl/build.js b/tasks/rtl/build.js index 5ba18846ef..5ec5ac3bc0 100644 --- a/tasks/rtl/build.js +++ b/tasks/rtl/build.js @@ -1,132 +1,12 @@ /******************************* - Build Task -*******************************/ + * Build Task + *******************************/ var - gulp = require('gulp'), - - // node dependencies - fs = require('fs'), - - // gulp dependencies - autoprefixer = require('gulp-autoprefixer'), - chmod = require('gulp-chmod'), - clone = require('gulp-clone'), - flatten = require('gulp-flatten'), - gulpif = require('gulp-if'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - rtlcss = require('gulp-rtlcss'), - uglify = require('gulp-uglify'), - - // user config - config = require('../config/user'), - - // install config - tasks = require('../config/tasks'), - install = require('../config/project/install'), - - // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, - - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings + gulp = require('gulp') ; -// add internal tasks (concat release) -require('../collections/internal')(gulp); - -module.exports = function(callback) { - - var - stream, - compressedStream, - uncompressedStream - ; - - console.info('Building Semantic'); - - if( !install.isSetup() ) { - console.error('Cannot build files. Run "gulp install" to set-up Semantic'); - return; - } - - // unified css stream - stream = gulp.src(source.definitions + '/**/' + globs.components + '.less') - .pipe(plumber()) - .pipe(less(settings.less)) - .pipe(autoprefixer(settings.prefix)) - .pipe(rtlcss()) - .pipe(replace(comments.variables.in, comments.variables.out)) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(replace(comments.large.in, comments.large.out)) - .pipe(replace(comments.small.in, comments.small.out)) - .pipe(replace(comments.tiny.in, comments.tiny.out)) - .pipe(flatten()) - ; - - // two concurrent streams from same source to concat release - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - uncompressedStream - .pipe(plumber()) - .pipe(replace(assets.source, assets.uncompressed)) - .pipe(rename(settings.rename.rtlCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package uncompressed rtl css'); - }) - ; - - compressedStream = stream - .pipe(plumber()) - .pipe(clone()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.rtlMinCSS)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - callback(); - gulp.start('package compressed rtl css'); - }) - ; - - // copy assets - gulp.src(source.themes + '/**/assets/**/' + globs.components + '?(s).*') - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - ; - - // copy source javascript - gulp.src(source.definitions + '/**/' + globs.components + '.js') - .pipe(plumber()) - .pipe(flatten()) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed js'); - gulp.start('package uncompressed js'); - }) - ; - +// RTL builds are now handled by the default build process +module.exports = function (callback) { + gulp.series(require('../build'))(callback); }; diff --git a/tasks/rtl/watch.js b/tasks/rtl/watch.js index af89922d80..098c965482 100644 --- a/tasks/rtl/watch.js +++ b/tasks/rtl/watch.js @@ -1,221 +1,12 @@ /******************************* - Watch Task -*******************************/ + * Watch Task + *******************************/ var - gulp = require('gulp'), - - // node deps - console = require('better-console'), - fs = require('fs'), - - // gulp deps - autoprefixer = require('gulp-autoprefixer'), - chmod = require('gulp-chmod'), - clone = require('gulp-clone'), - gulpif = require('gulp-if'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - rtlcss = require('gulp-rtlcss'), - uglify = require('gulp-uglify'), - util = require('gulp-util'), - watch = require('gulp-watch'), - - // user config - config = require('../config/user'), - - // task config - tasks = require('../config/tasks'), - install = require('../config/project/install'), - - // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, - - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings - + gulp = require('gulp') ; -// add internal tasks (concat release) -require('../collections/internal')(gulp); - -module.exports = function(callback) { - - if( !install.isSetup() ) { - console.error('Cannot watch files. Run "gulp install" to set-up Semantic'); - return; - } - - console.clear(); - console.log('Watching source files for changes'); - - /*-------------- - Watch CSS - ---------------*/ - - gulp - .watch([ - source.config, - source.definitions + '/**/*.less', - source.site + '/**/*.{overrides,variables}', - source.themes + '/**/*.{overrides,variables}' - ], function(file) { - - var - lessPath, - - stream, - compressedStream, - uncompressedStream, - - isDefinition, - isPackagedTheme, - isSiteTheme, - isConfig - ; - - // log modified file - gulp.src(file.path) - .pipe(print(log.modified)) - ; - - /*-------------- - Find Source - ---------------*/ - - // recompile on *.override , *.variable change - isConfig = (file.path.indexOf('.config') !== -1); - isPackagedTheme = (file.path.indexOf(source.themes) !== -1); - isSiteTheme = (file.path.indexOf(source.site) !== -1); - isDefinition = (file.path.indexOf(source.definitions) !== -1); - - - if(isConfig) { - console.log('Change detected in theme config'); - // cant tell which theme was changed in theme.config, rebuild all - gulp.start('build'); - } - else if(isPackagedTheme) { - console.log('Change detected in packaged theme'); - lessPath = lessPath.replace(tasks.regExp.theme, source.definitions); - lessPath = util.replaceExtension(file.path, '.less'); - } - else if(isSiteTheme) { - console.log('Change detected in site theme'); - lessPath = lessPath.replace(source.site, source.definitions); - lessPath = util.replaceExtension(file.path, '.less'); - } - else if(isDefinition) { - console.log('Change detected in definition'); - lessPath = util.replaceExtension(file.path, '.less'); - } - - /*-------------- - Create CSS - ---------------*/ - - if( fs.existsSync(lessPath) ) { - - // unified css stream - stream = gulp.src(lessPath) - .pipe(plumber()) - .pipe(less(settings.less)) - .pipe(replace(comments.variables.in, comments.variables.out)) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(replace(comments.large.in, comments.large.out)) - .pipe(replace(comments.small.in, comments.small.out)) - .pipe(replace(comments.tiny.in, comments.tiny.out)) - .pipe(autoprefixer(settings.prefix)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(rtlcss()) - ; - - // use 2 concurrent streams from same pipe - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - uncompressedStream - .pipe(plumber()) - .pipe(replace(assets.source, assets.uncompressed)) - .pipe(rename(settings.rename.rtlCSS)) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package uncompressed rtl css'); - }) - ; - - compressedStream = stream - .pipe(plumber()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.minCSS)) - .pipe(rename(settings.rename.rtlMinCSS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed rtl css'); - }) - ; - - } - else { - console.log('Cannot find UI definition at path', lessPath); - } - }) - ; - - /*-------------- - Watch JS - ---------------*/ - - gulp - .watch([ - source.definitions + '/**/*.js' - ], function(file) { - gulp.src(file.path) - .pipe(plumber()) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed js'); - gulp.start('package uncompressed js'); - }) - ; - }) - ; - - /*-------------- - Watch Assets - ---------------*/ - - // only copy assets that match component names (or their plural) - gulp - .watch([ - source.themes + '/**/assets/**/' + globs.components + '?(s).*' - ], function(file) { - // copy assets - gulp.src(file.path, { base: source.themes }) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - .pipe(print(log.created)) - ; - }) - ; - -}; +// RTL watch are now handled by the default watch process +module.exports = function (callback) { + gulp.series(require('../watch'))(callback); +}; \ No newline at end of file diff --git a/tasks/version.js b/tasks/version.js index df49f5542d..b5092a59aa 100644 --- a/tasks/version.js +++ b/tasks/version.js @@ -8,4 +8,5 @@ var module.exports = function(callback) { console.log(release.title + ' ' + release.version); + callback(); }; \ No newline at end of file diff --git a/tasks/watch.js b/tasks/watch.js index fd5cb22cef..aec7af2819 100644 --- a/tasks/watch.js +++ b/tasks/watch.js @@ -1,231 +1,51 @@ /******************************* - Watch Task -*******************************/ + * Watch Task + *******************************/ var - gulp = require('gulp-help')(require('gulp')), + gulp = require('gulp'), // node dependencies - console = require('better-console'), - fs = require('fs'), - - // gulp dependencies - autoprefixer = require('gulp-autoprefixer'), - chmod = require('gulp-chmod'), - clone = require('gulp-clone'), - gulpif = require('gulp-if'), - less = require('gulp-less'), - minifyCSS = require('gulp-clean-css'), - plumber = require('gulp-plumber'), - print = require('gulp-print'), - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), - util = require('gulp-util'), - watch = require('gulp-watch'), + console = require('better-console'), // user config - config = require('./config/user'), + config = require('./config/user'), // task config - tasks = require('./config/tasks'), - install = require('./config/project/install'), - - // shorthand - globs = config.globs, - assets = config.paths.assets, - output = config.paths.output, - source = config.paths.source, + install = require('./config/project/install'), - banner = tasks.banner, - comments = tasks.regExp.comments, - log = tasks.log, - settings = tasks.settings + css = require('./build/css'), + js = require('./build/javascript'), + assets = require('./build/assets') ; -// add tasks referenced using gulp.run (sub-tasks) -if(config.rtl) { - require('./collections/rtl')(gulp); -} -require('./collections/internal')(gulp); - - // export task -module.exports = function(callback) { +module.exports = function () { - if( !install.isSetup() ) { + if (!install.isSetup()) { console.error('Cannot watch files. Run "gulp install" to set-up Semantic'); return; } - // check for right-to-left (RTL) language - if(config.rtl == 'both') { - gulp.start('watch-rtl'); - } - if(config.rtl === true || config.rtl === 'Yes') { - gulp.start('watch-rtl'); - return; - } - - //console.clear(); + console.clear(); console.log('Watching source files for changes'); /*-------------- Watch CSS ---------------*/ - - gulp - .watch([ - source.config, - source.definitions + '/**/*.less', - source.site + '/**/*.{overrides,variables}', - source.themes + '/**/*.{overrides,variables}' - ], function(file) { - - var - lessPath, - - stream, - compressedStream, - uncompressedStream, - - isDefinition, - isPackagedTheme, - isSiteTheme, - isConfig - ; - - // log modified file - gulp.src(file.path) - .pipe(print(log.modified)) - ; - - /*-------------- - Find Source - ---------------*/ - - // recompile on *.override , *.variable change - isConfig = (file.path.indexOf('theme.config') !== -1 || file.path.indexOf('site.variables') !== -1); - isPackagedTheme = (file.path.indexOf(source.themes) !== -1); - isSiteTheme = (file.path.indexOf(source.site) !== -1); - isDefinition = (file.path.indexOf(source.definitions) !== -1); - - if(isConfig) { - console.info('Rebuilding all UI'); - // impossible to tell which file was updated in theme.config, rebuild all - gulp.start('build-css'); - return; - } - else if(isPackagedTheme) { - console.log('Change detected in packaged theme'); - lessPath = util.replaceExtension(file.path, '.less'); - lessPath = lessPath.replace(tasks.regExp.theme, source.definitions); - } - else if(isSiteTheme) { - console.log('Change detected in site theme'); - lessPath = util.replaceExtension(file.path, '.less'); - lessPath = lessPath.replace(source.site, source.definitions); - } - else { - console.log('Change detected in definition'); - lessPath = file.path; - } - - /*-------------- - Create CSS - ---------------*/ - - if( fs.existsSync(lessPath) ) { - - // unified css stream - stream = gulp.src(lessPath) - .pipe(plumber(settings.plumber.less)) - .pipe(less(settings.less)) - .pipe(print(log.created)) - .pipe(replace(comments.variables.in, comments.variables.out)) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(replace(comments.large.in, comments.large.out)) - .pipe(replace(comments.small.in, comments.small.out)) - .pipe(replace(comments.tiny.in, comments.tiny.out)) - .pipe(autoprefixer(settings.prefix)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - ; - - // use 2 concurrent streams from same pipe - uncompressedStream = stream.pipe(clone()); - compressedStream = stream.pipe(clone()); - - uncompressedStream - .pipe(plumber()) - .pipe(replace(assets.source, assets.uncompressed)) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package uncompressed css'); - }) - ; - - compressedStream = stream - .pipe(plumber()) - .pipe(replace(assets.source, assets.compressed)) - .pipe(minifyCSS(settings.minify)) - .pipe(rename(settings.rename.minCSS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed css'); - }) - ; - } - else { - console.log('Cannot find UI definition at path', lessPath); - } - }) - ; + css.watch('default', config); /*-------------- Watch JS ---------------*/ - gulp - .watch([ - source.definitions + '/**/*.js' - ], function(file) { - gulp.src(file.path) - .pipe(plumber()) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.uncompressed)) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(gulp.dest(output.compressed)) - .pipe(print(log.created)) - .on('end', function() { - gulp.start('package compressed js'); - gulp.start('package uncompressed js'); - }) - ; - }) - ; + js.watch('default', config); /*-------------- Watch Assets ---------------*/ - // only copy assets that match component names (or their plural) - gulp - .watch([ - source.themes + '/**/assets/**/*.*' - ], function(file) { - // copy assets - gulp.src(file.path, { base: source.themes }) - .pipe(gulpif(config.hasPermission, chmod(config.permission))) - .pipe(gulp.dest(output.themes)) - .pipe(print(log.created)) - ; - }) - ; + assets.watch('default', config); };