From 6ad3892289404fe4970f4dbc57274db68e0cde8d Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 25 May 2020 13:50:35 -0700 Subject: [PATCH] Fully embrace gulp 4 style --- .browserlistrc | 5 + gulpfile.js | 12 +- package-lock.json | 1035 ++++++++++++++++++++--------------------- package.json | 32 +- tasks/build.js | 54 +-- tasks/build/assets.js | 4 +- tasks/config/tasks.js | 9 +- tasks/install.js | 654 +++++++++++++------------- tasks/version.js | 2 +- tasks/watch.js | 279 ++++++----- 10 files changed, 1039 insertions(+), 1047 deletions(-) create mode 100644 .browserlistrc diff --git a/.browserlistrc b/.browserlistrc new file mode 100644 index 000000000..ef556a3a0 --- /dev/null +++ b/.browserlistrc @@ -0,0 +1,5 @@ +last 2 versions +> 1% +opera 12.1 +bb 10 +android 4 diff --git a/gulpfile.js b/gulpfile.js index e5a47f9ac..dbdb783ce 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,7 +2,7 @@ Set-up *******************************/ -var +let gulp = require('gulp'), // read user config to know what task to load @@ -36,7 +36,13 @@ var /* Simple Compatibility with Gulp 3 */ gulp.start = function(name) { - gulp.task(name)(); + let task = gulp.task(name); + if(task) { + task(); + } + else { + console.log('cant find', name); + } } /******************************* @@ -57,7 +63,7 @@ gulp.task('install', install); gulp.task('check-install', checkInstall); -//gulp.task('default', ['check-install']); +gulp.task('default', checkInstall); /*-------------- Docs diff --git a/package-lock.json b/package-lock.json index a5c91da3a..fa8ff2dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,11 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, "accord": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz", @@ -50,15 +45,6 @@ } } }, - "agent-base": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", - "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -368,16 +354,50 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.1.5.tgz", - "integrity": "sha512-kk4Zb6RUc58ld7gdosERHMF3DzIYJc2fp5sX46qEsGXQQy5bXsu8qyLjoxuY1NuQ/cJuCYnx99BfjwnRggrYIw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", "requires": { - "browserslist": "^4.1.0", - "caniuse-lite": "^1.0.30000884", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.2", - "postcss-value-parser": "^3.2.3" + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.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.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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": { @@ -488,13 +508,14 @@ } }, "browserslist": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.2.0.tgz", - "integrity": "sha512-Berls1CHL7qfQz8Lct6QxYA5d2Tvt4doDWHcjvAISybpd+EKZVppNtXgXhaN6SdrPKo7YLTSZuYBs5cYrSWN8w==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "requires": { - "caniuse-lite": "^1.0.30000889", - "electron-to-chromium": "^1.3.73", - "node-releases": "^1.0.0-alpha.12" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "buffer-equal": { @@ -534,9 +555,9 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "caniuse-lite": { - "version": "1.0.30000890", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000890.tgz", - "integrity": "sha512-4NI3s4Y6ROm+SgZN5sLUG4k7nVWQnedis3c/RWkynV5G6cHSY7+a8fwFyn2yoBDE3E6VswhTNNwR3PvzGqlTkg==" + "version": "1.0.30001065", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001065.tgz", + "integrity": "sha512-DDxCLgJ266YnAHQv0jS1wdOaihRFF52Zgmlag39sQJVy2H46oROpJp4hITstqhdB8qnHSrKNoAEkQA9L/oYF9A==" }, "caseless": { "version": "0.12.0", @@ -832,11 +853,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -907,15 +923,6 @@ } } }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "convert-source-map": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", @@ -1023,11 +1030,6 @@ "is-obj": "^1.0.0" } }, - "deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" - }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -1088,22 +1090,11 @@ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, - "detect-indent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", - "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==" - }, "diff": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.8.tgz", "integrity": "sha1-NDJ2MI7Jkbe8giZ+1VvBQR+XFmY=" }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", - "dev": true - }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -1189,28 +1180,10 @@ "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==" }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } - } - }, "electron-to-chromium": { - "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==" + "version": "1.3.451", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.451.tgz", + "integrity": "sha512-2fvco0F2bBIgqzO8GRP0Jt/91pdrf9KfZ5FsmkYkjERmIJG585cFeFZV4+CO6oTmU3HmCTgfcZuEa7kW8VUh3A==" }, "errno": { "version": "0.1.7", @@ -1249,21 +1222,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -1503,7 +1461,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=" } } @@ -1531,6 +1489,53 @@ "parse-filepath": "^1.0.1" } }, + "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=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "flagged-respawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", @@ -2160,9 +2165,9 @@ } }, "get-own-enumerable-property-symbols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", - "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, "get-value": { @@ -2180,36 +2185,10 @@ } }, "github": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/github/-/github-13.1.0.tgz", - "integrity": "sha512-xCen2waPsGF4MT9nE4gDwXYSD+ktmDyhQX3l/7cJcfZ0H6hjetkTZh8vzX39q/8sLtRS6iA01Mt5UIGQG9qJng==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "dotenv": "^4.0.0", - "https-proxy-agent": "^2.1.0", - "is-stream": "^1.1.0", - "lodash": "^4.17.4", - "proxy-from-env": "^1.0.0", - "url-template": "^2.0.8" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } + "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.2", @@ -2445,16 +2424,16 @@ } }, "gulp-autoprefixer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-6.0.0.tgz", - "integrity": "sha512-MyLymXKVGTVBx/okQSBqmdhwhyqi3igBmZBwgpZp0GRbY1LY8VctOTLzwkQ18bZKJkSDnOKR5u32TMY9wSYdqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-6.1.0.tgz", + "integrity": "sha512-Ti/BUFe+ekhbDJfspZIMiOsOvw51KhI9EncsDfK7NaxjqRm+v4xS9v99kPxEoiDavpWqQWvG8Y6xT1mMlB3aXA==", "requires": { - "autoprefixer": "^9.1.3", + "autoprefixer": "^9.5.1", "fancy-log": "^1.3.2", "plugin-error": "^1.0.1", "postcss": "^7.0.2", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" + "through2": "^3.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" }, "dependencies": { "extend-shallow": { @@ -2484,6 +2463,37 @@ "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "requires": { + "readable-stream": "2 || 3" + } } } }, @@ -2853,46 +2863,52 @@ } }, "gulp-debug": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/gulp-debug/-/gulp-debug-3.2.0.tgz", - "integrity": "sha512-2LZzP+ydczqz1rhqq/NYxvVvYTmOa0IgBl2B1sQTdkQgku9ayOUM/KHuGPjF4QA5aO1VcG+Sskw7iCcRUqHKkA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp-debug/-/gulp-debug-4.0.0.tgz", + "integrity": "sha512-cn/GhMD2nVZCVxAl5vWao4/dcoZ8wUJ8w3oqTvQaGDmC1vT7swNOEbhQTWJp+/otKePT64aENcqAQXDcdj5H1g==", "dev": true, "requires": { "chalk": "^2.3.0", "fancy-log": "^1.3.2", - "plur": "^2.0.0", + "plur": "^3.0.0", "stringify-object": "^3.0.0", "through2": "^2.0.0", "tildify": "^1.1.2" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^3.1.0", + "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" + "supports-color": "^5.3.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^2.0.0" + "has-flag": "^3.0.0" } } } @@ -2919,25 +2935,25 @@ } }, "gulp-git": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/gulp-git/-/gulp-git-2.5.1.tgz", - "integrity": "sha512-8gGfQVKx9KjGpGpQEI7CInniwUnybZSVQNuixhRlT+giwn/DTgOI1XUqdw4lD/7Groh/V9mY1S5nsB7bLixS6A==", + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/gulp-git/-/gulp-git-2.10.1.tgz", + "integrity": "sha512-qiXYYDXchMZU/AWAgtphi4zbJb/0gXgfPw7TlZwu/7qPS3Bdcc3zbVe1B0xY9S8on6RQTmWoi+KaTGACIXQeNg==", "dev": true, "requires": { "any-shell-escape": "^0.1.1", "fancy-log": "^1.3.2", "lodash.template": "^4.4.0", - "plugin-error": "^0.1.2", - "require-dir": "^0.3.2", + "plugin-error": "^1.0.1", + "require-dir": "^1.0.0", "strip-bom-stream": "^3.0.0", "through2": "^2.0.3", "vinyl": "^2.0.1" }, "dependencies": { "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-stats": { @@ -2946,84 +2962,60 @@ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", "dev": true }, - "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=", - "dev": true, - "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=", - "dev": true - }, - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0", - "lodash.templatesettings": "^4.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0" + "is-plain-object": "^2.0.4" } }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" } }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "lodash._reinterpolate": "^3.0.0" } }, - "strip-bom-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", - "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", "dev": true, "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom-buf": "^1.0.0" + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" } }, "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { "clone": "^2.1.1", @@ -3037,112 +3029,50 @@ } }, "gulp-header": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.5.tgz", - "integrity": "sha512-7bOIiHvM1GUHIG3LRH+UIanOxyjSys0FbzzgUBlV2cZIIZihEW+KKKKm0ejUBNGvRdhISEFFr6HlptXoa28gtQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.9.tgz", + "integrity": "sha512-LMGiBx+qH8giwrOuuZXSGvswcIUh0OiioNkUpLhNyvaC6/Ga8X6cfAeme2L5PqsbXMhL8o8b/OmVqIQdxprhcQ==", "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", + "concat-with-sourcemaps": "^1.1.0", + "lodash.template": "^4.5.0", + "map-stream": "0.0.7", "through2": "^2.0.0" }, "dependencies": { "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "requires": { - "lodash._reinterpolate": "~3.0.0", + "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "requires": { - "lodash._reinterpolate": "~3.0.0" - } - } - } - }, - "gulp-if": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", - "integrity": "sha1-pJe351cwBQQcqivIt92jyARE1ik=", - "requires": { - "gulp-match": "^1.0.3", - "ternary-stream": "^2.0.1", - "through2": "^2.0.1" - } - }, - "gulp-json-editor": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.5.2.tgz", - "integrity": "sha512-nG/5JyXc3Sz8v1b62bU15nJK7hIwQz1/Qmf0J1fMFWyQtLmfUXypEUynCJyahHpcuaEq6jWJ6Ym03uGNv9AQOQ==", - "requires": { - "deepmerge": "^3.2.0", - "detect-indent": "^6.0.0", - "js-beautify": "^1.9.1", - "plugin-error": "^1.0.1", - "through2": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "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" - } - }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "requires": { - "readable-stream": "2 || 3" + "lodash._reinterpolate": "^3.0.0" } + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" } } }, + "gulp-if": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", + "integrity": "sha1-pJe351cwBQQcqivIt92jyARE1ik=", + "requires": { + "gulp-match": "^1.0.3", + "ternary-stream": "^2.0.1", + "through2": "^2.0.1" + } + }, "gulp-less": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz", @@ -3206,9 +3136,9 @@ } }, "gulp-plumber": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.0.tgz", - "integrity": "sha512-L/LJftsbKoHbVj6dN5pvMsyJn9jYI0wT0nMg3G6VZhDac4NesezecYTi8/48rHi+yEic3sUpw6jlSc7qNWh32A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.1.tgz", + "integrity": "sha512-mctAi9msEAG7XzW5ytDVZ9PxWMzzi1pS2rBH7lA095DhMa6KEXjm+St0GOCc567pJKJ/oCvosVAZEpAey0q2eQ==", "requires": { "chalk": "^1.1.3", "fancy-log": "^1.3.2", @@ -3217,16 +3147,21 @@ } }, "gulp-print": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-5.0.0.tgz", - "integrity": "sha512-i06wVFsGmWdmwrFft/ioNIgXnCvUa+Q4pfgoTCWoLjz95vsfjDy3UmOx1PegHje930fkhopc+5NSJAHbhNXI+g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-5.0.2.tgz", + "integrity": "sha512-iIpHMzC/b3gFvVXOfP9Jk94SWGIsDLVNUrxULRleQev+08ug07mh84b1AOlW6QDQdmInQiqDFqJN1UvhU2nXdg==", "requires": { - "ansi-colors": "^1.0.1", - "fancy-log": "^1.3.2", + "ansi-colors": "^3.2.4", + "fancy-log": "^1.3.3", "map-stream": "0.0.7", - "vinyl": "^2.1.0" + "vinyl": "^2.2.0" }, "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -3237,16 +3172,22 @@ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, "map-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" }, - "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", @@ -3312,13 +3253,13 @@ } }, "gulp-rtlcss": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/gulp-rtlcss/-/gulp-rtlcss-1.3.0.tgz", - "integrity": "sha512-xh9vuxDc5+5C583jJwy/F6nd6wdtz8YnjderfwjDWr4UPq0fzK3w9Yv03SPkAJlUFUz6Y/7Sli7h54PbJZ2X+A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/gulp-rtlcss/-/gulp-rtlcss-1.4.1.tgz", + "integrity": "sha512-xXqTnmNbcjA6K9ogR36i2SaN8E5CWTCtRQGSY2k0W3cOISGnNkBTAt0GNThlq9iJT0ttR759kopDGn5PZTH4kg==", "requires": { "plugin-error": "^1.0.1", "rtlcss": "^2.4.0", - "through2": "^2.0.3", + "through2": "^2.0.5", "vinyl-sourcemaps-apply": "^0.2.1" }, "dependencies": { @@ -3339,6 +3280,11 @@ "is-plain-object": "^2.0.4" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, "plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -3349,26 +3295,101 @@ "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } } } }, "gulp-tap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gulp-tap/-/gulp-tap-1.0.1.tgz", - "integrity": "sha1-5nESThJZtM6iGe0cqXt/WFwzRpA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-tap/-/gulp-tap-2.0.0.tgz", + "integrity": "sha512-U5/v1bTozx672QHzrvzPe6fPl2io7Wqyrx2y30AG53eMU/idH4BrY/b2yikOkdyhjDqGgPoMUMnpBg9e9LK8Nw==", "dev": true, "requires": { - "through2": "^2.0.3" + "through2": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } } }, "gulp-uglify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.1.tgz", - "integrity": "sha512-KVffbGY9d4Wv90bW/B1KZJyunLMyfHTBbilpDvmcrj5Go0/a1G3uVpt+1gRBWSw/11dqR3coJ1oWNTt1AiXuWQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", "requires": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", "gulplog": "^1.0.0", "has-gulplog": "^0.1.0", - "lodash": "^4.13.1", + "isobject": "^3.0.1", "make-error-cause": "^1.1.1", "safe-buffer": "^5.1.2", "through2": "^2.0.0", @@ -3377,32 +3398,38 @@ }, "dependencies": { "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.3.tgz", + "integrity": "sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA==", "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "commander": "~2.20.3" } } } @@ -3444,11 +3471,6 @@ } } }, - "gulp4-run-sequence": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp4-run-sequence/-/gulp4-run-sequence-0.4.0.tgz", - "integrity": "sha512-JRKO0kWSmEHNYrSynnlDSwnYdtA7detMrgMjAeGclytjlRV85buBLxdPtm+fNNOWkO2hHW6Af/ZyD17EK96Fmw==" - }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -3552,27 +3574,6 @@ "sshpk": "^1.7.0" } }, - "https-proxy-agent": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz", - "integrity": "sha512-LK6tQUR/VOkTI6ygAfWUKKP95I+e6M1h7N3PncGu1CATHCnex+CAv9ttR0lbHu1Uk2PXm/WoAHFo6JCGwMjVMw==", - "dev": true, - "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -3696,9 +3697,9 @@ "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" }, "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", + "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", "dev": true }, "is": { @@ -3866,12 +3867,6 @@ "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", @@ -3932,38 +3927,6 @@ "textextensions": "2" } }, - "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" - }, - "js-beautify": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.0.tgz", - "integrity": "sha512-OMwf/tPDpE/BLlYKqZOhqWsd3/z2N3KOlyn1wsCRGFwViE8LOQTcDtathQvHvZc+q+zWmcNAbwKSC+iJoMaH2Q==", - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "~0.5.1", - "nopt": "~4.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -4177,6 +4140,22 @@ } } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "lodash._baseassign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", @@ -4401,19 +4380,10 @@ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==" + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "make-error-cause": { "version": "1.2.2", @@ -4755,19 +4725,9 @@ } }, "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": { - "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==" - } - } + "version": "1.1.56", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.56.tgz", + "integrity": "sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw==" }, "node.extend": { "version": "2.0.0", @@ -4777,15 +4737,6 @@ "is": "^3.2.1" } }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -5022,7 +4973,8 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true }, "os-locale": { "version": "1.4.0", @@ -5037,13 +4989,20 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -5051,6 +5010,11 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -5077,6 +5041,11 @@ "error-ex": "^1.2.0" } }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -5182,6 +5151,24 @@ "pinkie": "^2.0.0" } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -5229,12 +5216,12 @@ } }, "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", + "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", "dev": true, "requires": { - "irregular-plurals": "^1.0.0" + "irregular-plurals": "^2.0.0" } }, "posix-character-classes": { @@ -5243,13 +5230,13 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", - "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "version": "7.0.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.30.tgz", + "integrity": "sha512-nu/0m+NtIzoubO+xdAlwZl/u5S5vi/y6BCsoL8D+8IxsD3XvBS8X4YEADNIVXKVuQvduiucnRv+vPIqj56EGMQ==", "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "supports-color": "^6.1.0" }, "dependencies": { "ansi-styles": { @@ -5261,13 +5248,23 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "dependencies": { + "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" + } + } } }, "has-flag": { @@ -5281,9 +5278,9 @@ "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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { "has-flag": "^3.0.0" } @@ -5291,9 +5288,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "pretty-hrtime": { "version": "1.0.3", @@ -5323,28 +5320,12 @@ "inquirer": "3.2.x" } }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "optional": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "psl": { "version": "1.1.29", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", @@ -5695,9 +5676,9 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" }, "replace-homedir": { "version": "1.0.0", @@ -5790,9 +5771,9 @@ } }, "require-dir": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-0.3.2.tgz", - "integrity": "sha1-wdXHXp+//eny5rM+OD209ZS1pqk=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-1.2.0.tgz", + "integrity": "sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==", "dev": true }, "require-directory": { @@ -5942,14 +5923,14 @@ } }, "rtlcss": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.4.0.tgz", - "integrity": "sha512-hdjFhZ5FCI0ABOfyXOMOhBtwPWtANLCG7rOiOcRf+yi5eDdxmDjqBruWouEnwVdzfh/TWF6NNncIEsigOCFZOA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.5.0.tgz", + "integrity": "sha512-NCVdF45w70/3CQeqVvQ84bu2HN8agNn+CDjw+RxXaiWb7mPOmEvltdd1z4qzm9kin4Jnu9ShFBIx28yvWerZ2g==", "requires": { - "chalk": "^2.3.0", + "chalk": "^2.4.2", "findup": "^0.1.5", "mkdirp": "^0.5.1", - "postcss": "^6.0.14", + "postcss": "^6.0.23", "strip-json-comments": "^2.0.0" }, "dependencies": { @@ -5962,9 +5943,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6085,11 +6066,6 @@ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -6439,12 +6415,12 @@ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "stringify-object": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.1.tgz", - "integrity": "sha512-jPcQYw/52HUPP8uOE4kkjxl5bB9LfHkKCTptIk3qw7ozP5XMIMlHMLjt00GGSwW6DJAf/njY5EU6Vpwl4LlBKQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, "requires": { - "get-own-enumerable-property-symbols": "^2.0.1", + "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } @@ -6466,6 +6442,16 @@ "is-utf8": "^0.2.1" } }, + "strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -6893,12 +6879,6 @@ "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", @@ -7188,11 +7168,6 @@ "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", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", diff --git a/package.json b/package.json index 87d1e9cc7..1c2d44849 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "semantic-ui", - "version": "2.4.2", + "version": "2.5.0", "title": "Semantic UI", "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", "homepage": "http://www.semantic-ui.com", @@ -52,7 +52,7 @@ "del": "^3.0.0", "extend": "^3.0.2", "gulp": "^4.0.2", - "gulp-autoprefixer": "^6.0.0", + "gulp-autoprefixer": "^6.1.0", "gulp-chmod": "^2.0.0", "gulp-clean-css": "^3.10.0", "gulp-clone": "^2.0.1", @@ -61,35 +61,35 @@ "gulp-copy": "4.0.1", "gulp-dedupe": "0.0.2", "gulp-flatten": "^0.4.0", - "gulp-header": "^2.0.5", + "gulp-header": "^2.0.9", "gulp-if": "^2.0.2", - "gulp-json-editor": "^2.5.2", + "gulp-json-editor": "^2.5.4", "gulp-less": "^4.0.1", "gulp-notify": "^3.2.0", - "gulp-plumber": "^1.2.0", - "gulp-print": "^5.0.0", + "gulp-plumber": "^1.2.1", + "gulp-print": "^5.0.2", "gulp-rename": "^1.4.0", "gulp-replace": "^1.0.0", - "gulp-rtlcss": "^1.3.0", - "gulp-uglify": "^3.0.1", - "gulp4-run-sequence": "^0.4.0", - "jquery": "^3.4.1", + "gulp-rtlcss": "^1.4.1", + "gulp-uglify": "^3.0.2", + "gulp4-run-sequence": "^1.0.1", + "jquery": "^3.5.1", "map-stream": "^0.1.0", "merge-stream": "^1.0.0", - "mkdirp": "^0.5.1", + "mkdirp": "^1.0.4", "prompt-sui": "^3.2.1", - "replace-ext": "^1.0.0", + "replace-ext": "^1.0.1", "require-dot-file": "^0.4.0", "run-sequence": "^2.2.1", "wrench-sui": "^0.0.3", "yamljs": "^0.3.0" }, "devDependencies": { - "github": "*", + "github": "^14.0.0", "gulp-concat-filenames": "*", - "gulp-debug": "*", - "gulp-git": "*", - "gulp-tap": "*", + "gulp-debug": "^4.0.0", + "gulp-git": "^2.10.1", + "gulp-tap": "^2.0.0", "merge-stream": "*" }, "style": "dist/semantic.css" diff --git a/tasks/build.js b/tasks/build.js index 821343389..0765dbbbb 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -2,13 +2,20 @@ Build Task *******************************/ -var +let // dependencies - gulp = require('gulp'), + gulp = require('gulp'), // config - config = require('./config/user'), - install = require('./config/project/install'), + config = require('./config/user'), + install = require('./config/project/install'), + + buildJS = require('./build/javascript'), + buildCSS = require('./build/css'), + buildAssets = require('./build/assets'), + + // rtl + buildRTL = require('./rtl/build'), // task sequence tasks = [], @@ -19,38 +26,19 @@ var ; -build = function(callback) { - - console.info('Building Semantic'); - - 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'); - } +if(config.rtl == 'both') { + tasks.push(buildRTL); +} - tasks.push('build-javascript'); - tasks.push('build-css'); - tasks.push('build-assets'); +tasks.push(buildJS); +tasks.push(buildCSS); +tasks.push(buildAssets); - tasks = tasks.map(task => { - gulp.task(task)(callback); - return (taskDone) => { - taskDone(); - }; - }); +if(config.rtl === true || config.rtl === 'Yes') { + tasks.push(buildRTL); +} - series(parallel(tasks), callback); -}; +build = parallel(tasks); /* Export with Metadata */ diff --git a/tasks/build/assets.js b/tasks/build/assets.js index f61bad69c..59e40303a 100644 --- a/tasks/build/assets.js +++ b/tasks/build/assets.js @@ -37,6 +37,6 @@ buildAssets = function(callback) { }; /* Export with Metadata */ -buildAssets.displayName = 'build-css'; -buildAssets.description = 'Builds all css from source'; +buildAssets.displayName = 'build-assets'; +buildAssets.description = 'Builds all assets'; module.exports = buildAssets; diff --git a/tasks/config/tasks.js b/tasks/config/tasks.js index f9db1919b..83f96e0ab 100644 --- a/tasks/config/tasks.js +++ b/tasks/config/tasks.js @@ -115,15 +115,8 @@ module.exports = { } }, - /* What Browsers to Prefix */ + /* Autoprefix settings */ prefix: { - browsers: [ - 'last 2 versions', - '> 1%', - 'opera 12.1', - 'bb 10', - 'android 4' - ] }, /* File Renames */ diff --git a/tasks/install.js b/tasks/install.js index 6f317bf36..dcebfd393 100644 --- a/tasks/install.js +++ b/tasks/install.js @@ -14,7 +14,7 @@ */ -var +let gulp = require('gulp'), // node dependencies console = require('better-console'), @@ -53,413 +53,411 @@ var settings = install.settings, source = install.source, - install + installer ; installer = 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) - } + let + 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) ) { - - // perform update if new version - if(currentConfig.version !== release.version) { - console.log('Updating Semantic UI from ' + currentConfig.version + ' to ' + release.version); - - 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); + console.clear(); - console.info('Updating tasks...'); - wrench.copyDirSyncRecursive(source.tasks, updatePaths.tasks, settings.wrench.overwrite); + /* Test NPM install + manager = { + name : 'NPM', + root : path.normalize(__dirname + '/../') + }; + */ - 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)) - ; + /* 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('Adding new site theme files...'); - wrench.copyDirSyncRecursive(source.site, updatePaths.site, settings.wrench.merge); + /*----------------- + Update SUI + -----------------*/ + + // run update scripts if semantic.json exists + if(currentConfig && manager.name === 'NPM') { + + let + 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 ----------------*/ + return; + } + else { + console.log('Current version of Semantic UI already installed'); + 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)) { + gulp.task('run setup', function() { - // 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; + // 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; + })) + ; + } + }); - // 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]) ) - ; - } + // if config exists and user specifies not to proceed + if(answers.overwrite !== undefined && answers.overwrite == 'no') { + return; } - - // create project folders - try { - mkdirp.sync(installFolder); - mkdirp.sync(installPaths.definition); - mkdirp.sync(installPaths.theme); - mkdirp.sync(installPaths.tasks); + console.clear(); + if(install.shouldAutoInstall()) { + console.log('Auto-Installing (Without User Interaction)'); } - 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'); + 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); + /*-------------- + Paths + ---------------*/ - console.info('Copying UI themes'); - wrench.copyDirSyncRecursive(source.themes, installPaths.theme, settings.wrench.merge); - wrench.copyDirSyncRecursive(source.defaultTheme, installPaths.defaultTheme, settings.wrench.overwrite); - - 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)) + let + 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 + ---------------*/ - callback(); + // 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; + } + // 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(let 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]) ) + ; + } + } - /*-------------- - Site Theme - ---------------*/ + // 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'); + } - // 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); + console.log('Installing to \x1b[92m' + answers.semanticRoot + '\x1b[0m'); - /*-------------- - Theme Config - ---------------*/ + console.info('Copying UI definitions'); + wrench.copyDirSyncRecursive(source.definitions, installPaths.definition, settings.wrench.overwrite); - 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 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() { + callback(); - 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 config file (semantic.json)', installPaths.config); - return gulp.src(source.config) - .pipe(plumber()) - .pipe(rename({ extname : '' })) // remove .template from ext - .pipe(jsonEditor(jsonConfig)) - .pipe(gulp.dest(installPaths.configFolder)) - ; + console.info('Creating site theme folder', installPaths.site); } + wrench.copyDirSyncRecursive(source.site, installPaths.site, settings.wrench.merge); + + /*-------------- + Theme Config + ---------------*/ + + gulp.task('create theme.config', function() { + let + // 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 + "/';" + ; - }); + // rewrite site variable in theme.less + console.info('Adjusting @siteFolder to: ', pathToSite + '/'); - runSequence( - 'create theme.config', - 'create semantic.json', - callback - ); + 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(''); - } + let + 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)) + .pipe(gulp.dest(installPaths.configFolder)) + ; + } + }); + + runSequence( + 'create theme.config', + 'create semantic.json', + callback + ); + + }); + + gulp.task('clean up install', 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(''); + } -}); + // 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'); + } + })) + ; + } + }); -runSequence( - 'run setup', - 'create install files', - 'clean up install', - callback -); + runSequence( + 'run setup', + 'create install files', + 'clean up install', + callback + ); }; diff --git a/tasks/version.js b/tasks/version.js index 416d6b2d3..832a22854 100644 --- a/tasks/version.js +++ b/tasks/version.js @@ -2,7 +2,7 @@ Version Task *******************************/ -var +let release = require('./config/project/release'), version ; diff --git a/tasks/watch.js b/tasks/watch.js index b884107ae..81cf4ed1e 100644 --- a/tasks/watch.js +++ b/tasks/watch.js @@ -2,7 +2,7 @@ Watch Task *******************************/ -var +let gulp = require('gulp'), // node dependencies @@ -41,7 +41,16 @@ var log = tasks.log, settings = tasks.settings, - watch + watch, + + // individual watch tasks + watchCSS, + watchJS, + watchAssets, + + watchCSSCallback, + watchJSCallback, + watchAssetsCallback ; @@ -76,139 +85,152 @@ watch = function(callback) { Watch CSS ---------------*/ - gulp + watchCSS = gulp .watch([ source.config, source.definitions + '/**/*.less', source.site + '/**/*.{overrides,variables}', source.themes + '/**/*.{overrides,variables}' - ], function(file) { - - var - lessPath, + ]) + ; + watchCSSCallback = (filePath) => { + + let + lessPath, + + stream, + compressedStream, + uncompressedStream, + + isDefinition, + isPackagedTheme, + isSiteTheme, + isConfig + ; + + // log modified file + gulp.src(filePath) + .pipe(print(log.modified)) + ; + + /*-------------- + Find Source + ---------------*/ + + // recompile on *.override , *.variable change + isConfig = (filePath.indexOf('theme.config') !== -1 || filePath.indexOf('site.variables') !== -1); + isPackagedTheme = (filePath.indexOf(source.themes) !== -1); + isSiteTheme = (filePath.indexOf(source.site) !== -1); + isDefinition = (filePath.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 = replaceExt(filePath, '.less'); + lessPath = lessPath.replace(tasks.regExp.theme, source.definitions); + } + else if(isSiteTheme) { + console.log('Change detected in site theme'); + lessPath = replaceExt(filePath, '.less'); + lessPath = lessPath.replace(source.site, source.definitions); + } + else { + console.log('Change detected in definition'); + lessPath = filePath; + } + + /*-------------- + 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))) + ; - stream, - compressedStream, - uncompressedStream, + // use 2 concurrent streams from same pipe + uncompressedStream = stream.pipe(clone()); + compressedStream = stream.pipe(clone()); - isDefinition, - isPackagedTheme, - isSiteTheme, - isConfig + 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'); + }) ; - // log modified file - gulp.src(file.path) - .pipe(print(log.modified)) + compressedStream + .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'); + }) ; - - /*-------------- - 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 = replaceExt(file.path, '.less'); - lessPath = lessPath.replace(tasks.regExp.theme, source.definitions); - } - else if(isSiteTheme) { - console.log('Change detected in site theme'); - lessPath = replaceExt(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 - .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); - } - }) + } + else { + console.log('Cannot find UI definition at path', lessPath); + } + }; + + // these are separate handlers in gulp 4 + watchCSS + .on('change', watchCSSCallback) + .on('add', watchCSSCallback) ; /*-------------- Watch JS ---------------*/ - gulp + watchJS = 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'); - }) - ; - }) + ]) + ; + watchJSCallback = (filePath) => { + gulp.src(filePath) + .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'); + }) + ; + }; + + watchJS + .on('change', watchJSCallback) + .on('add', watchJSCallback) ; /*-------------- @@ -216,17 +238,22 @@ watch = function(callback) { ---------------*/ // only copy assets that match component names (or their plural) - gulp + watchAssets = 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)) - ; - }) + ]) + ; + watchAssetsCallback = (filePath) => { + // copy assets + gulp.src(filePath, { base: source.themes }) + .pipe(gulpif(config.hasPermission, chmod(config.permission))) + .pipe(gulp.dest(output.themes)) + .pipe(print(log.created)) + ; + }; + watchAssets + .on('change', watchAssetsCallback) + .on('add', watchAssetsCallback) ; };