diff options
-rw-r--r-- | .travis.yml | 10 | ||||
-rw-r--r-- | appinfo/info.xml | 4 | ||||
-rw-r--r-- | css/app.css | 1 | ||||
-rw-r--r-- | css/content.css | 22 | ||||
-rw-r--r-- | js/app/App.js | 6 | ||||
-rw-r--r-- | js/directive/NewsScroll.js | 27 | ||||
-rw-r--r-- | js/gui/KeyboardShortcuts.js | 8 | ||||
-rw-r--r-- | js/package-lock.json | 676 | ||||
-rw-r--r-- | js/package.json | 14 | ||||
-rw-r--r-- | templates/index.php | 33 |
10 files changed, 715 insertions, 86 deletions
diff --git a/.travis.yml b/.travis.yml index ec4b55968..513069964 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ sudo: false dist: trusty language: php php: - - 5.6 - 7 - 7.1 - 7.2 @@ -10,22 +9,23 @@ php: env: global: - - CORE_BRANCH=stable13 + - CORE_BRANCH=master - MOZ_HEADLESS=1 matrix: - DB=pgsql matrix: allow_failures: - - env: DB=pgsql CORE_BRANCH=master - php: nightly include: - php: 7.1 env: DB=sqlite + - php: 7.2 + env: DB=sqlite - php: 7.1 env: DB=mysql - - php: 7.1 - env: DB=pgsql CORE_BRANCH=master + - php: 7.2 + env: DB=mysql fast_finish: true before_install: diff --git a/appinfo/info.xml b/appinfo/info.xml index da31335cc..b59e86ddd 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -8,7 +8,7 @@ Before you update to a new version, [check the changelog](https://github.com/nextcloud/news/blob/master/CHANGELOG.md) to avoid surprises. **Important**: To enable feed updates you will need to enable either [Nextcloud system cron](https://docs.nextcloud.com/server/10/admin_manual/configuration_server/background_jobs_configuration.html#cron) or use [an updater](https://github.com/nextcloud/news-updater) which uses the built in update API and disable cron updates. More information can be found [in the README](https://github.com/nextcloud/news).]]></description> - <version>12.0.4</version> + <version>12.0.5</version> <licence>agpl</licence> <author>Bernhard Posselt</author> <author>Alessandro Cosentino</author> @@ -35,7 +35,7 @@ Before you update to a new version, [check the changelog](https://github.com/nex <lib>SimpleXML</lib> <lib>iconv</lib> <owncloud max-version="0" min-version="0"/> - <nextcloud min-version="13" max-version="14"/> + <nextcloud min-version="14" max-version="14"/> </dependencies> <background-jobs> diff --git a/css/app.css b/css/app.css index 229cee81a..b0eaa3fa8 100644 --- a/css/app.css +++ b/css/app.css @@ -9,7 +9,6 @@ */ #global-loading { width: 100%; - height: 100%; } #undo-container { diff --git a/css/content.css b/css/content.css index 08cfc4673..57b4b22df 100644 --- a/css/content.css +++ b/css/content.css @@ -7,6 +7,14 @@ * @author Bernhard Posselt <dev@bernhard-posselt.com> * @copyright Bernhard Posselt 2014 */ + +#app-content { + width: 100% +} +#app-navigation:not(.hidden) + #app-content { + width: calc(100% - 300px); +} + #app-content #searchresults { display: none; } @@ -39,26 +47,28 @@ display: table-cell; } -#articles, -#app-content-wrapper { - height: 100%; +#articles { + width: 100%; } /** * Podcast settings */ #app-content .podcast { - height: 30px; + height: 50px; z-index: 10000; background-color: #111; + display: flex; + position: sticky; + top: 50px; + align-items: center; } #app-content .podcast audio { display: block; - float: left; width: calc(100% - 60px); - height: 30px; border-radius: 0; + height: inherit; } #app-content .podcast button, diff --git a/js/app/App.js b/js/app/App.js index c1e4d667d..4c1e553de 100644 --- a/js/app/App.js +++ b/js/app/App.js @@ -8,5 +8,11 @@ * @copyright Bernhard Posselt 2014 */ +$('#content.app-news') + .attr('ng-app', 'News') + .attr('ng-cloak', '') + .attr('ng-strict-di', '') + .attr('ng-controller', 'AppController as App'); + /* jshint unused: false */ var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngAnimate']); diff --git a/js/directive/NewsScroll.js b/js/directive/NewsScroll.js index 53bfcddc8..d83317fcb 100644 --- a/js/directive/NewsScroll.js +++ b/js/directive/NewsScroll.js @@ -31,7 +31,7 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, // this is only reached when the item is not is // below the top and we didnt hit the factor yet so // autopage and break - if (item.position().top < 0) { + if (item[0].getBoundingClientRect().top < 0) { scope.$apply(scope.newsScrollAutoPage); break; } @@ -44,13 +44,13 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, var markRead = function (enabled, elem, scope) { if (enabled) { var ids = []; - var articles = elem.find('.item:not(.read)'); + var articles = elem.querySelectorAll('.item:not(.read)'); - articles.each(function(index, article) { - var item = $(article); - - if (item.position().top <= -10) { - ids.push(parseInt(item.data('id'), 10)); + articles.forEach(function(article) { + var distTop = article.getBoundingClientRect().top; + var scrollTop = $(document).scrollTop(); + if (distTop - scrollTop <= -10) { + ids.push(parseInt(article.dataset.id, 10)); } else { return false; } @@ -71,11 +71,6 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, }, link: function (scope, elem) { var allowScroll = true; - var scrollArea = elem; - - if (scope.newsScroll) { - scrollArea = $(scope.newsScroll); - } var scrollHandler = function () { // allow only one scroll event to trigger every 300ms @@ -84,7 +79,7 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, $timeout(function () { allowScroll = true; - }, SCROLL_TIMEOUT*1000); + }, SCROLL_TIMEOUT * 1000); autoPage(ITEM_AUTO_PAGE_SIZE, elem, scope); @@ -96,18 +91,18 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, // allow user to undo accidental scroll timer = $timeout(function () { markRead(scope.newsScrollEnabledMarkRead, - elem, + elem[0], scope); timer = undefined; }, MARK_READ_TIMEOUT*1000); } }; - scrollArea.on('scroll', scrollHandler); + $(document).on('scroll', scrollHandler); // remove scroll handler if element is destroyed scope.$on('$destroy', function () { - scrollArea.off('scroll', scrollHandler); + $(document).off('scroll', scrollHandler); }); } }; diff --git a/js/gui/KeyboardShortcuts.js b/js/gui/KeyboardShortcuts.js index 54b018321..092968450 100644 --- a/js/gui/KeyboardShortcuts.js +++ b/js/gui/KeyboardShortcuts.js @@ -266,7 +266,7 @@ // if you go to the next article in compact view, it should // expand the current one scrollArea.scrollTop( - item.offset().top - scrollArea.offset().top + scrollArea.scrollTop() + item.offset().top - 50 ); setItemActive(item[0]); @@ -296,7 +296,7 @@ } }; - var scrollToPreviousItem = function (navigationArea, scrollArea, + var scrollToPreviousItem = function (scrollArea, expandItemInCompact) { var activeElement = getActiveElement(scrollArea); var previousElement = activeElement.prev(); @@ -330,7 +330,7 @@ $(document).keyup(function (event) { var keyCode = event.keyCode; - var scrollArea = $('.app-content-detail'); + var scrollArea = $(document); var navigationArea = $('#app-navigation'); var isCompactView = $('#articles.compact').length > 0; var isExpandItem = $('#articles') @@ -348,7 +348,7 @@ } else if ([75, 80, 37].indexOf(keyCode) >= 0) { event.preventDefault(); - scrollToPreviousItem(navigationArea, scrollArea, + scrollToPreviousItem(scrollArea, expandItemInCompact); // u diff --git a/js/package-lock.json b/js/package-lock.json index a6b118d2c..26893ce09 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -41,6 +41,19 @@ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -79,29 +92,29 @@ "dev": true }, "angular": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.0.tgz", - "integrity": "sha512-3LboCLjrOuC7dWh953O0+dI3dJ7PexYRSCIrfqoN5qoHyja/wak3eWoxPKb2Sl2qwiPbrUV5KJXwgpUQ48McBQ==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.3.tgz", + "integrity": "sha512-hQRhU56shs72y88cS0Uy9g+UAMHoztJ3V+r+iF8o1AK/Bpu8ewmjFDk9j2LjSuN05a9mhxW1rOHnYKOwyTS/Zg==" }, "angular-animate": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.0.tgz", - "integrity": "sha512-508uYJLhcX85cKqOlp3stzv1WEnlEtKPGC2J1ljn8sxhwUhENWte2lGI8DJev26Lsk5dHpinBSJC/J0f7jj53w==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.3.tgz", + "integrity": "sha512-RIYQhql+jUU13jwTrXemSMYTfbGuLBr7jh67R3UbR2yCQ8IOxcXHn2tx+hm8PwXX8agsFAQjWSPP5wam5ecuSg==" }, "angular-mocks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.7.0.tgz", - "integrity": "sha512-tBlj9jIEpbgiYY1VpV6XAi+5JSAO0AXFziVW4TSIFETB23fautoREI7XbOeRgy/QmOhZA4P320gs2XgpbvLd0w==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.7.3.tgz", + "integrity": "sha512-j9JZxJiTdwr1oZPtQQFSMpfNZiY+LzKJaodVeWCdXMA1+mOXxS2f8k0yEnG618O2LHd/MU8z3IibyVgbl9xuiA==" }, "angular-route": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.7.0.tgz", - "integrity": "sha512-uljEHpNRt5++GWwvAe+33dTuBuLh7mpxPU3lnwb/DFxvcNpPPcS8jImXzWQc2tPi/S6hGPovhMqjxmJIG8kz0A==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.7.3.tgz", + "integrity": "sha512-/x6kLCeiG9BCi4DZeuuPfK1G05w69uwu7x69hL4eqSq5VOUkmkbFK1oM2pIKPwkATSYT2QKK0rwPydZNBUvCsw==" }, "angular-sanitize": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.7.0.tgz", - "integrity": "sha512-AIBJ9Es6symE0aqDeSYRoHlZ/Wsvyk3YnMsLl+I8T5EWz2Ht7+6ffMvrFpnWPNS1jV75JtOeOWpOHpbP3HjRCw==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.7.3.tgz", + "integrity": "sha512-2t5BXXx0/4qGdGp54eCvT+1fM+yFP2ub5TnNFIpJDeSrPwlQD8ThesOWxEsBnr+3UVKTE/TzX2Q4g8qjQXhDzw==" }, "ansi-cyan": { "version": "0.1.1", @@ -324,6 +337,22 @@ "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", "dev": true }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -342,12 +371,33 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true, + "optional": true + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -427,6 +477,16 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, "beeper": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", @@ -532,6 +592,13 @@ } } }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true, + "optional": true + }, "bufferstreams": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", @@ -624,6 +691,13 @@ "map-obj": "^1.0.0" } }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -822,6 +896,13 @@ } } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -882,6 +963,15 @@ } } }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -906,6 +996,54 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "optional": true, + "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=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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, + "optional": true, + "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", @@ -1043,6 +1181,16 @@ "es5-ext": "^0.10.9" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -1150,6 +1298,12 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1289,6 +1443,17 @@ } } }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1435,6 +1600,13 @@ "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, + "optional": true + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -1766,6 +1938,25 @@ } } }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "optional": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, "eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", @@ -1783,12 +1974,36 @@ "time-stamp": "^1.0.0" } }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true, + "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=", + "dev": true, + "optional": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "optional": true, + "requires": { + "pend": "~1.2.0" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -1948,6 +2163,25 @@ "for-in": "^1.0.1" } }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -1966,6 +2200,27 @@ "null-check": "^1.0.0" } }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2527,6 +2782,16 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", @@ -3198,6 +3463,24 @@ } } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3275,6 +3558,17 @@ } } }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "optional": true, + "requires": { + "is-stream": "^1.0.1", + "pinkie-promise": "^2.0.0" + } + }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", @@ -3332,6 +3626,18 @@ "requires-port": "^1.0.0" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -3616,6 +3922,20 @@ "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, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -3785,26 +4105,36 @@ } } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, "jshint": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", - "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz", + "integrity": "sha512-KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA==", "dev": true, "requires": { "cli": "~1.0.0", "console-browserify": "1.1.x", "exit": "0.1.x", "htmlparser2": "3.8.x", - "lodash": "3.7.x", + "lodash": "~4.17.10", "minimatch": "~3.0.2", + "phantom": "~4.0.1", + "phantomjs-prebuilt": "~2.1.7", "shelljs": "0.3.x", - "strip-json-comments": "1.0.x" + "strip-json-comments": "1.0.x", + "unicode-5.2.0": "^0.7.5" }, "dependencies": { "lodash": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", - "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "minimatch": { @@ -3824,12 +4154,65 @@ } } }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "optional": true, + "requires": { + "g |